1#![allow(unused_imports)]
5
6use serde::{Deserialize, Serialize};
7use super::*;
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
11#[non_exhaustive]
12pub enum AllModels {
13 #[serde(rename = "o1-pro")]
14 O1Pro,
15 #[serde(rename = "o1-pro-2025-03-19")]
16 O1Pro20250319,
17 #[serde(rename = "o3-pro")]
18 O3Pro,
19 #[serde(rename = "o3-pro-2025-06-10")]
20 O3Pro20250610,
21 #[serde(rename = "o3-deep-research")]
22 O3DeepResearch,
23 #[serde(rename = "o3-deep-research-2025-06-26")]
24 O3DeepResearch20250626,
25 #[serde(rename = "o4-mini-deep-research")]
26 O4MiniDeepResearch,
27 #[serde(rename = "o4-mini-deep-research-2025-06-26")]
28 O4MiniDeepResearch20250626,
29 #[serde(rename = "computer-use-preview")]
30 ComputerUsePreview,
31 #[serde(rename = "computer-use-preview-2025-03-11")]
32 ComputerUsePreview20250311,
33 #[serde(rename = "gpt-5-codex")]
34 Gpt5Codex,
35 #[serde(rename = "gpt-5-pro")]
36 Gpt5Pro,
37 #[serde(rename = "gpt-5-pro-2025-10-06")]
38 Gpt5Pro20251006,
39 #[serde(rename = "gpt-5.1-codex-max")]
40 Gpt51CodexMax,
41}
42
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
44#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
45#[non_exhaustive]
46pub enum ChatModel {
47 #[serde(rename = "gpt-5.4")]
48 Gpt54,
49 #[serde(rename = "gpt-5.4-mini")]
50 Gpt54Mini,
51 #[serde(rename = "gpt-5.4-nano")]
52 Gpt54Nano,
53 #[serde(rename = "gpt-5.4-mini-2026-03-17")]
54 Gpt54Mini20260317,
55 #[serde(rename = "gpt-5.4-nano-2026-03-17")]
56 Gpt54Nano20260317,
57 #[serde(rename = "gpt-5.3-chat-latest")]
58 Gpt53ChatLatest,
59 #[serde(rename = "gpt-5.2")]
60 Gpt52,
61 #[serde(rename = "gpt-5.2-2025-12-11")]
62 Gpt5220251211,
63 #[serde(rename = "gpt-5.2-chat-latest")]
64 Gpt52ChatLatest,
65 #[serde(rename = "gpt-5.2-pro")]
66 Gpt52Pro,
67 #[serde(rename = "gpt-5.2-pro-2025-12-11")]
68 Gpt52Pro20251211,
69 #[serde(rename = "gpt-5.1")]
70 Gpt51,
71 #[serde(rename = "gpt-5.1-2025-11-13")]
72 Gpt5120251113,
73 #[serde(rename = "gpt-5.1-codex")]
74 Gpt51Codex,
75 #[serde(rename = "gpt-5.1-mini")]
76 Gpt51Mini,
77 #[serde(rename = "gpt-5.1-chat-latest")]
78 Gpt51ChatLatest,
79 #[serde(rename = "gpt-5")]
80 Gpt5,
81 #[serde(rename = "gpt-5-mini")]
82 Gpt5Mini,
83 #[serde(rename = "gpt-5-nano")]
84 Gpt5Nano,
85 #[serde(rename = "gpt-5-2025-08-07")]
86 Gpt520250807,
87 #[serde(rename = "gpt-5-mini-2025-08-07")]
88 Gpt5Mini20250807,
89 #[serde(rename = "gpt-5-nano-2025-08-07")]
90 Gpt5Nano20250807,
91 #[serde(rename = "gpt-5-chat-latest")]
92 Gpt5ChatLatest,
93 #[serde(rename = "gpt-4.1")]
94 Gpt41,
95 #[serde(rename = "gpt-4.1-mini")]
96 Gpt41Mini,
97 #[serde(rename = "gpt-4.1-nano")]
98 Gpt41Nano,
99 #[serde(rename = "gpt-4.1-2025-04-14")]
100 Gpt4120250414,
101 #[serde(rename = "gpt-4.1-mini-2025-04-14")]
102 Gpt41Mini20250414,
103 #[serde(rename = "gpt-4.1-nano-2025-04-14")]
104 Gpt41Nano20250414,
105 #[serde(rename = "o4-mini")]
106 O4Mini,
107 #[serde(rename = "o4-mini-2025-04-16")]
108 O4Mini20250416,
109 #[serde(rename = "o3")]
110 O3,
111 #[serde(rename = "o3-2025-04-16")]
112 O320250416,
113 #[serde(rename = "o3-mini")]
114 O3Mini,
115 #[serde(rename = "o3-mini-2025-01-31")]
116 O3Mini20250131,
117 #[serde(rename = "o1")]
118 O1,
119 #[serde(rename = "o1-2024-12-17")]
120 O120241217,
121 #[serde(rename = "o1-preview")]
122 O1Preview,
123 #[serde(rename = "o1-preview-2024-09-12")]
124 O1Preview20240912,
125 #[serde(rename = "o1-mini")]
126 O1Mini,
127 #[serde(rename = "o1-mini-2024-09-12")]
128 O1Mini20240912,
129 #[serde(rename = "gpt-4o")]
130 Gpt4o,
131 #[serde(rename = "gpt-4o-2024-11-20")]
132 Gpt4o20241120,
133 #[serde(rename = "gpt-4o-2024-08-06")]
134 Gpt4o20240806,
135 #[serde(rename = "gpt-4o-2024-05-13")]
136 Gpt4o20240513,
137 #[serde(rename = "gpt-4o-audio-preview")]
138 Gpt4oAudioPreview,
139 #[serde(rename = "gpt-4o-audio-preview-2024-10-01")]
140 Gpt4oAudioPreview20241001,
141 #[serde(rename = "gpt-4o-audio-preview-2024-12-17")]
142 Gpt4oAudioPreview20241217,
143 #[serde(rename = "gpt-4o-audio-preview-2025-06-03")]
144 Gpt4oAudioPreview20250603,
145 #[serde(rename = "gpt-4o-mini-audio-preview")]
146 Gpt4oMiniAudioPreview,
147 #[serde(rename = "gpt-4o-mini-audio-preview-2024-12-17")]
148 Gpt4oMiniAudioPreview20241217,
149 #[serde(rename = "gpt-4o-search-preview")]
150 Gpt4oSearchPreview,
151 #[serde(rename = "gpt-4o-mini-search-preview")]
152 Gpt4oMiniSearchPreview,
153 #[serde(rename = "gpt-4o-search-preview-2025-03-11")]
154 Gpt4oSearchPreview20250311,
155 #[serde(rename = "gpt-4o-mini-search-preview-2025-03-11")]
156 Gpt4oMiniSearchPreview20250311,
157 #[serde(rename = "chatgpt-4o-latest")]
158 Chatgpt4oLatest,
159 #[serde(rename = "codex-mini-latest")]
160 CodexMiniLatest,
161 #[serde(rename = "gpt-4o-mini")]
162 Gpt4oMini,
163 #[serde(rename = "gpt-4o-mini-2024-07-18")]
164 Gpt4oMini20240718,
165 #[serde(rename = "gpt-4-turbo")]
166 Gpt4Turbo,
167 #[serde(rename = "gpt-4-turbo-2024-04-09")]
168 Gpt4Turbo20240409,
169 #[serde(rename = "gpt-4-0125-preview")]
170 Gpt40125Preview,
171 #[serde(rename = "gpt-4-turbo-preview")]
172 Gpt4TurboPreview,
173 #[serde(rename = "gpt-4-1106-preview")]
174 Gpt41106Preview,
175 #[serde(rename = "gpt-4-vision-preview")]
176 Gpt4VisionPreview,
177 #[serde(rename = "gpt-4")]
178 Gpt4,
179 #[serde(rename = "gpt-4-0314")]
180 Gpt40314,
181 #[serde(rename = "gpt-4-0613")]
182 Gpt40613,
183 #[serde(rename = "gpt-4-32k")]
184 Gpt432k,
185 #[serde(rename = "gpt-4-32k-0314")]
186 Gpt432k0314,
187 #[serde(rename = "gpt-4-32k-0613")]
188 Gpt432k0613,
189 #[serde(rename = "gpt-3.5-turbo")]
190 Gpt35Turbo,
191 #[serde(rename = "gpt-3.5-turbo-16k")]
192 Gpt35Turbo16k,
193 #[serde(rename = "gpt-3.5-turbo-0301")]
194 Gpt35Turbo0301,
195 #[serde(rename = "gpt-3.5-turbo-0613")]
196 Gpt35Turbo0613,
197 #[serde(rename = "gpt-3.5-turbo-1106")]
198 Gpt35Turbo1106,
199 #[serde(rename = "gpt-3.5-turbo-0125")]
200 Gpt35Turbo0125,
201 #[serde(rename = "gpt-3.5-turbo-16k-0613")]
202 Gpt35Turbo16k0613,
203}
204
205#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
206#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
207#[non_exhaustive]
208pub enum ComparisonFilterType {
209 #[serde(rename = "eq")]
210 Eq,
211 #[serde(rename = "ne")]
212 Ne,
213 #[serde(rename = "gt")]
214 Gt,
215 #[serde(rename = "gte")]
216 Gte,
217 #[serde(rename = "lt")]
218 Lt,
219 #[serde(rename = "lte")]
220 Lte,
221 #[serde(rename = "in")]
222 In,
223 #[serde(rename = "nin")]
224 Nin,
225}
226
227#[derive(Debug, Clone, Serialize, Deserialize)]
229#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
230pub struct ComparisonFilter {
231 pub key: String,
233 #[serde(rename = "type")]
235 pub type_: ComparisonFilterType,
236 pub value: serde_json::Value,
238}
239
240pub type Filter = serde_json::Value;
241
242#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
243#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
244#[non_exhaustive]
245pub enum CompoundFilterType {
246 #[serde(rename = "and")]
247 And,
248 #[serde(rename = "or")]
249 Or,
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize)]
254#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
255pub struct CompoundFilter {
256 pub filters: Vec<Filter>,
258 #[serde(rename = "type")]
260 pub type_: CompoundFilterType,
261}
262
263#[derive(Debug, Clone, Serialize, Deserialize)]
265#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
266pub struct Text {
267 #[serde(rename = "type")]
269 pub type_: String,
270}
271
272#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
273#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
274#[non_exhaustive]
275pub enum GrammarSyntax {
276 #[serde(rename = "lark")]
277 Lark,
278 #[serde(rename = "regex")]
279 Regex,
280}
281
282#[derive(Debug, Clone, Serialize, Deserialize)]
284#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
285pub struct Grammar {
286 pub definition: String,
288 pub syntax: GrammarSyntax,
290 #[serde(rename = "type")]
292 pub type_: String,
293}
294
295pub type CustomToolInputFormat = serde_json::Value;
296
297#[derive(Debug, Clone, Serialize, Deserialize)]
298#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
299pub struct ErrorObject {
300 #[serde(skip_serializing_if = "Option::is_none", default)]
301 pub code: Option<String>,
302 pub message: String,
303 #[serde(skip_serializing_if = "Option::is_none", default)]
304 pub param: Option<String>,
305 #[serde(rename = "type")]
306 pub type_: String,
307}
308
309#[derive(Debug, Clone, Serialize, Deserialize)]
310#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
311pub struct FunctionDefinition {
312 pub name: String,
314 #[serde(skip_serializing_if = "Option::is_none", default)]
316 pub description: Option<String>,
317 #[serde(skip_serializing_if = "Option::is_none", default)]
319 pub parameters: Option<FunctionParameters>,
320 #[serde(skip_serializing_if = "Option::is_none", default)]
322 pub strict: Option<bool>,
323}
324
325pub type FunctionParameters = std::collections::HashMap<String, serde_json::Value>;
326
327pub type Metadata = std::collections::HashMap<String, String>;
328
329#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
330#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
331#[non_exhaustive]
332pub enum ReasoningGenerateSummary {
333 #[serde(rename = "auto")]
334 Auto,
335 #[serde(rename = "concise")]
336 Concise,
337 #[serde(rename = "detailed")]
338 Detailed,
339}
340
341#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
342#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
343#[non_exhaustive]
344pub enum ReasoningSummary {
345 #[serde(rename = "auto")]
346 Auto,
347 #[serde(rename = "concise")]
348 Concise,
349 #[serde(rename = "detailed")]
350 Detailed,
351}
352
353#[derive(Debug, Clone, Serialize, Deserialize)]
355#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
356pub struct Reasoning {
357 #[serde(skip_serializing_if = "Option::is_none", default)]
359 pub effort: Option<ReasoningEffort>,
360 #[serde(skip_serializing_if = "Option::is_none", default)]
362 pub generate_summary: Option<ReasoningGenerateSummary>,
363 #[serde(skip_serializing_if = "Option::is_none", default)]
365 pub summary: Option<ReasoningSummary>,
366}
367
368#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
369#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
370#[non_exhaustive]
371pub enum ReasoningEffort {
372 #[serde(rename = "none")]
373 None,
374 #[serde(rename = "minimal")]
375 Minimal,
376 #[serde(rename = "low")]
377 Low,
378 #[serde(rename = "medium")]
379 Medium,
380 #[serde(rename = "high")]
381 High,
382 #[serde(rename = "xhigh")]
383 Xhigh,
384}
385
386#[derive(Debug, Clone, Serialize, Deserialize)]
388#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
389pub struct ResponseFormatJSONObject {
390 #[serde(rename = "type")]
392 pub type_: String,
393}
394
395#[derive(Debug, Clone, Serialize, Deserialize)]
397#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
398pub struct JSONSchema {
399 pub name: String,
401 #[serde(skip_serializing_if = "Option::is_none", default)]
403 pub description: Option<String>,
404 #[serde(rename = "schema")]
406 pub schema_: Option<std::collections::HashMap<String, serde_json::Value>>,
407 #[serde(skip_serializing_if = "Option::is_none", default)]
409 pub strict: Option<bool>,
410}
411
412#[derive(Debug, Clone, Serialize, Deserialize)]
414#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
415pub struct ResponseFormatJSONSchema {
416 pub json_schema: JSONSchema,
418 #[serde(rename = "type")]
420 pub type_: String,
421}
422
423#[derive(Debug, Clone, Serialize, Deserialize)]
425#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
426pub struct ResponseFormatText {
427 #[serde(rename = "type")]
429 pub type_: String,
430}
431
432#[derive(Debug, Clone, Serialize, Deserialize)]
434#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
435pub struct ResponseFormatTextGrammar {
436 pub grammar: String,
438 #[serde(rename = "type")]
440 pub type_: String,
441}
442
443#[derive(Debug, Clone, Serialize, Deserialize)]
445#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
446pub struct ResponseFormatTextPython {
447 #[serde(rename = "type")]
449 pub type_: String,
450}
451
452#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
453#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
454#[non_exhaustive]
455pub enum ResponsesModel {
456 #[serde(rename = "o1-pro")]
457 O1Pro,
458 #[serde(rename = "o1-pro-2025-03-19")]
459 O1Pro20250319,
460 #[serde(rename = "o3-pro")]
461 O3Pro,
462 #[serde(rename = "o3-pro-2025-06-10")]
463 O3Pro20250610,
464 #[serde(rename = "o3-deep-research")]
465 O3DeepResearch,
466 #[serde(rename = "o3-deep-research-2025-06-26")]
467 O3DeepResearch20250626,
468 #[serde(rename = "o4-mini-deep-research")]
469 O4MiniDeepResearch,
470 #[serde(rename = "o4-mini-deep-research-2025-06-26")]
471 O4MiniDeepResearch20250626,
472 #[serde(rename = "computer-use-preview")]
473 ComputerUsePreview,
474 #[serde(rename = "computer-use-preview-2025-03-11")]
475 ComputerUsePreview20250311,
476 #[serde(rename = "gpt-5-codex")]
477 Gpt5Codex,
478 #[serde(rename = "gpt-5-pro")]
479 Gpt5Pro,
480 #[serde(rename = "gpt-5-pro-2025-10-06")]
481 Gpt5Pro20251006,
482 #[serde(rename = "gpt-5.1-codex-max")]
483 Gpt51CodexMax,
484}