vapi_client/models/
open_ai_model.rs

1/*
2 * Vapi API
3 *
4 * Voice AI for developers.
5 *
6 * The version of the OpenAPI document: 1.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct OpenAiModel {
16    /// This is the starting state for the conversation.
17    #[serde(rename = "messages", skip_serializing_if = "Option::is_none")]
18    pub messages: Option<Vec<models::OpenAiMessage>>,
19    /// These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.  Both `tools` and `toolIds` can be used together.
20    #[serde(rename = "tools", skip_serializing_if = "Option::is_none")]
21    pub tools: Option<Vec<models::AnyscaleModelToolsInner>>,
22    /// These are the tools that the assistant can use during the call. To use transient tools, use `tools`.  Both `tools` and `toolIds` can be used together.
23    #[serde(rename = "toolIds", skip_serializing_if = "Option::is_none")]
24    pub tool_ids: Option<Vec<String>>,
25    #[serde(rename = "knowledgeBase", skip_serializing_if = "Option::is_none")]
26    pub knowledge_base: Option<models::CreateCustomKnowledgeBaseDto>,
27    /// This is the ID of the knowledge base the model will use.
28    #[serde(rename = "knowledgeBaseId", skip_serializing_if = "Option::is_none")]
29    pub knowledge_base_id: Option<String>,
30    /// This is the provider that will be used for the model.
31    #[serde(rename = "provider")]
32    pub provider: ProviderTrue,
33    /// This is the OpenAI model that will be used.  When using Vapi OpenAI or your own Azure Credentials, you have the option to specify the region for the selected model. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest region that make sense. This is helpful when you are required to comply with Data Residency rules. Learn more about Azure regions here https://azure.microsoft.com/en-us/explore/global-infrastructure/data-residency/.  @default undefined
34    #[serde(rename = "model")]
35    pub model: ModelTrue,
36    /// These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.
37    #[serde(rename = "fallbackModels", skip_serializing_if = "Option::is_none")]
38    pub fallback_models: Option<Vec<FallbackModelsTrue>>,
39    /// Azure OpenAI doesn't support `maxLength` right now https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&pivots=programming-language-csharp#unsupported-type-specific-keywords. Need to strip.  - `strip-parameters-with-unsupported-validation` will strip parameters with unsupported validation. - `strip-unsupported-validation` will keep the parameters but strip unsupported validation.  @default `strip-unsupported-validation`
40    #[serde(
41        rename = "toolStrictCompatibilityMode",
42        skip_serializing_if = "Option::is_none"
43    )]
44    pub tool_strict_compatibility_mode: Option<ToolStrictCompatibilityModeTrue>,
45    /// This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
46    #[serde(rename = "temperature", skip_serializing_if = "Option::is_none")]
47    pub temperature: Option<f64>,
48    /// This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.
49    #[serde(rename = "maxTokens", skip_serializing_if = "Option::is_none")]
50    pub max_tokens: Option<f64>,
51    /// This determines whether we detect user's emotion while they speak and send it as an additional info to model.  Default `false` because the model is usually are good at understanding the user's emotion from text.  @default false
52    #[serde(
53        rename = "emotionRecognitionEnabled",
54        skip_serializing_if = "Option::is_none"
55    )]
56    pub emotion_recognition_enabled: Option<bool>,
57    /// This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.  Default is 0.  @default 0
58    #[serde(rename = "numFastTurns", skip_serializing_if = "Option::is_none")]
59    pub num_fast_turns: Option<f64>,
60}
61
62impl OpenAiModel {
63    pub fn new(provider: ProviderTrue, model: ModelTrue) -> OpenAiModel {
64        OpenAiModel {
65            messages: None,
66            tools: None,
67            tool_ids: None,
68            knowledge_base: None,
69            knowledge_base_id: None,
70            provider,
71            model,
72            fallback_models: None,
73            tool_strict_compatibility_mode: None,
74            temperature: None,
75            max_tokens: None,
76            emotion_recognition_enabled: None,
77            num_fast_turns: None,
78        }
79    }
80}
81/// This is the provider that will be used for the model.
82#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
83pub enum ProviderTrue {
84    #[serde(rename = "openai")]
85    Openai,
86}
87
88impl Default for ProviderTrue {
89    fn default() -> ProviderTrue {
90        Self::Openai
91    }
92}
93/// This is the OpenAI model that will be used.  When using Vapi OpenAI or your own Azure Credentials, you have the option to specify the region for the selected model. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest region that make sense. This is helpful when you are required to comply with Data Residency rules. Learn more about Azure regions here https://azure.microsoft.com/en-us/explore/global-infrastructure/data-residency/.  @default undefined
94#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
95pub enum ModelTrue {
96    #[serde(rename = "gpt-4.1-2025-04-14")]
97    Gpt4Period120250414,
98    #[serde(rename = "gpt-4.1-mini-2025-04-14")]
99    Gpt4Period1Mini20250414,
100    #[serde(rename = "gpt-4.1-nano-2025-04-14")]
101    Gpt4Period1Nano20250414,
102    #[serde(rename = "gpt-4.1")]
103    Gpt4Period1,
104    #[serde(rename = "gpt-4.1-mini")]
105    Gpt4Period1Mini,
106    #[serde(rename = "gpt-4.1-nano")]
107    Gpt4Period1Nano,
108    #[serde(rename = "gpt-4.5-preview")]
109    Gpt4Period5Preview,
110    #[serde(rename = "chatgpt-4o-latest")]
111    Chatgpt4oLatest,
112    #[serde(rename = "o3")]
113    O3,
114    #[serde(rename = "o3-mini")]
115    O3Mini,
116    #[serde(rename = "o4-mini")]
117    O4Mini,
118    #[serde(rename = "o1-preview")]
119    O1Preview,
120    #[serde(rename = "o1-preview-2024-09-12")]
121    O1Preview20240912,
122    #[serde(rename = "o1-mini")]
123    O1Mini,
124    #[serde(rename = "o1-mini-2024-09-12")]
125    O1Mini20240912,
126    #[serde(rename = "gpt-4o-realtime-preview-2024-10-01")]
127    Gpt4oRealtimePreview20241001,
128    #[serde(rename = "gpt-4o-realtime-preview-2024-12-17")]
129    Gpt4oRealtimePreview20241217,
130    #[serde(rename = "gpt-4o-mini-realtime-preview-2024-12-17")]
131    Gpt4oMiniRealtimePreview20241217,
132    #[serde(rename = "gpt-4o-mini-2024-07-18")]
133    Gpt4oMini20240718,
134    #[serde(rename = "gpt-4o-mini")]
135    Gpt4oMini,
136    #[serde(rename = "gpt-4o")]
137    Gpt4o,
138    #[serde(rename = "gpt-4o-2024-05-13")]
139    Gpt4o20240513,
140    #[serde(rename = "gpt-4o-2024-08-06")]
141    Gpt4o20240806,
142    #[serde(rename = "gpt-4o-2024-11-20")]
143    Gpt4o20241120,
144    #[serde(rename = "gpt-4-turbo")]
145    Gpt4Turbo,
146    #[serde(rename = "gpt-4-turbo-2024-04-09")]
147    Gpt4Turbo20240409,
148    #[serde(rename = "gpt-4-turbo-preview")]
149    Gpt4TurboPreview,
150    #[serde(rename = "gpt-4-0125-preview")]
151    Gpt40125Preview,
152    #[serde(rename = "gpt-4-1106-preview")]
153    Gpt41106Preview,
154    #[serde(rename = "gpt-4")]
155    Gpt4,
156    #[serde(rename = "gpt-4-0613")]
157    Gpt40613,
158    #[serde(rename = "gpt-3.5-turbo")]
159    Gpt3Period5Turbo,
160    #[serde(rename = "gpt-3.5-turbo-0125")]
161    Gpt3Period5Turbo0125,
162    #[serde(rename = "gpt-3.5-turbo-1106")]
163    Gpt3Period5Turbo1106,
164    #[serde(rename = "gpt-3.5-turbo-16k")]
165    Gpt3Period5Turbo16k,
166    #[serde(rename = "gpt-3.5-turbo-0613")]
167    Gpt3Period5Turbo0613,
168    #[serde(rename = "gpt-4.1-2025-04-14:westus")]
169    Gpt4Period120250414ColonWestus,
170    #[serde(rename = "gpt-4.1-2025-04-14:eastus2")]
171    Gpt4Period120250414ColonEastus2,
172    #[serde(rename = "gpt-4.1-2025-04-14:eastus")]
173    Gpt4Period120250414ColonEastus,
174    #[serde(rename = "gpt-4.1-2025-04-14:westus3")]
175    Gpt4Period120250414ColonWestus3,
176    #[serde(rename = "gpt-4.1-2025-04-14:northcentralus")]
177    Gpt4Period120250414ColonNorthcentralus,
178    #[serde(rename = "gpt-4.1-2025-04-14:southcentralus")]
179    Gpt4Period120250414ColonSouthcentralus,
180    #[serde(rename = "gpt-4.1-mini-2025-04-14:westus")]
181    Gpt4Period1Mini20250414ColonWestus,
182    #[serde(rename = "gpt-4.1-mini-2025-04-14:eastus2")]
183    Gpt4Period1Mini20250414ColonEastus2,
184    #[serde(rename = "gpt-4.1-mini-2025-04-14:eastus")]
185    Gpt4Period1Mini20250414ColonEastus,
186    #[serde(rename = "gpt-4.1-mini-2025-04-14:westus3")]
187    Gpt4Period1Mini20250414ColonWestus3,
188    #[serde(rename = "gpt-4.1-mini-2025-04-14:northcentralus")]
189    Gpt4Period1Mini20250414ColonNorthcentralus,
190    #[serde(rename = "gpt-4.1-mini-2025-04-14:southcentralus")]
191    Gpt4Period1Mini20250414ColonSouthcentralus,
192    #[serde(rename = "gpt-4.1-nano-2025-04-14:westus")]
193    Gpt4Period1Nano20250414ColonWestus,
194    #[serde(rename = "gpt-4.1-nano-2025-04-14:eastus2")]
195    Gpt4Period1Nano20250414ColonEastus2,
196    #[serde(rename = "gpt-4.1-nano-2025-04-14:westus3")]
197    Gpt4Period1Nano20250414ColonWestus3,
198    #[serde(rename = "gpt-4.1-nano-2025-04-14:northcentralus")]
199    Gpt4Period1Nano20250414ColonNorthcentralus,
200    #[serde(rename = "gpt-4.1-nano-2025-04-14:southcentralus")]
201    Gpt4Period1Nano20250414ColonSouthcentralus,
202    #[serde(rename = "gpt-4o-2024-11-20:swedencentral")]
203    Gpt4o20241120ColonSwedencentral,
204    #[serde(rename = "gpt-4o-2024-11-20:westus")]
205    Gpt4o20241120ColonWestus,
206    #[serde(rename = "gpt-4o-2024-11-20:eastus2")]
207    Gpt4o20241120ColonEastus2,
208    #[serde(rename = "gpt-4o-2024-11-20:eastus")]
209    Gpt4o20241120ColonEastus,
210    #[serde(rename = "gpt-4o-2024-11-20:westus3")]
211    Gpt4o20241120ColonWestus3,
212    #[serde(rename = "gpt-4o-2024-11-20:southcentralus")]
213    Gpt4o20241120ColonSouthcentralus,
214    #[serde(rename = "gpt-4o-2024-08-06:westus")]
215    Gpt4o20240806ColonWestus,
216    #[serde(rename = "gpt-4o-2024-08-06:westus3")]
217    Gpt4o20240806ColonWestus3,
218    #[serde(rename = "gpt-4o-2024-08-06:eastus")]
219    Gpt4o20240806ColonEastus,
220    #[serde(rename = "gpt-4o-2024-08-06:eastus2")]
221    Gpt4o20240806ColonEastus2,
222    #[serde(rename = "gpt-4o-2024-08-06:northcentralus")]
223    Gpt4o20240806ColonNorthcentralus,
224    #[serde(rename = "gpt-4o-2024-08-06:southcentralus")]
225    Gpt4o20240806ColonSouthcentralus,
226    #[serde(rename = "gpt-4o-mini-2024-07-18:westus")]
227    Gpt4oMini20240718ColonWestus,
228    #[serde(rename = "gpt-4o-mini-2024-07-18:westus3")]
229    Gpt4oMini20240718ColonWestus3,
230    #[serde(rename = "gpt-4o-mini-2024-07-18:eastus")]
231    Gpt4oMini20240718ColonEastus,
232    #[serde(rename = "gpt-4o-mini-2024-07-18:eastus2")]
233    Gpt4oMini20240718ColonEastus2,
234    #[serde(rename = "gpt-4o-mini-2024-07-18:northcentralus")]
235    Gpt4oMini20240718ColonNorthcentralus,
236    #[serde(rename = "gpt-4o-mini-2024-07-18:southcentralus")]
237    Gpt4oMini20240718ColonSouthcentralus,
238    #[serde(rename = "gpt-4o-2024-05-13:eastus2")]
239    Gpt4o20240513ColonEastus2,
240    #[serde(rename = "gpt-4o-2024-05-13:eastus")]
241    Gpt4o20240513ColonEastus,
242    #[serde(rename = "gpt-4o-2024-05-13:northcentralus")]
243    Gpt4o20240513ColonNorthcentralus,
244    #[serde(rename = "gpt-4o-2024-05-13:southcentralus")]
245    Gpt4o20240513ColonSouthcentralus,
246    #[serde(rename = "gpt-4o-2024-05-13:westus3")]
247    Gpt4o20240513ColonWestus3,
248    #[serde(rename = "gpt-4o-2024-05-13:westus")]
249    Gpt4o20240513ColonWestus,
250    #[serde(rename = "gpt-4-turbo-2024-04-09:eastus2")]
251    Gpt4Turbo20240409ColonEastus2,
252    #[serde(rename = "gpt-4-0125-preview:eastus")]
253    Gpt40125PreviewColonEastus,
254    #[serde(rename = "gpt-4-0125-preview:northcentralus")]
255    Gpt40125PreviewColonNorthcentralus,
256    #[serde(rename = "gpt-4-0125-preview:southcentralus")]
257    Gpt40125PreviewColonSouthcentralus,
258    #[serde(rename = "gpt-4-1106-preview:australia")]
259    Gpt41106PreviewColonAustralia,
260    #[serde(rename = "gpt-4-1106-preview:canadaeast")]
261    Gpt41106PreviewColonCanadaeast,
262    #[serde(rename = "gpt-4-1106-preview:france")]
263    Gpt41106PreviewColonFrance,
264    #[serde(rename = "gpt-4-1106-preview:india")]
265    Gpt41106PreviewColonIndia,
266    #[serde(rename = "gpt-4-1106-preview:norway")]
267    Gpt41106PreviewColonNorway,
268    #[serde(rename = "gpt-4-1106-preview:swedencentral")]
269    Gpt41106PreviewColonSwedencentral,
270    #[serde(rename = "gpt-4-1106-preview:uk")]
271    Gpt41106PreviewColonUk,
272    #[serde(rename = "gpt-4-1106-preview:westus")]
273    Gpt41106PreviewColonWestus,
274    #[serde(rename = "gpt-4-1106-preview:westus3")]
275    Gpt41106PreviewColonWestus3,
276    #[serde(rename = "gpt-4-0613:canadaeast")]
277    Gpt40613ColonCanadaeast,
278    #[serde(rename = "gpt-3.5-turbo-0125:canadaeast")]
279    Gpt3Period5Turbo0125ColonCanadaeast,
280    #[serde(rename = "gpt-3.5-turbo-0125:northcentralus")]
281    Gpt3Period5Turbo0125ColonNorthcentralus,
282    #[serde(rename = "gpt-3.5-turbo-0125:southcentralus")]
283    Gpt3Period5Turbo0125ColonSouthcentralus,
284    #[serde(rename = "gpt-3.5-turbo-1106:canadaeast")]
285    Gpt3Period5Turbo1106ColonCanadaeast,
286    #[serde(rename = "gpt-3.5-turbo-1106:westus")]
287    Gpt3Period5Turbo1106ColonWestus,
288}
289
290impl Default for ModelTrue {
291    fn default() -> ModelTrue {
292        Self::Gpt4Period120250414
293    }
294}
295/// These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.
296#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
297pub enum FallbackModelsTrue {
298    #[serde(rename = "gpt-4.1-2025-04-14")]
299    Gpt4Period120250414,
300    #[serde(rename = "gpt-4.1-mini-2025-04-14")]
301    Gpt4Period1Mini20250414,
302    #[serde(rename = "gpt-4.1-nano-2025-04-14")]
303    Gpt4Period1Nano20250414,
304    #[serde(rename = "gpt-4.1")]
305    Gpt4Period1,
306    #[serde(rename = "gpt-4.1-mini")]
307    Gpt4Period1Mini,
308    #[serde(rename = "gpt-4.1-nano")]
309    Gpt4Period1Nano,
310    #[serde(rename = "gpt-4.5-preview")]
311    Gpt4Period5Preview,
312    #[serde(rename = "chatgpt-4o-latest")]
313    Chatgpt4oLatest,
314    #[serde(rename = "o3")]
315    O3,
316    #[serde(rename = "o3-mini")]
317    O3Mini,
318    #[serde(rename = "o4-mini")]
319    O4Mini,
320    #[serde(rename = "o1-preview")]
321    O1Preview,
322    #[serde(rename = "o1-preview-2024-09-12")]
323    O1Preview20240912,
324    #[serde(rename = "o1-mini")]
325    O1Mini,
326    #[serde(rename = "o1-mini-2024-09-12")]
327    O1Mini20240912,
328    #[serde(rename = "gpt-4o-realtime-preview-2024-10-01")]
329    Gpt4oRealtimePreview20241001,
330    #[serde(rename = "gpt-4o-realtime-preview-2024-12-17")]
331    Gpt4oRealtimePreview20241217,
332    #[serde(rename = "gpt-4o-mini-realtime-preview-2024-12-17")]
333    Gpt4oMiniRealtimePreview20241217,
334    #[serde(rename = "gpt-4o-mini-2024-07-18")]
335    Gpt4oMini20240718,
336    #[serde(rename = "gpt-4o-mini")]
337    Gpt4oMini,
338    #[serde(rename = "gpt-4o")]
339    Gpt4o,
340    #[serde(rename = "gpt-4o-2024-05-13")]
341    Gpt4o20240513,
342    #[serde(rename = "gpt-4o-2024-08-06")]
343    Gpt4o20240806,
344    #[serde(rename = "gpt-4o-2024-11-20")]
345    Gpt4o20241120,
346    #[serde(rename = "gpt-4-turbo")]
347    Gpt4Turbo,
348    #[serde(rename = "gpt-4-turbo-2024-04-09")]
349    Gpt4Turbo20240409,
350    #[serde(rename = "gpt-4-turbo-preview")]
351    Gpt4TurboPreview,
352    #[serde(rename = "gpt-4-0125-preview")]
353    Gpt40125Preview,
354    #[serde(rename = "gpt-4-1106-preview")]
355    Gpt41106Preview,
356    #[serde(rename = "gpt-4")]
357    Gpt4,
358    #[serde(rename = "gpt-4-0613")]
359    Gpt40613,
360    #[serde(rename = "gpt-3.5-turbo")]
361    Gpt3Period5Turbo,
362    #[serde(rename = "gpt-3.5-turbo-0125")]
363    Gpt3Period5Turbo0125,
364    #[serde(rename = "gpt-3.5-turbo-1106")]
365    Gpt3Period5Turbo1106,
366    #[serde(rename = "gpt-3.5-turbo-16k")]
367    Gpt3Period5Turbo16k,
368    #[serde(rename = "gpt-3.5-turbo-0613")]
369    Gpt3Period5Turbo0613,
370    #[serde(rename = "gpt-4.1-2025-04-14:westus")]
371    Gpt4Period120250414ColonWestus,
372    #[serde(rename = "gpt-4.1-2025-04-14:eastus2")]
373    Gpt4Period120250414ColonEastus2,
374    #[serde(rename = "gpt-4.1-2025-04-14:eastus")]
375    Gpt4Period120250414ColonEastus,
376    #[serde(rename = "gpt-4.1-2025-04-14:westus3")]
377    Gpt4Period120250414ColonWestus3,
378    #[serde(rename = "gpt-4.1-2025-04-14:northcentralus")]
379    Gpt4Period120250414ColonNorthcentralus,
380    #[serde(rename = "gpt-4.1-2025-04-14:southcentralus")]
381    Gpt4Period120250414ColonSouthcentralus,
382    #[serde(rename = "gpt-4.1-mini-2025-04-14:westus")]
383    Gpt4Period1Mini20250414ColonWestus,
384    #[serde(rename = "gpt-4.1-mini-2025-04-14:eastus2")]
385    Gpt4Period1Mini20250414ColonEastus2,
386    #[serde(rename = "gpt-4.1-mini-2025-04-14:eastus")]
387    Gpt4Period1Mini20250414ColonEastus,
388    #[serde(rename = "gpt-4.1-mini-2025-04-14:westus3")]
389    Gpt4Period1Mini20250414ColonWestus3,
390    #[serde(rename = "gpt-4.1-mini-2025-04-14:northcentralus")]
391    Gpt4Period1Mini20250414ColonNorthcentralus,
392    #[serde(rename = "gpt-4.1-mini-2025-04-14:southcentralus")]
393    Gpt4Period1Mini20250414ColonSouthcentralus,
394    #[serde(rename = "gpt-4.1-nano-2025-04-14:westus")]
395    Gpt4Period1Nano20250414ColonWestus,
396    #[serde(rename = "gpt-4.1-nano-2025-04-14:eastus2")]
397    Gpt4Period1Nano20250414ColonEastus2,
398    #[serde(rename = "gpt-4.1-nano-2025-04-14:westus3")]
399    Gpt4Period1Nano20250414ColonWestus3,
400    #[serde(rename = "gpt-4.1-nano-2025-04-14:northcentralus")]
401    Gpt4Period1Nano20250414ColonNorthcentralus,
402    #[serde(rename = "gpt-4.1-nano-2025-04-14:southcentralus")]
403    Gpt4Period1Nano20250414ColonSouthcentralus,
404    #[serde(rename = "gpt-4o-2024-11-20:swedencentral")]
405    Gpt4o20241120ColonSwedencentral,
406    #[serde(rename = "gpt-4o-2024-11-20:westus")]
407    Gpt4o20241120ColonWestus,
408    #[serde(rename = "gpt-4o-2024-11-20:eastus2")]
409    Gpt4o20241120ColonEastus2,
410    #[serde(rename = "gpt-4o-2024-11-20:eastus")]
411    Gpt4o20241120ColonEastus,
412    #[serde(rename = "gpt-4o-2024-11-20:westus3")]
413    Gpt4o20241120ColonWestus3,
414    #[serde(rename = "gpt-4o-2024-11-20:southcentralus")]
415    Gpt4o20241120ColonSouthcentralus,
416    #[serde(rename = "gpt-4o-2024-08-06:westus")]
417    Gpt4o20240806ColonWestus,
418    #[serde(rename = "gpt-4o-2024-08-06:westus3")]
419    Gpt4o20240806ColonWestus3,
420    #[serde(rename = "gpt-4o-2024-08-06:eastus")]
421    Gpt4o20240806ColonEastus,
422    #[serde(rename = "gpt-4o-2024-08-06:eastus2")]
423    Gpt4o20240806ColonEastus2,
424    #[serde(rename = "gpt-4o-2024-08-06:northcentralus")]
425    Gpt4o20240806ColonNorthcentralus,
426    #[serde(rename = "gpt-4o-2024-08-06:southcentralus")]
427    Gpt4o20240806ColonSouthcentralus,
428    #[serde(rename = "gpt-4o-mini-2024-07-18:westus")]
429    Gpt4oMini20240718ColonWestus,
430    #[serde(rename = "gpt-4o-mini-2024-07-18:westus3")]
431    Gpt4oMini20240718ColonWestus3,
432    #[serde(rename = "gpt-4o-mini-2024-07-18:eastus")]
433    Gpt4oMini20240718ColonEastus,
434    #[serde(rename = "gpt-4o-mini-2024-07-18:eastus2")]
435    Gpt4oMini20240718ColonEastus2,
436    #[serde(rename = "gpt-4o-mini-2024-07-18:northcentralus")]
437    Gpt4oMini20240718ColonNorthcentralus,
438    #[serde(rename = "gpt-4o-mini-2024-07-18:southcentralus")]
439    Gpt4oMini20240718ColonSouthcentralus,
440    #[serde(rename = "gpt-4o-2024-05-13:eastus2")]
441    Gpt4o20240513ColonEastus2,
442    #[serde(rename = "gpt-4o-2024-05-13:eastus")]
443    Gpt4o20240513ColonEastus,
444    #[serde(rename = "gpt-4o-2024-05-13:northcentralus")]
445    Gpt4o20240513ColonNorthcentralus,
446    #[serde(rename = "gpt-4o-2024-05-13:southcentralus")]
447    Gpt4o20240513ColonSouthcentralus,
448    #[serde(rename = "gpt-4o-2024-05-13:westus3")]
449    Gpt4o20240513ColonWestus3,
450    #[serde(rename = "gpt-4o-2024-05-13:westus")]
451    Gpt4o20240513ColonWestus,
452    #[serde(rename = "gpt-4-turbo-2024-04-09:eastus2")]
453    Gpt4Turbo20240409ColonEastus2,
454    #[serde(rename = "gpt-4-0125-preview:eastus")]
455    Gpt40125PreviewColonEastus,
456    #[serde(rename = "gpt-4-0125-preview:northcentralus")]
457    Gpt40125PreviewColonNorthcentralus,
458    #[serde(rename = "gpt-4-0125-preview:southcentralus")]
459    Gpt40125PreviewColonSouthcentralus,
460    #[serde(rename = "gpt-4-1106-preview:australia")]
461    Gpt41106PreviewColonAustralia,
462    #[serde(rename = "gpt-4-1106-preview:canadaeast")]
463    Gpt41106PreviewColonCanadaeast,
464    #[serde(rename = "gpt-4-1106-preview:france")]
465    Gpt41106PreviewColonFrance,
466    #[serde(rename = "gpt-4-1106-preview:india")]
467    Gpt41106PreviewColonIndia,
468    #[serde(rename = "gpt-4-1106-preview:norway")]
469    Gpt41106PreviewColonNorway,
470    #[serde(rename = "gpt-4-1106-preview:swedencentral")]
471    Gpt41106PreviewColonSwedencentral,
472    #[serde(rename = "gpt-4-1106-preview:uk")]
473    Gpt41106PreviewColonUk,
474    #[serde(rename = "gpt-4-1106-preview:westus")]
475    Gpt41106PreviewColonWestus,
476    #[serde(rename = "gpt-4-1106-preview:westus3")]
477    Gpt41106PreviewColonWestus3,
478    #[serde(rename = "gpt-4-0613:canadaeast")]
479    Gpt40613ColonCanadaeast,
480    #[serde(rename = "gpt-3.5-turbo-0125:canadaeast")]
481    Gpt3Period5Turbo0125ColonCanadaeast,
482    #[serde(rename = "gpt-3.5-turbo-0125:northcentralus")]
483    Gpt3Period5Turbo0125ColonNorthcentralus,
484    #[serde(rename = "gpt-3.5-turbo-0125:southcentralus")]
485    Gpt3Period5Turbo0125ColonSouthcentralus,
486    #[serde(rename = "gpt-3.5-turbo-1106:canadaeast")]
487    Gpt3Period5Turbo1106ColonCanadaeast,
488    #[serde(rename = "gpt-3.5-turbo-1106:westus")]
489    Gpt3Period5Turbo1106ColonWestus,
490}
491
492impl Default for FallbackModelsTrue {
493    fn default() -> FallbackModelsTrue {
494        Self::Gpt4Period120250414
495    }
496}
497/// Azure OpenAI doesn't support `maxLength` right now https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&pivots=programming-language-csharp#unsupported-type-specific-keywords. Need to strip.  - `strip-parameters-with-unsupported-validation` will strip parameters with unsupported validation. - `strip-unsupported-validation` will keep the parameters but strip unsupported validation.  @default `strip-unsupported-validation`
498#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
499pub enum ToolStrictCompatibilityModeTrue {
500    #[serde(rename = "strip-parameters-with-unsupported-validation")]
501    StripParametersWithUnsupportedValidation,
502    #[serde(rename = "strip-unsupported-validation")]
503    StripUnsupportedValidation,
504}
505
506impl Default for ToolStrictCompatibilityModeTrue {
507    fn default() -> ToolStrictCompatibilityModeTrue {
508        Self::StripParametersWithUnsupportedValidation
509    }
510}