1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct AzureOpenAiCredential {
16 #[serde(rename = "provider")]
17 pub provider: ProviderTrue,
18 #[serde(rename = "region")]
19 pub region: RegionTrue,
20 #[serde(rename = "models")]
21 pub models: Vec<ModelsTrue>,
22 #[serde(rename = "openAIKey")]
24 pub open_ai_key: String,
25 #[serde(
27 rename = "ocpApimSubscriptionKey",
28 skip_serializing_if = "Option::is_none"
29 )]
30 pub ocp_apim_subscription_key: Option<String>,
31 #[serde(rename = "id")]
33 pub id: String,
34 #[serde(rename = "orgId")]
36 pub org_id: String,
37 #[serde(rename = "createdAt")]
39 pub created_at: String,
40 #[serde(rename = "updatedAt")]
42 pub updated_at: String,
43 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
45 pub name: Option<String>,
46 #[serde(rename = "openAIEndpoint")]
47 pub open_ai_endpoint: String,
48}
49
50impl AzureOpenAiCredential {
51 pub fn new(
52 provider: ProviderTrue,
53 region: RegionTrue,
54 models: Vec<ModelsTrue>,
55 open_ai_key: String,
56 id: String,
57 org_id: String,
58 created_at: String,
59 updated_at: String,
60 open_ai_endpoint: String,
61 ) -> AzureOpenAiCredential {
62 AzureOpenAiCredential {
63 provider,
64 region,
65 models,
66 open_ai_key,
67 ocp_apim_subscription_key: None,
68 id,
69 org_id,
70 created_at,
71 updated_at,
72 name: None,
73 open_ai_endpoint,
74 }
75 }
76}
77#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
79pub enum ProviderTrue {
80 #[serde(rename = "azure-openai")]
81 AzureOpenai,
82}
83
84impl Default for ProviderTrue {
85 fn default() -> ProviderTrue {
86 Self::AzureOpenai
87 }
88}
89#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
91pub enum RegionTrue {
92 #[serde(rename = "australia")]
93 Australia,
94 #[serde(rename = "canadaeast")]
95 Canadaeast,
96 #[serde(rename = "canadacentral")]
97 Canadacentral,
98 #[serde(rename = "eastus2")]
99 Eastus2,
100 #[serde(rename = "eastus")]
101 Eastus,
102 #[serde(rename = "france")]
103 France,
104 #[serde(rename = "india")]
105 India,
106 #[serde(rename = "japaneast")]
107 Japaneast,
108 #[serde(rename = "japanwest")]
109 Japanwest,
110 #[serde(rename = "uaenorth")]
111 Uaenorth,
112 #[serde(rename = "northcentralus")]
113 Northcentralus,
114 #[serde(rename = "norway")]
115 Norway,
116 #[serde(rename = "southcentralus")]
117 Southcentralus,
118 #[serde(rename = "swedencentral")]
119 Swedencentral,
120 #[serde(rename = "switzerland")]
121 Switzerland,
122 #[serde(rename = "uk")]
123 Uk,
124 #[serde(rename = "westus")]
125 Westus,
126 #[serde(rename = "westus3")]
127 Westus3,
128}
129
130impl Default for RegionTrue {
131 fn default() -> RegionTrue {
132 Self::Australia
133 }
134}
135#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
137pub enum ModelsTrue {
138 #[serde(rename = "gpt-4.1-2025-04-14")]
139 Gpt4Period120250414,
140 #[serde(rename = "gpt-4.1-mini-2025-04-14")]
141 Gpt4Period1Mini20250414,
142 #[serde(rename = "gpt-4.1-nano-2025-04-14")]
143 Gpt4Period1Nano20250414,
144 #[serde(rename = "gpt-4o-2024-11-20")]
145 Gpt4o20241120,
146 #[serde(rename = "gpt-4o-2024-08-06")]
147 Gpt4o20240806,
148 #[serde(rename = "gpt-4o-2024-05-13")]
149 Gpt4o20240513,
150 #[serde(rename = "gpt-4o-mini-2024-07-18")]
151 Gpt4oMini20240718,
152 #[serde(rename = "gpt-4-turbo-2024-04-09")]
153 Gpt4Turbo20240409,
154 #[serde(rename = "gpt-4-0125-preview")]
155 Gpt40125Preview,
156 #[serde(rename = "gpt-4-1106-preview")]
157 Gpt41106Preview,
158 #[serde(rename = "gpt-4-0613")]
159 Gpt40613,
160 #[serde(rename = "gpt-35-turbo-0125")]
161 Gpt35Turbo0125,
162 #[serde(rename = "gpt-35-turbo-1106")]
163 Gpt35Turbo1106,
164}
165
166impl Default for ModelsTrue {
167 fn default() -> ModelsTrue {
168 Self::Gpt4Period120250414
169 }
170}