Skip to main content

gproxy_protocol/protocol/openai/common/tools/
legacy.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::{Extra, JsonSchema};
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[serde(untagged)]
7#[non_exhaustive]
8pub enum LegacyFunctionCallChoice {
9    Mode(LegacyFunctionCallMode),
10    Named(LegacyFunctionCallOption),
11}
12
13#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
14#[non_exhaustive]
15pub enum LegacyFunctionCallMode {
16    #[serde(rename = "none")]
17    None,
18    #[serde(rename = "auto")]
19    Auto,
20}
21
22#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
23#[non_exhaustive]
24pub struct LegacyFunctionCallOption {
25    pub name: String,
26    #[serde(
27        default,
28        flatten,
29        skip_serializing_if = "std::collections::BTreeMap::is_empty"
30    )]
31    pub extra: Extra,
32}
33
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
35#[non_exhaustive]
36pub struct LegacyFunctionDefinition {
37    pub name: String,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub description: Option<String>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub parameters: Option<JsonSchema>,
42    #[serde(
43        default,
44        flatten,
45        skip_serializing_if = "std::collections::BTreeMap::is_empty"
46    )]
47    pub extra: Extra,
48}