gproxy_protocol/openai/common/tools/
legacy.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use super::super::{JsonSchema, Rest};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7#[serde(untagged)]
8pub enum LegacyFunctionCallChoice {
9 Mode(LegacyFunctionCallMode),
10 Named(LegacyFunctionCallOption),
11 Unknown(Value),
12}
13
14strict_string_enum!(LegacyFunctionCallMode { None => "none", Auto => "auto" });
15
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
17#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
18pub struct LegacyFunctionCallOption {
19 pub name: String,
20 #[serde(default, flatten)]
21 pub rest: Rest,
22}
23
24#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
25#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
26pub struct LegacyFunctionDefinition {
27 pub name: String,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub description: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub parameters: Option<JsonSchema>,
32 #[serde(default, flatten)]
33 pub rest: Rest,
34}