gproxy_protocol/openai/common/
model_ids.rs1use 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}