Skip to main content

openai_types/shared/
_gen.rs

1// AUTO-GENERATED by py2rust — do not edit.
2// Re-generate: python3 scripts/py2rust.py sync <python_dir> <rust_dir>
3// Domain: shared
4#![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/// A filter used to compare a specified attribute key to a given value using a defined comparison operation.
228#[derive(Debug, Clone, Serialize, Deserialize)]
229#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
230pub struct ComparisonFilter {
231    /// The key to compare against the value.
232    pub key: String,
233    /// Specifies the comparison operator: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`,
234    #[serde(rename = "type")]
235    pub type_: ComparisonFilterType,
236    /// The value to compare against the attribute key; supports string, number, or
237    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/// Combine multiple filters using `and` or `or`.
253#[derive(Debug, Clone, Serialize, Deserialize)]
254#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
255pub struct CompoundFilter {
256    /// Array of filters to combine.
257    pub filters: Vec<Filter>,
258    /// Type of operation: `and` or `or`.
259    #[serde(rename = "type")]
260    pub type_: CompoundFilterType,
261}
262
263/// Unconstrained free-form text.
264#[derive(Debug, Clone, Serialize, Deserialize)]
265#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
266pub struct Text {
267    /// Unconstrained text format. Always `text`.
268    #[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/// A grammar defined by the user.
283#[derive(Debug, Clone, Serialize, Deserialize)]
284#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
285pub struct Grammar {
286    /// The grammar definition.
287    pub definition: String,
288    /// The syntax of the grammar definition. One of `lark` or `regex`.
289    pub syntax: GrammarSyntax,
290    /// Grammar format. Always `grammar`.
291    #[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    /// The name of the function to be called.
313    pub name: String,
314    /// A description of what the function does, used by the model to choose when and
315    #[serde(skip_serializing_if = "Option::is_none", default)]
316    pub description: Option<String>,
317    /// The parameters the functions accepts, described as a JSON Schema object.
318    #[serde(skip_serializing_if = "Option::is_none", default)]
319    pub parameters: Option<FunctionParameters>,
320    /// Whether to enable strict schema adherence when generating the function call.
321    #[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/// **gpt-5 and o-series models only**
354#[derive(Debug, Clone, Serialize, Deserialize)]
355#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
356pub struct Reasoning {
357    /// Constrains effort on reasoning for
358    #[serde(skip_serializing_if = "Option::is_none", default)]
359    pub effort: Option<ReasoningEffort>,
360    /// **Deprecated:** use `summary` instead.
361    #[serde(skip_serializing_if = "Option::is_none", default)]
362    pub generate_summary: Option<ReasoningGenerateSummary>,
363    /// A summary of the reasoning performed by the model.
364    #[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/// JSON object response format.
387#[derive(Debug, Clone, Serialize, Deserialize)]
388#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
389pub struct ResponseFormatJSONObject {
390    /// The type of response format being defined. Always `json_object`.
391    #[serde(rename = "type")]
392    pub type_: String,
393}
394
395/// Structured Outputs configuration options, including a JSON Schema.
396#[derive(Debug, Clone, Serialize, Deserialize)]
397#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
398pub struct JSONSchema {
399    /// The name of the response format.
400    pub name: String,
401    /// A description of what the response format is for, used by the model to determine
402    #[serde(skip_serializing_if = "Option::is_none", default)]
403    pub description: Option<String>,
404    /// The schema for the response format, described as a JSON Schema object. Learn how
405    #[serde(rename = "schema")]
406    pub schema_: Option<std::collections::HashMap<String, serde_json::Value>>,
407    /// Whether to enable strict schema adherence when generating the output. If set to
408    #[serde(skip_serializing_if = "Option::is_none", default)]
409    pub strict: Option<bool>,
410}
411
412/// JSON Schema response format.
413#[derive(Debug, Clone, Serialize, Deserialize)]
414#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
415pub struct ResponseFormatJSONSchema {
416    /// Structured Outputs configuration options, including a JSON Schema.
417    pub json_schema: JSONSchema,
418    /// The type of response format being defined. Always `json_schema`.
419    #[serde(rename = "type")]
420    pub type_: String,
421}
422
423/// Default response format. Used to generate text responses.
424#[derive(Debug, Clone, Serialize, Deserialize)]
425#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
426pub struct ResponseFormatText {
427    /// The type of response format being defined. Always `text`.
428    #[serde(rename = "type")]
429    pub type_: String,
430}
431
432/// A custom grammar for the model to follow when generating text.
433#[derive(Debug, Clone, Serialize, Deserialize)]
434#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
435pub struct ResponseFormatTextGrammar {
436    /// The custom grammar for the model to follow.
437    pub grammar: String,
438    /// The type of response format being defined. Always `grammar`.
439    #[serde(rename = "type")]
440    pub type_: String,
441}
442
443/// Configure the model to generate valid Python code.
444#[derive(Debug, Clone, Serialize, Deserialize)]
445#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
446pub struct ResponseFormatTextPython {
447    /// The type of response format being defined. Always `python`.
448    #[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}