1#![allow(unused_imports)]
5
6use serde::{Deserialize, Serialize};
7use super::*;
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
11#[non_exhaustive]
12pub enum ChatCompletionChoiceFinishReason {
13 #[serde(rename = "stop")]
14 Stop,
15 #[serde(rename = "length")]
16 Length,
17 #[serde(rename = "tool_calls")]
18 ToolCalls,
19 #[serde(rename = "content_filter")]
20 ContentFilter,
21 #[serde(rename = "function_call")]
22 FunctionCall,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
27#[non_exhaustive]
28pub enum ChatCompletionServiceTier {
29 #[serde(rename = "auto")]
30 Auto,
31 #[serde(rename = "default")]
32 Default,
33 #[serde(rename = "flex")]
34 Flex,
35 #[serde(rename = "scale")]
36 Scale,
37 #[serde(rename = "priority")]
38 Priority,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
44pub struct ChatCompletion {
45 pub id: String,
47 pub choices: Vec<serde_json::Value>,
49 pub created: i64,
51 pub model: String,
53 pub object: String,
55 #[serde(skip_serializing_if = "Option::is_none", default)]
57 pub service_tier: Option<ChatCompletionServiceTier>,
58 #[serde(skip_serializing_if = "Option::is_none", default)]
60 pub system_fingerprint: Option<String>,
61 #[serde(skip_serializing_if = "Option::is_none", default)]
63 pub usage: Option<serde_json::Value>,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
68#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
69pub struct ChatCompletionAudio {
70 pub id: String,
72 pub data: String,
74 pub expires_at: i64,
76 pub transcript: String,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
82#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
83pub struct ChoiceDeltaFunctionCall {
84 #[serde(skip_serializing_if = "Option::is_none", default)]
86 pub arguments: Option<String>,
87 #[serde(skip_serializing_if = "Option::is_none", default)]
89 pub name: Option<String>,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
93#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
94pub struct ChoiceDeltaToolCallFunction {
95 #[serde(skip_serializing_if = "Option::is_none", default)]
97 pub arguments: Option<String>,
98 #[serde(skip_serializing_if = "Option::is_none", default)]
100 pub name: Option<String>,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
105pub struct ChoiceDeltaToolCall {
106 pub index: i64,
107 #[serde(skip_serializing_if = "Option::is_none", default)]
109 pub id: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none", default)]
111 pub function: Option<ChoiceDeltaToolCallFunction>,
112 #[serde(rename = "type", skip_serializing_if = "Option::is_none", default)]
114 pub type_: Option<String>,
115}
116
117#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
118#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
119#[non_exhaustive]
120pub enum ChoiceDeltaRole {
121 #[serde(rename = "developer")]
122 Developer,
123 #[serde(rename = "system")]
124 System,
125 #[serde(rename = "user")]
126 User,
127 #[serde(rename = "assistant")]
128 Assistant,
129 #[serde(rename = "tool")]
130 Tool,
131}
132
133#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
134#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
135#[non_exhaustive]
136pub enum ChunkChoiceFinishReason {
137 #[serde(rename = "stop")]
138 Stop,
139 #[serde(rename = "length")]
140 Length,
141 #[serde(rename = "tool_calls")]
142 ToolCalls,
143 #[serde(rename = "content_filter")]
144 ContentFilter,
145 #[serde(rename = "function_call")]
146 FunctionCall,
147}
148
149#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
150#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
151#[non_exhaustive]
152pub enum ChatCompletionChunkServiceTier {
153 #[serde(rename = "auto")]
154 Auto,
155 #[serde(rename = "default")]
156 Default,
157 #[serde(rename = "flex")]
158 Flex,
159 #[serde(rename = "scale")]
160 Scale,
161 #[serde(rename = "priority")]
162 Priority,
163}
164
165#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
166#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
167#[non_exhaustive]
168pub enum ImageURLDetail {
169 #[serde(rename = "auto")]
170 Auto,
171 #[serde(rename = "low")]
172 Low,
173 #[serde(rename = "high")]
174 High,
175}
176
177#[derive(Debug, Clone, Serialize, Deserialize)]
178#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
179pub struct ImageURL {
180 pub url: String,
182 #[serde(skip_serializing_if = "Option::is_none", default)]
184 pub detail: Option<ImageURLDetail>,
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
189#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
190pub struct ChatCompletionContentPartImage {
191 pub image_url: ImageURL,
192 #[serde(rename = "type")]
194 pub type_: String,
195}
196
197#[derive(Debug, Clone, Serialize, Deserialize)]
199#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
200pub struct ChatCompletionContentPartText {
201 pub text: String,
203 #[serde(rename = "type")]
205 pub type_: String,
206}
207
208#[derive(Debug, Clone, Serialize, Deserialize)]
209#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
210pub struct ChatCompletionDeleted {
211 pub id: String,
213 pub deleted: bool,
215 pub object: String,
217}
218
219#[derive(Debug, Clone, Serialize, Deserialize)]
221#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
222pub struct ChatCompletionFunctionTool {
223 pub function: serde_json::Value,
224 #[serde(rename = "type")]
226 pub type_: String,
227}
228
229#[derive(Debug, Clone, Serialize, Deserialize)]
231#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
232pub struct AnnotationURLCitation {
233 pub end_index: i64,
235 pub start_index: i64,
237 pub title: String,
239 pub url: String,
241}
242
243#[derive(Debug, Clone, Serialize, Deserialize)]
245#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
246pub struct Custom {
247 pub input: String,
249 pub name: String,
251}
252
253#[derive(Debug, Clone, Serialize, Deserialize)]
255#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
256pub struct ChatCompletionMessageCustomToolCall {
257 pub id: String,
259 pub custom: Custom,
261 #[serde(rename = "type")]
263 pub type_: String,
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize)]
268#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
269pub struct MessageFunctionFunction {
270 pub arguments: String,
272 pub name: String,
274}
275
276#[derive(Debug, Clone, Serialize, Deserialize)]
278#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
279pub struct ChatCompletionMessageFunctionToolCall {
280 pub id: String,
282 pub function: serde_json::Value,
284 #[serde(rename = "type")]
286 pub type_: String,
287}
288
289pub type ChatCompletionMessageToolCallUnion = serde_json::Value;
290
291pub type ChatCompletionMessageToolCall = ChatCompletionMessageFunctionToolCall;
292
293#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
294#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
295#[non_exhaustive]
296pub enum ChatCompletionModality {
297 #[serde(rename = "text")]
298 Text,
299 #[serde(rename = "audio")]
300 Audio,
301}
302
303#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
304#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
305#[non_exhaustive]
306pub enum ChatCompletionRole {
307 #[serde(rename = "developer")]
308 Developer,
309 #[serde(rename = "system")]
310 System,
311 #[serde(rename = "user")]
312 User,
313 #[serde(rename = "assistant")]
314 Assistant,
315 #[serde(rename = "tool")]
316 Tool,
317 #[serde(rename = "function")]
318 Function,
319}
320
321pub type ChatCompletionStoreMessageContentPart = serde_json::Value;
322
323#[derive(Debug, Clone, Serialize, Deserialize)]
324#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
325pub struct ChatCompletionTokenLogprob {
326 pub token: String,
328 #[serde(skip_serializing_if = "Option::is_none", default)]
330 pub bytes: Option<Vec<i64>>,
331 pub logprob: f64,
333 pub top_logprobs: Vec<TopLogprob>,
335}
336
337#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
338#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
339#[non_exhaustive]
340pub enum CompletionCreateParamsBasePromptCacheRetention {
341 #[serde(rename = "in-memory")]
342 InMemory,
343 #[serde(rename = "24h")]
344 V24h,
345}
346
347#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
348#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
349#[non_exhaustive]
350pub enum CompletionCreateParamsBaseServiceTier {
351 #[serde(rename = "auto")]
352 Auto,
353 #[serde(rename = "default")]
354 Default,
355 #[serde(rename = "flex")]
356 Flex,
357 #[serde(rename = "scale")]
358 Scale,
359 #[serde(rename = "priority")]
360 Priority,
361}
362
363#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
364#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
365#[non_exhaustive]
366pub enum CompletionCreateParamsBaseVerbosity {
367 #[serde(rename = "low")]
368 Low,
369 #[serde(rename = "medium")]
370 Medium,
371 #[serde(rename = "high")]
372 High,
373}
374
375#[derive(Debug, Clone, Serialize, Deserialize)]
376#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
377pub struct CompletionCreateParamsBase {
378 pub messages: Vec<serde_json::Value>,
380 pub model: String,
382 #[serde(skip_serializing_if = "Option::is_none", default)]
384 pub audio: Option<serde_json::Value>,
385 #[serde(skip_serializing_if = "Option::is_none", default)]
387 pub frequency_penalty: Option<f64>,
388 #[serde(skip_serializing_if = "Option::is_none", default)]
390 pub function_call: Option<FunctionCall>,
391 #[serde(skip_serializing_if = "Option::is_none", default)]
393 pub functions: Option<Vec<serde_json::Value>>,
394 #[serde(skip_serializing_if = "Option::is_none", default)]
396 pub logit_bias: Option<std::collections::HashMap<String, i64>>,
397 #[serde(skip_serializing_if = "Option::is_none", default)]
399 pub logprobs: Option<bool>,
400 #[serde(skip_serializing_if = "Option::is_none", default)]
402 pub max_completion_tokens: Option<i64>,
403 #[serde(skip_serializing_if = "Option::is_none", default)]
405 pub max_tokens: Option<i64>,
406 #[serde(skip_serializing_if = "Option::is_none", default)]
408 pub metadata: Option<serde_json::Value>,
409 #[serde(skip_serializing_if = "Option::is_none", default)]
411 pub modalities: Option<Vec<serde_json::Value>>,
412 #[serde(skip_serializing_if = "Option::is_none", default)]
414 pub n: Option<i64>,
415 #[serde(skip_serializing_if = "Option::is_none", default)]
417 pub parallel_tool_calls: Option<bool>,
418 #[serde(skip_serializing_if = "Option::is_none", default)]
420 pub prediction: Option<serde_json::Value>,
421 #[serde(skip_serializing_if = "Option::is_none", default)]
423 pub presence_penalty: Option<f64>,
424 #[serde(skip_serializing_if = "Option::is_none", default)]
426 pub prompt_cache_key: Option<String>,
427 #[serde(skip_serializing_if = "Option::is_none", default)]
429 pub prompt_cache_retention: Option<CompletionCreateParamsBasePromptCacheRetention>,
430 #[serde(skip_serializing_if = "Option::is_none", default)]
432 pub reasoning_effort: Option<serde_json::Value>,
433 #[serde(skip_serializing_if = "Option::is_none", default)]
435 pub response_format: Option<ResponseFormat>,
436 #[serde(skip_serializing_if = "Option::is_none", default)]
438 pub safety_identifier: Option<String>,
439 #[serde(skip_serializing_if = "Option::is_none", default)]
441 pub seed: Option<i64>,
442 #[serde(skip_serializing_if = "Option::is_none", default)]
444 pub service_tier: Option<CompletionCreateParamsBaseServiceTier>,
445 #[serde(skip_serializing_if = "Option::is_none", default)]
447 pub stop: Option<serde_json::Value>,
448 #[serde(skip_serializing_if = "Option::is_none", default)]
450 pub store: Option<bool>,
451 #[serde(skip_serializing_if = "Option::is_none", default)]
453 pub stream_options: Option<serde_json::Value>,
454 #[serde(skip_serializing_if = "Option::is_none", default)]
456 pub temperature: Option<f64>,
457 #[serde(skip_serializing_if = "Option::is_none", default)]
459 pub tool_choice: Option<serde_json::Value>,
460 #[serde(skip_serializing_if = "Option::is_none", default)]
462 pub tools: Option<Vec<serde_json::Value>>,
463 #[serde(skip_serializing_if = "Option::is_none", default)]
465 pub top_logprobs: Option<i64>,
466 #[serde(skip_serializing_if = "Option::is_none", default)]
468 pub top_p: Option<f64>,
469 #[serde(skip_serializing_if = "Option::is_none", default)]
471 pub user: Option<String>,
472 #[serde(skip_serializing_if = "Option::is_none", default)]
474 pub verbosity: Option<CompletionCreateParamsBaseVerbosity>,
475 #[serde(skip_serializing_if = "Option::is_none", default)]
477 pub web_search_options: Option<WebSearchOptions>,
478}
479
480#[derive(Debug, Clone, Serialize, Deserialize)]
481#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
482pub struct CompletionCreateFunction {
483 pub name: String,
485 #[serde(skip_serializing_if = "Option::is_none", default)]
487 pub description: Option<String>,
488 #[serde(skip_serializing_if = "Option::is_none", default)]
490 pub parameters: Option<serde_json::Value>,
491}
492
493#[derive(Debug, Clone, Serialize, Deserialize)]
495#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
496pub struct WebSearchOptionsUserLocationApproximate {
497 #[serde(skip_serializing_if = "Option::is_none", default)]
499 pub city: Option<String>,
500 #[serde(skip_serializing_if = "Option::is_none", default)]
502 pub country: Option<String>,
503 #[serde(skip_serializing_if = "Option::is_none", default)]
505 pub region: Option<String>,
506 #[serde(skip_serializing_if = "Option::is_none", default)]
508 pub timezone: Option<String>,
509}
510
511#[derive(Debug, Clone, Serialize, Deserialize)]
513#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
514pub struct WebSearchOptionsUserLocation {
515 pub approximate: WebSearchOptionsUserLocationApproximate,
517 #[serde(rename = "type")]
519 pub type_: String,
520}
521
522#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
523#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
524#[non_exhaustive]
525pub enum WebSearchOptionsSearchContextSize {
526 #[serde(rename = "low")]
527 Low,
528 #[serde(rename = "medium")]
529 Medium,
530 #[serde(rename = "high")]
531 High,
532}
533
534pub type CompletionCreateParams = serde_json::Value;
535
536#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
537#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
538#[non_exhaustive]
539pub enum CompletionListParamsOrder {
540 #[serde(rename = "asc")]
541 Asc,
542 #[serde(rename = "desc")]
543 Desc,
544}
545
546#[derive(Debug, Clone, Serialize, Deserialize)]
547#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
548pub struct CompletionListParams {
549 #[serde(skip_serializing_if = "Option::is_none", default)]
551 pub after: Option<String>,
552 #[serde(skip_serializing_if = "Option::is_none", default)]
554 pub limit: Option<i64>,
555 #[serde(skip_serializing_if = "Option::is_none", default)]
557 pub metadata: Option<serde_json::Value>,
558 #[serde(skip_serializing_if = "Option::is_none", default)]
560 pub model: Option<String>,
561 #[serde(skip_serializing_if = "Option::is_none", default)]
563 pub order: Option<CompletionListParamsOrder>,
564}
565
566#[derive(Debug, Clone, Serialize, Deserialize)]
567#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
568pub struct CompletionUpdateParams {
569 pub metadata: Option<serde_json::Value>,
571}