Skip to main content

gproxy_protocol/openai/common/tools/
legacy.rs

1use 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}