1use serde::{Deserialize, Serialize};
12use utoipa::ToSchema;
13
14
15use crate::models;
16
17#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, ToSchema)]
18pub struct CreateAzureOpenAiCredentialDto {
19 #[serde(rename = "provider")]
20 pub provider: Provider,
21 #[serde(rename = "region")]
22 pub region: Region,
23 #[serde(rename = "models")]
24 pub models: Vec<Models>,
25 #[serde(rename = "openAIKey")]
27 pub open_ai_key: String,
28 #[serde(
30 rename = "ocpApimSubscriptionKey",
31 skip_serializing_if = "Option::is_none"
32 )]
33 pub ocp_apim_subscription_key: Option<String>,
34 #[serde(rename = "openAIEndpoint")]
35 pub open_ai_endpoint: String,
36 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
38 pub name: Option<String>,
39}
40
41impl CreateAzureOpenAiCredentialDto {
42 pub fn new(
43 provider: Provider,
44 region: Region,
45 models: Vec<Models>,
46 open_ai_key: String,
47 open_ai_endpoint: String,
48 ) -> CreateAzureOpenAiCredentialDto {
49 CreateAzureOpenAiCredentialDto {
50 provider,
51 region,
52 models,
53 open_ai_key,
54 ocp_apim_subscription_key: None,
55 open_ai_endpoint,
56 name: None,
57 }
58 }
59}
60#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, ToSchema)]
62pub enum Provider {
63 #[serde(rename = "azure-openai")]
64 AzureOpenai,
65}
66
67impl Default for Provider {
68 fn default() -> Provider {
69 Self::AzureOpenai
70 }
71}
72#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, ToSchema)]
74pub enum Region {
75 #[serde(rename = "australia")]
76 Australia,
77 #[serde(rename = "canadaeast")]
78 Canadaeast,
79 #[serde(rename = "canadacentral")]
80 Canadacentral,
81 #[serde(rename = "eastus2")]
82 Eastus2,
83 #[serde(rename = "eastus")]
84 Eastus,
85 #[serde(rename = "france")]
86 France,
87 #[serde(rename = "india")]
88 India,
89 #[serde(rename = "japaneast")]
90 Japaneast,
91 #[serde(rename = "japanwest")]
92 Japanwest,
93 #[serde(rename = "uaenorth")]
94 Uaenorth,
95 #[serde(rename = "northcentralus")]
96 Northcentralus,
97 #[serde(rename = "norway")]
98 Norway,
99 #[serde(rename = "southcentralus")]
100 Southcentralus,
101 #[serde(rename = "swedencentral")]
102 Swedencentral,
103 #[serde(rename = "switzerland")]
104 Switzerland,
105 #[serde(rename = "uk")]
106 Uk,
107 #[serde(rename = "westus")]
108 Westus,
109 #[serde(rename = "westus3")]
110 Westus3,
111}
112
113impl Default for Region {
114 fn default() -> Region {
115 Self::Australia
116 }
117}
118#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, ToSchema)]
120pub enum Models {
121 #[serde(rename = "gpt-4o-2024-08-06")]
122 Gpt4o20240806,
123 #[serde(rename = "gpt-4o-mini-2024-07-18")]
124 Gpt4oMini20240718,
125 #[serde(rename = "gpt-4o-2024-05-13")]
126 Gpt4o20240513,
127 #[serde(rename = "gpt-4-turbo-2024-04-09")]
128 Gpt4Turbo20240409,
129 #[serde(rename = "gpt-4-0125-preview")]
130 Gpt40125Preview,
131 #[serde(rename = "gpt-4-1106-preview")]
132 Gpt41106Preview,
133 #[serde(rename = "gpt-4-0613")]
134 Gpt40613,
135 #[serde(rename = "gpt-35-turbo-0125")]
136 Gpt35Turbo0125,
137 #[serde(rename = "gpt-35-turbo-1106")]
138 Gpt35Turbo1106,
139}
140
141impl Default for Models {
142 fn default() -> Models {
143 Self::Gpt4o20240806
144 }
145}