Skip to main content

gproxy_protocol/openai/common/
model_ids.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(untagged)]
5pub enum OpenAiModelId {
6    Known(OpenAiModelIdKnown),
7    Unknown(String),
8}
9
10impl From<String> for OpenAiModelId {
11    fn from(value: String) -> Self {
12        Self::Unknown(value)
13    }
14}
15
16impl From<&str> for OpenAiModelId {
17    fn from(value: &str) -> Self {
18        Self::Unknown(value.to_owned())
19    }
20}
21
22#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
23pub enum OpenAiModelIdKnown {
24    #[serde(rename = "gpt-6-astra")]
25    Gpt6Astra,
26    #[serde(rename = "gpt-5.6")]
27    Gpt56,
28    #[serde(rename = "gpt-5.6-sol")]
29    Gpt56Sol,
30    #[serde(rename = "gpt-5.6-terra")]
31    Gpt56Terra,
32    #[serde(rename = "gpt-5.6-luna")]
33    Gpt56Luna,
34    #[serde(rename = "gpt-5.5")]
35    Gpt55,
36    #[serde(rename = "gpt-5.4")]
37    Gpt54,
38    #[serde(rename = "gpt-5.4-mini")]
39    Gpt54Mini,
40    #[serde(rename = "gpt-5.4-nano")]
41    Gpt54Nano,
42    #[serde(rename = "gpt-5.4-mini-2026-03-17")]
43    Gpt54Mini20260317,
44    #[serde(rename = "gpt-5.4-nano-2026-03-17")]
45    Gpt54Nano20260317,
46    #[serde(rename = "gpt-5.3-codex-spark")]
47    Gpt53CodexSpark,
48    #[serde(rename = "gpt-5.3-chat-latest")]
49    Gpt53ChatLatest,
50    #[serde(rename = "gpt-5.2")]
51    Gpt52,
52    #[serde(rename = "gpt-5.2-2025-12-11")]
53    Gpt5220251211,
54    #[serde(rename = "gpt-5.2-chat-latest")]
55    Gpt52ChatLatest,
56    #[serde(rename = "gpt-5.2-pro")]
57    Gpt52Pro,
58    #[serde(rename = "gpt-5.2-pro-2025-12-11")]
59    Gpt52Pro20251211,
60    #[serde(rename = "gpt-5.1")]
61    Gpt51,
62    #[serde(rename = "gpt-5.1-2025-11-13")]
63    Gpt5120251113,
64    #[serde(rename = "gpt-5.1-codex")]
65    Gpt51Codex,
66    #[serde(rename = "gpt-5.1-mini")]
67    Gpt51Mini,
68    #[serde(rename = "gpt-5.1-chat-latest")]
69    Gpt51ChatLatest,
70    #[serde(rename = "gpt-5")]
71    Gpt5,
72    #[serde(rename = "gpt-5-mini")]
73    Gpt5Mini,
74    #[serde(rename = "gpt-5-nano")]
75    Gpt5Nano,
76    #[serde(rename = "gpt-5-2025-08-07")]
77    Gpt520250807,
78    #[serde(rename = "gpt-5-mini-2025-08-07")]
79    Gpt5Mini20250807,
80    #[serde(rename = "gpt-5-nano-2025-08-07")]
81    Gpt5Nano20250807,
82    #[serde(rename = "gpt-5-chat-latest")]
83    Gpt5ChatLatest,
84    #[serde(rename = "gpt-4.1")]
85    Gpt41,
86    #[serde(rename = "gpt-4.1-mini")]
87    Gpt41Mini,
88    #[serde(rename = "gpt-4.1-nano")]
89    Gpt41Nano,
90    #[serde(rename = "gpt-4.1-2025-04-14")]
91    Gpt4120250414,
92    #[serde(rename = "gpt-4.1-mini-2025-04-14")]
93    Gpt41Mini20250414,
94    #[serde(rename = "gpt-4.1-nano-2025-04-14")]
95    Gpt41Nano20250414,
96    #[serde(rename = "o4-mini")]
97    O4Mini,
98    #[serde(rename = "o4-mini-2025-04-16")]
99    O4Mini20250416,
100    #[serde(rename = "o3")]
101    O3,
102    #[serde(rename = "o3-2025-04-16")]
103    O320250416,
104    #[serde(rename = "o3-mini")]
105    O3Mini,
106    #[serde(rename = "o3-mini-2025-01-31")]
107    O3Mini20250131,
108    #[serde(rename = "o1")]
109    O1,
110    #[serde(rename = "o1-2024-12-17")]
111    O120241217,
112    #[serde(rename = "o1-preview")]
113    O1Preview,
114    #[serde(rename = "o1-preview-2024-09-12")]
115    O1Preview20240912,
116    #[serde(rename = "o1-mini")]
117    O1Mini,
118    #[serde(rename = "o1-mini-2024-09-12")]
119    O1Mini20240912,
120    #[serde(rename = "gpt-4o")]
121    Gpt4o,
122    #[serde(rename = "gpt-4o-2024-11-20")]
123    Gpt4o20241120,
124    #[serde(rename = "gpt-4o-2024-08-06")]
125    Gpt4o20240806,
126    #[serde(rename = "gpt-4o-2024-05-13")]
127    Gpt4o20240513,
128    #[serde(rename = "gpt-4o-audio-preview")]
129    Gpt4oAudioPreview,
130    #[serde(rename = "gpt-4o-audio-preview-2024-10-01")]
131    Gpt4oAudioPreview20241001,
132    #[serde(rename = "gpt-4o-audio-preview-2024-12-17")]
133    Gpt4oAudioPreview20241217,
134    #[serde(rename = "gpt-4o-audio-preview-2025-06-03")]
135    Gpt4oAudioPreview20250603,
136    #[serde(rename = "gpt-4o-mini-audio-preview")]
137    Gpt4oMiniAudioPreview,
138    #[serde(rename = "gpt-4o-mini-audio-preview-2024-12-17")]
139    Gpt4oMiniAudioPreview20241217,
140    #[serde(rename = "gpt-4o-search-preview")]
141    Gpt4oSearchPreview,
142    #[serde(rename = "gpt-4o-mini-search-preview")]
143    Gpt4oMiniSearchPreview,
144    #[serde(rename = "gpt-4o-search-preview-2025-03-11")]
145    Gpt4oSearchPreview20250311,
146    #[serde(rename = "gpt-4o-mini-search-preview-2025-03-11")]
147    Gpt4oMiniSearchPreview20250311,
148    #[serde(rename = "chatgpt-4o-latest")]
149    ChatGpt4oLatest,
150    #[serde(rename = "codex-mini-latest")]
151    CodexMiniLatest,
152    #[serde(rename = "gpt-4o-mini")]
153    Gpt4oMini,
154    #[serde(rename = "gpt-4o-mini-2024-07-18")]
155    Gpt4oMini20240718,
156    #[serde(rename = "gpt-4-turbo")]
157    Gpt4Turbo,
158    #[serde(rename = "gpt-4-turbo-2024-04-09")]
159    Gpt4Turbo20240409,
160    #[serde(rename = "gpt-4-0125-preview")]
161    Gpt40125Preview,
162    #[serde(rename = "gpt-4-turbo-preview")]
163    Gpt4TurboPreview,
164    #[serde(rename = "gpt-4-1106-preview")]
165    Gpt41106Preview,
166    #[serde(rename = "gpt-4-vision-preview")]
167    Gpt4VisionPreview,
168    #[serde(rename = "gpt-4")]
169    Gpt4,
170    #[serde(rename = "gpt-4-0314")]
171    Gpt40314,
172    #[serde(rename = "gpt-4-0613")]
173    Gpt40613,
174    #[serde(rename = "gpt-4-32k")]
175    Gpt432k,
176    #[serde(rename = "gpt-4-32k-0314")]
177    Gpt432k0314,
178    #[serde(rename = "gpt-4-32k-0613")]
179    Gpt432k0613,
180    #[serde(rename = "gpt-3.5-turbo")]
181    Gpt35Turbo,
182    #[serde(rename = "gpt-3.5-turbo-16k")]
183    Gpt35Turbo16k,
184    #[serde(rename = "gpt-3.5-turbo-0301")]
185    Gpt35Turbo0301,
186    #[serde(rename = "gpt-3.5-turbo-0613")]
187    Gpt35Turbo0613,
188    #[serde(rename = "gpt-3.5-turbo-1106")]
189    Gpt35Turbo1106,
190    #[serde(rename = "gpt-3.5-turbo-0125")]
191    Gpt35Turbo0125,
192    #[serde(rename = "gpt-3.5-turbo-16k-0613")]
193    Gpt35Turbo16k0613,
194    #[serde(rename = "o1-pro")]
195    O1Pro,
196    #[serde(rename = "o1-pro-2025-03-19")]
197    O1Pro20250319,
198    #[serde(rename = "o3-pro")]
199    O3Pro,
200    #[serde(rename = "o3-pro-2025-06-10")]
201    O3Pro20250610,
202    #[serde(rename = "o3-deep-research")]
203    O3DeepResearch,
204    #[serde(rename = "o3-deep-research-2025-06-26")]
205    O3DeepResearch20250626,
206    #[serde(rename = "o4-mini-deep-research")]
207    O4MiniDeepResearch,
208    #[serde(rename = "o4-mini-deep-research-2025-06-26")]
209    O4MiniDeepResearch20250626,
210    #[serde(rename = "computer-use-preview")]
211    ComputerUsePreview,
212    #[serde(rename = "computer-use-preview-2025-03-11")]
213    ComputerUsePreview20250311,
214    #[serde(rename = "gpt-5-codex")]
215    Gpt5Codex,
216    #[serde(rename = "gpt-5-pro")]
217    Gpt5Pro,
218    #[serde(rename = "gpt-5-pro-2025-10-06")]
219    Gpt5Pro20251006,
220    #[serde(rename = "gpt-5.1-codex-max")]
221    Gpt51CodexMax,
222    #[serde(rename = "text-embedding-ada-002")]
223    TextEmbeddingAda002,
224    #[serde(rename = "text-embedding-3-small")]
225    TextEmbedding3Small,
226    #[serde(rename = "text-embedding-3-large")]
227    TextEmbedding3Large,
228    #[serde(rename = "whisper-1")]
229    Whisper1,
230    #[serde(rename = "gpt-transcribe")]
231    GptTranscribe,
232    #[serde(rename = "gpt-4o-transcribe")]
233    Gpt4oTranscribe,
234    #[serde(rename = "gpt-4o-mini-transcribe")]
235    Gpt4oMiniTranscribe,
236    #[serde(rename = "gpt-4o-mini-transcribe-2025-12-15")]
237    Gpt4oMiniTranscribe20251215,
238    #[serde(rename = "gpt-4o-transcribe-diarize")]
239    Gpt4oTranscribeDiarize,
240    #[serde(rename = "tts-1")]
241    Tts1,
242    #[serde(rename = "tts-1-hd")]
243    Tts1Hd,
244    #[serde(rename = "gpt-4o-mini-tts")]
245    Gpt4oMiniTts,
246    #[serde(rename = "gpt-4o-mini-tts-2025-12-15")]
247    Gpt4oMiniTts20251215,
248    #[serde(rename = "gpt-image-1.5")]
249    GptImage15,
250    #[serde(rename = "dall-e-2")]
251    DallE2,
252    #[serde(rename = "dall-e-3")]
253    DallE3,
254    #[serde(rename = "gpt-image-1")]
255    GptImage1,
256    #[serde(rename = "gpt-image-1-mini")]
257    GptImage1Mini,
258    #[serde(rename = "chatgpt-image-latest")]
259    ChatGptImageLatest,
260    #[serde(rename = "omni-moderation-latest")]
261    OmniModerationLatest,
262}