gproxy_protocol/protocol/openai/common/
formats.rs1use serde::{Deserialize, Serialize};
2
3use super::{Extra, JsonSchema};
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[serde(untagged)]
7pub enum ChatResponseFormat {
8 ChatJsonSchema(ChatJsonSchemaFormat),
9 Text(TextResponseFormat),
10 JsonObject(JsonObjectResponseFormat),
11}
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
14#[serde(untagged)]
15pub enum ResponseFormat {
16 JsonSchema(JsonSchemaResponseFormat),
17 Text(TextResponseFormat),
18 JsonObject(JsonObjectResponseFormat),
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub struct TextResponseFormat {
23 #[serde(rename = "type")]
24 pub type_: TextResponseFormatType,
25 #[serde(
26 default,
27 flatten,
28 skip_serializing_if = "std::collections::BTreeMap::is_empty"
29 )]
30 pub extra: Extra,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
34pub enum TextResponseFormatType {
35 #[serde(rename = "text")]
36 Text,
37}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
40pub struct ChatJsonSchemaFormat {
41 #[serde(rename = "type")]
42 pub type_: JsonSchemaResponseFormatType,
43 pub json_schema: JsonSchemaFormat,
44 #[serde(
45 default,
46 flatten,
47 skip_serializing_if = "std::collections::BTreeMap::is_empty"
48 )]
49 pub extra: Extra,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
53pub struct JsonSchemaResponseFormat {
54 #[serde(rename = "type")]
55 pub type_: JsonSchemaResponseFormatType,
56 pub name: String,
57 pub schema: JsonSchema,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub description: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub strict: Option<bool>,
62 #[serde(
63 default,
64 flatten,
65 skip_serializing_if = "std::collections::BTreeMap::is_empty"
66 )]
67 pub extra: Extra,
68}
69
70#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
71pub enum JsonSchemaResponseFormatType {
72 #[serde(rename = "json_schema")]
73 JsonSchema,
74}
75
76#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
77pub struct JsonObjectResponseFormat {
78 #[serde(rename = "type")]
79 pub type_: JsonObjectResponseFormatType,
80 #[serde(
81 default,
82 flatten,
83 skip_serializing_if = "std::collections::BTreeMap::is_empty"
84 )]
85 pub extra: Extra,
86}
87
88#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
89pub enum JsonObjectResponseFormatType {
90 #[serde(rename = "json_object")]
91 JsonObject,
92}
93
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
95pub struct JsonSchemaFormat {
96 pub name: String,
97 #[serde(skip_serializing_if = "Option::is_none")]
98 pub description: Option<String>,
99 #[serde(skip_serializing_if = "Option::is_none")]
100 pub schema: Option<JsonSchema>,
101 #[serde(skip_serializing_if = "Option::is_none")]
102 pub strict: Option<bool>,
103 #[serde(
104 default,
105 flatten,
106 skip_serializing_if = "std::collections::BTreeMap::is_empty"
107 )]
108 pub extra: Extra,
109}