mindcontrol_types/
openai.rs

1use litty::literal;
2use serde::{Deserialize, Serialize};
3use std::collections::BTreeMap;
4
5/// OpenAI model identifier.
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7#[serde(untagged)]
8pub enum OpenAIModelV1 {
9    Gpt4o(OpenAiModelV1Gpt4o),
10    Gpt4o20241120(OpenAiModelV1Gpt4o20241120),
11    Gpt4o20240806(OpenAiModelV1Gpt4o20240806),
12    Gpt4o20240513(OpenAiModelV1Gpt4o20240513),
13    Chatgpt4oLatest(OpenAiModelV1Chatgpt4oLatest),
14    Gpt4oMini(OpenAiModelV1Gpt4oMini),
15    Gpt4oMini20240718(OpenAiModelV1Gpt4oMini20240718),
16    O1(OpenAiModelV1O1),
17    O120241217(OpenAiModelV1O120241217),
18    O1Mini(OpenAiModelV1O1Mini),
19    O1Mini20240912(OpenAiModelV1O1Mini20240912),
20    O1Preview(OpenAiModelV1O1Preview),
21    O1Preview20240912(OpenAiModelV1O1Preview20240912),
22    O3Mini(OpenAiModelV1O3Mini),
23    O3Mini20250131(OpenAiModelV1O3Mini20250131),
24    Gpt4Turbo(OpenAiModelV1Gpt4Turbo),
25    Gpt4Turbo20240409(OpenAiModelV1Gpt4Turbo20240409),
26    Gpt4TurboPreview(OpenAiModelV1Gpt4TurboPreview),
27    Gpt40125Preview(OpenAiModelV1Gpt40125Preview),
28    Gpt41106Preview(OpenAiModelV1Gpt41106Preview),
29    Gpt4(OpenAiModelV1Gpt4),
30    Gpt40613(OpenAiModelV1Gpt40613),
31    Gpt40314(OpenAiModelV1Gpt40314),
32    Gpt35Turbo(OpenAiModelV1Gpt35Turbo),
33    Gpt35Turbo0125(OpenAiModelV1Gpt35Turbo0125),
34    Gpt35Turbo1106(OpenAiModelV1Gpt35Turbo1106),
35    String(String),
36}
37
38#[literal("gpt-4o")]
39pub struct OpenAiModelV1Gpt4o;
40
41#[literal("gpt-4o-2024-11-20")]
42pub struct OpenAiModelV1Gpt4o20241120;
43
44#[literal("gpt-4o-2024-08-06")]
45pub struct OpenAiModelV1Gpt4o20240806;
46
47#[literal("gpt-4o-2024-05-13")]
48pub struct OpenAiModelV1Gpt4o20240513;
49
50#[literal("chatgpt-4o-latest")]
51pub struct OpenAiModelV1Chatgpt4oLatest;
52
53#[literal("gpt-4o-mini")]
54pub struct OpenAiModelV1Gpt4oMini;
55
56#[literal("gpt-4o-mini-2024-07-18")]
57pub struct OpenAiModelV1Gpt4oMini20240718;
58
59#[literal("o1")]
60pub struct OpenAiModelV1O1;
61
62#[literal("o1-2024-12-17")]
63pub struct OpenAiModelV1O120241217;
64
65#[literal("o1-mini")]
66pub struct OpenAiModelV1O1Mini;
67
68#[literal("o1-mini-2024-09-12")]
69pub struct OpenAiModelV1O1Mini20240912;
70
71#[literal("o1-preview")]
72pub struct OpenAiModelV1O1Preview;
73
74#[literal("o1-preview-2024-09-12")]
75pub struct OpenAiModelV1O1Preview20240912;
76
77#[literal("o3-mini")]
78pub struct OpenAiModelV1O3Mini;
79
80#[literal("o3-mini-2025-01-31")]
81pub struct OpenAiModelV1O3Mini20250131;
82
83#[literal("gpt-4-turbo")]
84pub struct OpenAiModelV1Gpt4Turbo;
85
86#[literal("gpt-4-turbo-2024-04-09")]
87pub struct OpenAiModelV1Gpt4Turbo20240409;
88
89#[literal("gpt-4-turbo-preview")]
90pub struct OpenAiModelV1Gpt4TurboPreview;
91
92#[literal("gpt-4-0125-preview")]
93pub struct OpenAiModelV1Gpt40125Preview;
94
95#[literal("gpt-4-1106-preview")]
96pub struct OpenAiModelV1Gpt41106Preview;
97
98#[literal("gpt-4")]
99pub struct OpenAiModelV1Gpt4;
100
101#[literal("gpt-4-0613")]
102pub struct OpenAiModelV1Gpt40613;
103
104#[literal("gpt-4-0314")]
105pub struct OpenAiModelV1Gpt40314;
106
107#[literal("gpt-3.5-turbo")]
108pub struct OpenAiModelV1Gpt35Turbo;
109
110#[literal("gpt-3.5-turbo-0125")]
111pub struct OpenAiModelV1Gpt35Turbo0125;
112
113#[literal("gpt-3.5-turbo-1106")]
114pub struct OpenAiModelV1Gpt35Turbo1106;
115
116/// OpenAI model settings.
117#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
118pub struct OpenAISettingsV1 {
119    /// Settings type.
120    pub r#type: OpenAiSettingsV1TypeOpenai,
121    /// Model identifier.
122    pub model: Option<OpenAIModelV1>,
123}
124
125#[literal("openai")]
126pub struct OpenAiSettingsV1TypeOpenai;
127
128/// OpenAI provider enum.
129#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
130#[serde(untagged)]
131pub enum OpenAIProvider {
132    Openai(OpenAiProviderOpenai),
133    Azure(OpenAiProviderAzure),
134}
135
136#[literal("openai")]
137pub struct OpenAiProviderOpenai;
138
139#[literal("azure")]
140pub struct OpenAiProviderAzure;
141
142/// OpenAI provider settings.
143#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
144pub struct OpenAIProviderSettingsV1 {
145    pub default: Option<OpenAIProvider>,
146    pub models: Option<BTreeMap<String, OpenAIProvider>>,
147}