1use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum CreateChatCompletionSuccess {
22 Status200(models::CreateChatCompletion200Response),
23 UnknownValue(serde_json::Value),
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum CreateCompletionSuccess {
30 Status200(models::CreateCompletion200Response),
31 UnknownValue(serde_json::Value),
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(untagged)]
37pub enum ListModelsSuccess {
38 Status200(models::ModelList),
39 UnknownValue(serde_json::Value),
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(untagged)]
45pub enum RetrieveModelSuccess {
46 Status200(models::Model),
47 UnknownValue(serde_json::Value),
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
52#[serde(untagged)]
53pub enum CreateChatCompletionError {
54 Status400(models::ErrorDetail),
55 Status401(models::ErrorDetail),
56 Status422(models::ErrorDetail),
57 Status429(models::ErrorDetail),
58 Status500(models::ErrorDetail),
59 UnknownValue(serde_json::Value),
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
64#[serde(untagged)]
65pub enum CreateCompletionError {
66 Status400(models::ErrorDetail),
67 Status401(models::ErrorDetail),
68 Status422(models::ErrorDetail),
69 Status429(models::ErrorDetail),
70 Status500(models::ErrorDetail),
71 UnknownValue(serde_json::Value),
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum ListModelsError {
78 Status401(models::ErrorDetail),
79 Status429(models::ErrorDetail),
80 Status500(models::ErrorDetail),
81 UnknownValue(serde_json::Value),
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
86#[serde(untagged)]
87pub enum RetrieveModelError {
88 Status401(models::ErrorDetail),
89 Status404(models::ErrorDetail),
90 Status429(models::ErrorDetail),
91 Status500(models::ErrorDetail),
92 UnknownValue(serde_json::Value),
93}
94
95
96pub async fn create_chat_completion(configuration: &configuration::Configuration, chat_completion_request: models::ChatCompletionRequest) -> Result<ResponseContent<CreateChatCompletionSuccess>, Error<CreateChatCompletionError>> {
98 let p_chat_completion_request = chat_completion_request;
100
101 let uri_str = format!("{}/chat/completions", configuration.base_path);
102 let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
103
104 if let Some(ref user_agent) = configuration.user_agent {
105 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
106 }
107 if let Some(ref token) = configuration.bearer_access_token {
108 req_builder = req_builder.bearer_auth(token.to_owned());
109 };
110 req_builder = req_builder.json(&p_chat_completion_request);
111
112 let req = req_builder.build()?;
113 let resp = configuration.client.execute(req).await?;
114
115 let status = resp.status();
116
117 if !status.is_client_error() && !status.is_server_error() {
118 let content = resp.text().await?;
119 let entity: Option<CreateChatCompletionSuccess> = serde_json::from_str(&content).ok();
120 Ok(ResponseContent { status, content, entity })
121 } else {
122 let content = resp.text().await?;
123 let entity: Option<CreateChatCompletionError> = serde_json::from_str(&content).ok();
124 Err(Error::ResponseError(ResponseContent { status, content, entity }))
125 }
126}
127
128pub async fn create_completion(configuration: &configuration::Configuration, completion_request: models::CompletionRequest) -> Result<ResponseContent<CreateCompletionSuccess>, Error<CreateCompletionError>> {
130 let p_completion_request = completion_request;
132
133 let uri_str = format!("{}/completions", configuration.base_path);
134 let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
135
136 if let Some(ref user_agent) = configuration.user_agent {
137 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
138 }
139 if let Some(ref token) = configuration.bearer_access_token {
140 req_builder = req_builder.bearer_auth(token.to_owned());
141 };
142 req_builder = req_builder.json(&p_completion_request);
143
144 let req = req_builder.build()?;
145 let resp = configuration.client.execute(req).await?;
146
147 let status = resp.status();
148
149 if !status.is_client_error() && !status.is_server_error() {
150 let content = resp.text().await?;
151 let entity: Option<CreateCompletionSuccess> = serde_json::from_str(&content).ok();
152 Ok(ResponseContent { status, content, entity })
153 } else {
154 let content = resp.text().await?;
155 let entity: Option<CreateCompletionError> = serde_json::from_str(&content).ok();
156 Err(Error::ResponseError(ResponseContent { status, content, entity }))
157 }
158}
159
160pub async fn list_models(configuration: &configuration::Configuration, ) -> Result<ResponseContent<ListModelsSuccess>, Error<ListModelsError>> {
162
163 let uri_str = format!("{}/models", configuration.base_path);
164 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
165
166 if let Some(ref user_agent) = configuration.user_agent {
167 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
168 }
169 if let Some(ref token) = configuration.bearer_access_token {
170 req_builder = req_builder.bearer_auth(token.to_owned());
171 };
172
173 let req = req_builder.build()?;
174 let resp = configuration.client.execute(req).await?;
175
176 let status = resp.status();
177
178 if !status.is_client_error() && !status.is_server_error() {
179 let content = resp.text().await?;
180 let entity: Option<ListModelsSuccess> = serde_json::from_str(&content).ok();
181 Ok(ResponseContent { status, content, entity })
182 } else {
183 let content = resp.text().await?;
184 let entity: Option<ListModelsError> = serde_json::from_str(&content).ok();
185 Err(Error::ResponseError(ResponseContent { status, content, entity }))
186 }
187}
188
189pub async fn retrieve_model(configuration: &configuration::Configuration, model: models::ModelIdentifier) -> Result<ResponseContent<RetrieveModelSuccess>, Error<RetrieveModelError>> {
191 let p_model = model;
193
194 let uri_str = format!("{}/models/{model}", configuration.base_path, model=p_model.to_string());
195 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
196
197 if let Some(ref user_agent) = configuration.user_agent {
198 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
199 }
200 if let Some(ref token) = configuration.bearer_access_token {
201 req_builder = req_builder.bearer_auth(token.to_owned());
202 };
203
204 let req = req_builder.build()?;
205 let resp = configuration.client.execute(req).await?;
206
207 let status = resp.status();
208
209 if !status.is_client_error() && !status.is_server_error() {
210 let content = resp.text().await?;
211 let entity: Option<RetrieveModelSuccess> = serde_json::from_str(&content).ok();
212 Ok(ResponseContent { status, content, entity })
213 } else {
214 let content = resp.text().await?;
215 let entity: Option<RetrieveModelError> = serde_json::from_str(&content).ok();
216 Err(Error::ResponseError(ResponseContent { status, content, entity }))
217 }
218}
219