#![allow(clippy::enum_variant_names)]
#![allow(clippy::struct_field_names)]
#![allow(clippy::doc_markdown)]
#![allow(clippy::too_many_lines)]
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionRequestAllOf2 {
#[serde(skip_serializing_if = "Option::is_none")]
pub audio: Option<CreateChatCompletionRequestAllOf2Audio>,
#[serde(skip_serializing_if = "Option::is_none")]
pub frequency_penalty: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub function_call: Option<CreateChatCompletionRequestAllOf2FunctionCall>,
#[serde(skip_serializing_if = "Option::is_none")]
pub functions: Option<Vec<ChatCompletionFunctions>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub logit_bias: Option<HashMap<String, i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub logprobs: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_completion_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_tokens: Option<i64>,
pub messages: Vec<ChatCompletionRequestMessage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub modalities: Option<ResponseModalities>,
pub model: ModelIdsShared,
#[serde(skip_serializing_if = "Option::is_none")]
pub n: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parallel_tool_calls: Option<ParallelToolCalls>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prediction: Option<CreateChatCompletionRequestAllOf2Prediction>,
#[serde(skip_serializing_if = "Option::is_none")]
pub presence_penalty: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_effort: Option<ReasoningEffort>,
#[serde(skip_serializing_if = "Option::is_none")]
pub response_format: Option<CreateChatCompletionRequestAllOf2ResponseFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seed: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stop: Option<StopConfiguration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream_options: Option<ChatCompletionStreamOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_choice: Option<ChatCompletionToolChoiceOption>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<CreateChatCompletionRequestAllOf2ToolsItem>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_logprobs: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verbosity: Option<Verbosity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub web_search_options: Option<CreateChatCompletionRequestAllOf2WebSearchOptions>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionRequestAllOf2Audio {
pub format: CreateChatCompletionRequestAllOf2AudioFormat,
pub voice: VoiceIdsOrCustomVoice,
}
#[derive(Serialize, Deserialize)]
pub enum CreateChatCompletionRequestAllOf2AudioFormat {
#[serde(rename = "wav")]
Wav,
#[serde(rename = "aac")]
Aac,
#[serde(rename = "mp3")]
Mp3,
#[serde(rename = "flac")]
Flac,
#[serde(rename = "opus")]
Opus,
#[serde(rename = "pcm16")]
Pcm16,
}
pub type CreateChatCompletionRequestAllOf2FunctionCallString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateChatCompletionRequestAllOf2FunctionCall {
CreateChatCompletionRequestAllOf2FunctionCallString(
CreateChatCompletionRequestAllOf2FunctionCallString,
),
ChatCompletionFunctionCallOption(ChatCompletionFunctionCallOption),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CreateChatCompletionRequestAllOf2Prediction {
#[serde(rename = "content")]
Content(PredictionContent),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CreateChatCompletionRequestAllOf2ResponseFormat {
#[serde(rename = "text")]
Text(ResponseFormatText),
#[serde(rename = "json_schema")]
JsonSchema(ResponseFormatJsonSchema),
#[serde(rename = "json_object")]
JsonObject(ResponseFormatJsonObject),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CreateChatCompletionRequestAllOf2ToolsItem {
#[serde(rename = "function")]
Function(ChatCompletionTool),
#[serde(rename = "custom")]
Custom(CustomToolChatCompletions),
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionRequestAllOf2WebSearchOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub search_context_size: Option<WebSearchContextSize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_location: Option<CreateChatCompletionRequestAllOf2WebSearchOptionsUserLocation>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionRequestAllOf2WebSearchOptionsUserLocation {
pub approximate: WebSearchLocation,
pub r#type: CreateChatCompletionRequestAllOf2WebSearchOptionsUserLocationType,
}
#[derive(Serialize, Deserialize)]
pub enum CreateChatCompletionRequestAllOf2WebSearchOptionsUserLocationType {
#[serde(rename = "approximate")]
Approximate,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionRequest {
#[serde(flatten)]
pub create_model_response_properties: CreateModelResponseProperties,
#[serde(flatten)]
pub create_chat_completion_request_all_of_2: CreateChatCompletionRequestAllOf2,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionResponse {
pub choices: Vec<CreateChatCompletionResponseChoicesItem>,
pub created: i64,
pub id: String,
pub model: String,
pub object: CreateChatCompletionResponseObject,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_tier: Option<ServiceTier>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usage: Option<CompletionUsage>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionResponseChoicesItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub finish_reason: Option<CreateChatCompletionResponseChoicesItemFinishReason>,
pub index: i64,
pub logprobs: Option<CreateChatCompletionResponseChoicesItemLogprobs>,
pub message: ChatCompletionResponseMessage,
}
#[derive(Serialize, Deserialize)]
pub enum CreateChatCompletionResponseChoicesItemFinishReason {
#[serde(rename = "stop")]
Stop,
#[serde(rename = "length")]
Length,
#[serde(rename = "tool_calls")]
ToolCalls,
#[serde(rename = "content_filter")]
ContentFilter,
#[serde(rename = "function_call")]
FunctionCall,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionResponseChoicesItemLogprobs {
pub content: Option<Vec<ChatCompletionTokenLogprob>>,
pub refusal: Option<Vec<ChatCompletionTokenLogprob>>,
}
#[derive(Serialize, Deserialize)]
pub enum CreateChatCompletionResponseObject {
#[serde(rename = "chat.completion")]
ChatCompletion,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionStreamResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub choices: Option<Vec<CreateChatCompletionStreamResponseChoicesItem>>,
pub created: i64,
pub id: String,
pub model: String,
pub object: CreateChatCompletionStreamResponseObject,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_tier: Option<ServiceTier>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usage: Option<CompletionUsage>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionStreamResponseChoicesItem {
pub delta: ChatCompletionStreamResponseDelta,
#[serde(skip_serializing_if = "Option::is_none")]
pub finish_reason: Option<CreateChatCompletionStreamResponseChoicesItemFinishReason>,
pub index: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub logprobs: Option<CreateChatCompletionStreamResponseChoicesItemLogprobs>,
}
#[derive(Serialize, Deserialize)]
pub enum CreateChatCompletionStreamResponseChoicesItemFinishReason {
#[serde(rename = "stop")]
Stop,
#[serde(rename = "length")]
Length,
#[serde(rename = "tool_calls")]
ToolCalls,
#[serde(rename = "content_filter")]
ContentFilter,
#[serde(rename = "function_call")]
FunctionCall,
}
#[derive(Serialize, Deserialize)]
pub struct CreateChatCompletionStreamResponseChoicesItemLogprobs {
pub content: Vec<ChatCompletionTokenLogprob>,
pub refusal: Vec<ChatCompletionTokenLogprob>,
}
#[derive(Serialize, Deserialize)]
pub enum CreateChatCompletionStreamResponseObject {
#[serde(rename = "chat.completion.chunk")]
ChatCompletionChunk,
}
#[derive(Serialize, Deserialize)]
pub struct CreateModelResponsePropertiesAllOf2 {
#[serde(skip_serializing_if = "Option::is_none")]
pub top_logprobs: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateModelResponseProperties {
#[serde(flatten)]
pub model_response_properties: ModelResponseProperties,
#[serde(flatten)]
pub create_model_response_properties_all_of_2: CreateModelResponsePropertiesAllOf2,
}
#[derive(Serialize, Deserialize)]
pub struct VoiceIdsOrCustomVoiceVariant2 {
pub id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum VoiceIdsOrCustomVoice {
VoiceIdsShared(VoiceIdsShared),
VoiceIdsOrCustomVoiceVariant2(VoiceIdsOrCustomVoiceVariant2),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionFunctionCallOption {
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionFunctions {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<FunctionParameters>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "role")]
pub enum ChatCompletionRequestMessage {
#[serde(rename = "developer")]
Developer(ChatCompletionRequestDeveloperMessage),
#[serde(rename = "system")]
System(ChatCompletionRequestSystemMessage),
#[serde(rename = "user")]
User(ChatCompletionRequestUserMessage),
#[serde(rename = "assistant")]
Assistant(ChatCompletionRequestAssistantMessage),
#[serde(rename = "tool")]
Tool(ChatCompletionRequestToolMessage),
#[serde(rename = "function")]
Function(ChatCompletionRequestFunctionMessage),
}
#[derive(Serialize, Deserialize)]
pub enum ResponseModalitiesValueItem {
#[serde(rename = "text")]
Text,
#[serde(rename = "audio")]
Audio,
}
pub type ResponseModalities = Option<Option<Vec<ResponseModalitiesValueItem>>>;
pub type ModelIdsShared = Option<String>;
pub type ParallelToolCalls = Option<bool>;
#[derive(Serialize, Deserialize)]
pub struct PredictionContent {
pub content: PredictionContentContent,
}
pub type PredictionContentContentString = Option<String>;
pub type PredictionContentContentArray = Option<Vec<ChatCompletionRequestMessageContentPartText>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum PredictionContentContent {
PredictionContentContentString(PredictionContentContentString),
PredictionContentContentArray(PredictionContentContentArray),
}
#[derive(Serialize, Deserialize)]
pub enum ReasoningEffortValue {
#[serde(rename = "none")]
None,
#[serde(rename = "minimal")]
Minimal,
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "xhigh")]
Xhigh,
}
pub type ReasoningEffort = Option<Option<ReasoningEffortValue>>;
#[derive(Serialize, Deserialize)]
pub struct ResponseFormatText {}
#[derive(Serialize, Deserialize)]
pub struct ResponseFormatJsonSchema {
pub json_schema: ResponseFormatJsonSchemaJsonSchema,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFormatJsonSchemaJsonSchema {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub schema: Option<ResponseFormatJsonSchemaSchema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFormatJsonObject {}
pub type StopConfigurationString = Option<String>;
pub type StopConfigurationArray = Option<Vec<String>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum StopConfiguration {
StopConfigurationString(StopConfigurationString),
StopConfigurationArray(StopConfigurationArray),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionStreamOptionsValue {
#[serde(skip_serializing_if = "Option::is_none")]
pub include_obfuscation: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_usage: Option<bool>,
}
pub type ChatCompletionStreamOptions = Option<Option<ChatCompletionStreamOptionsValue>>;
pub type ChatCompletionToolChoiceOptionString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ChatCompletionToolChoiceOption {
ChatCompletionToolChoiceOptionString(ChatCompletionToolChoiceOptionString),
ChatCompletionAllowedToolsChoice(ChatCompletionAllowedToolsChoice),
ChatCompletionNamedToolChoice(ChatCompletionNamedToolChoice),
ChatCompletionNamedToolChoiceCustom(ChatCompletionNamedToolChoiceCustom),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionTool {
pub function: FunctionObject,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolChatCompletions {
pub custom: CustomToolChatCompletionsCustom,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolChatCompletionsCustom {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<CustomToolChatCompletionsCustomFormat>,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolChatCompletionsCustomFormatText {
pub r#type: CustomToolChatCompletionsCustomFormatTextType,
}
#[derive(Serialize, Deserialize)]
pub enum CustomToolChatCompletionsCustomFormatTextType {
#[serde(rename = "text")]
Text,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolChatCompletionsCustomFormatGrammar {
pub grammar: CustomToolChatCompletionsCustomFormatGrammarGrammar,
pub r#type: CustomToolChatCompletionsCustomFormatGrammarType,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolChatCompletionsCustomFormatGrammarGrammar {
pub definition: String,
pub syntax: CustomToolChatCompletionsCustomFormatGrammarGrammarSyntax,
}
#[derive(Serialize, Deserialize)]
pub enum CustomToolChatCompletionsCustomFormatGrammarGrammarSyntax {
#[serde(rename = "lark")]
Lark,
#[serde(rename = "regex")]
Regex,
}
#[derive(Serialize, Deserialize)]
pub enum CustomToolChatCompletionsCustomFormatGrammarType {
#[serde(rename = "grammar")]
Grammar,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CustomToolChatCompletionsCustomFormat {
#[serde(rename = "text")]
Text(CustomToolChatCompletionsCustomFormatText),
#[serde(rename = "grammar")]
Grammar(CustomToolChatCompletionsCustomFormatGrammar),
}
#[derive(Serialize, Deserialize)]
pub enum VerbosityValue {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
}
pub type Verbosity = Option<Option<VerbosityValue>>;
#[derive(Serialize, Deserialize)]
pub enum WebSearchContextSize {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchLocation {
#[serde(skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionTokenLogprob {
pub bytes: Option<Vec<i64>>,
pub logprob: f64,
pub token: String,
pub top_logprobs: Vec<ChatCompletionTokenLogprobTopLogprobsItem>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionTokenLogprobTopLogprobsItem {
pub bytes: Option<Vec<i64>>,
pub logprob: f64,
pub token: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionResponseMessage {
#[serde(skip_serializing_if = "Option::is_none")]
pub annotations: Option<Vec<ChatCompletionResponseMessageAnnotationsItem>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub audio: Option<ChatCompletionResponseMessageAudio>,
pub content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub function_call: Option<ChatCompletionResponseMessageFunctionCall>,
pub refusal: Option<String>,
pub role: ChatCompletionResponseMessageRole,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_calls: Option<ChatCompletionMessageToolCalls>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionResponseMessageAnnotationsItem {
pub r#type: ChatCompletionResponseMessageAnnotationsItemType,
pub url_citation: ChatCompletionResponseMessageAnnotationsItemUrlCitation,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionResponseMessageAnnotationsItemType {
#[serde(rename = "url_citation")]
UrlCitation,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionResponseMessageAnnotationsItemUrlCitation {
pub end_index: i64,
pub start_index: i64,
pub title: String,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionResponseMessageAudio {
pub data: String,
pub expires_at: i64,
pub id: String,
pub transcript: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionResponseMessageFunctionCall {
pub arguments: String,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionResponseMessageRole {
#[serde(rename = "assistant")]
Assistant,
}
#[derive(Serialize, Deserialize)]
pub enum ServiceTierValue {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "default")]
Default,
#[serde(rename = "flex")]
Flex,
#[serde(rename = "scale")]
Scale,
#[serde(rename = "priority")]
Priority,
}
pub type ServiceTier = Option<Option<ServiceTierValue>>;
#[derive(Serialize, Deserialize)]
pub struct CompletionUsage {
pub completion_tokens: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub completion_tokens_details: Option<CompletionUsageCompletionTokensDetails>,
pub prompt_tokens: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt_tokens_details: Option<CompletionUsagePromptTokensDetails>,
pub total_tokens: i64,
}
#[derive(Serialize, Deserialize)]
pub struct CompletionUsageCompletionTokensDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub accepted_prediction_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rejected_prediction_tokens: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct CompletionUsagePromptTokensDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cached_tokens: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionStreamResponseDelta {
#[serde(skip_serializing_if = "Option::is_none")]
pub audio: Option<ChatCompletionStreamResponseDeltaAudio>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub function_call: Option<ChatCompletionStreamResponseDeltaFunctionCall>,
#[serde(skip_serializing_if = "Option::is_none")]
pub refusal: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<ChatCompletionStreamResponseDeltaRole>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_calls: Option<Vec<ChatCompletionMessageToolCallChunk>>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionStreamResponseDeltaFunctionCall {
#[serde(skip_serializing_if = "Option::is_none")]
pub arguments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionStreamResponseDeltaRole {
#[serde(rename = "developer")]
Developer,
#[serde(rename = "system")]
System,
#[serde(rename = "user")]
User,
#[serde(rename = "assistant")]
Assistant,
#[serde(rename = "tool")]
Tool,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionStreamResponseDeltaAudio {
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_at: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transcript: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ModelResponseProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt_cache_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt_cache_retention: Option<ModelResponsePropertiesPromptCacheRetention>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_identifier: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_tier: Option<ServiceTier>,
#[serde(skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_logprobs: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_p: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum ModelResponsePropertiesPromptCacheRetention {
#[serde(rename = "in-memory")]
InMemory,
#[serde(rename = "24h")]
N24H,
}
pub type VoiceIdsShared = Option<String>;
pub type FunctionParameters = Option<Value>;
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestDeveloperMessage {
pub content: ChatCompletionRequestDeveloperMessageContent,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
pub type ChatCompletionRequestDeveloperMessageContentString = Option<String>;
pub type ChatCompletionRequestDeveloperMessageContentArray =
Option<Vec<ChatCompletionRequestMessageContentPartText>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ChatCompletionRequestDeveloperMessageContent {
ChatCompletionRequestDeveloperMessageContentString(
ChatCompletionRequestDeveloperMessageContentString,
),
ChatCompletionRequestDeveloperMessageContentArray(
ChatCompletionRequestDeveloperMessageContentArray,
),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestSystemMessage {
pub content: ChatCompletionRequestSystemMessageContent,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
pub type ChatCompletionRequestSystemMessageContentString = Option<String>;
pub type ChatCompletionRequestSystemMessageContentArray =
Option<Vec<ChatCompletionRequestSystemMessageContentPart>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ChatCompletionRequestSystemMessageContent {
ChatCompletionRequestSystemMessageContentString(
ChatCompletionRequestSystemMessageContentString,
),
ChatCompletionRequestSystemMessageContentArray(ChatCompletionRequestSystemMessageContentArray),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestUserMessage {
pub content: ChatCompletionRequestUserMessageContent,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
pub type ChatCompletionRequestUserMessageContentString = Option<String>;
pub type ChatCompletionRequestUserMessageContentArray =
Option<Vec<ChatCompletionRequestUserMessageContentPart>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ChatCompletionRequestUserMessageContent {
ChatCompletionRequestUserMessageContentString(ChatCompletionRequestUserMessageContentString),
ChatCompletionRequestUserMessageContentArray(ChatCompletionRequestUserMessageContentArray),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestAssistantMessage {
#[serde(skip_serializing_if = "Option::is_none")]
pub audio: Option<ChatCompletionRequestAssistantMessageAudio>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<ChatCompletionRequestAssistantMessageContent>,
#[serde(skip_serializing_if = "Option::is_none")]
pub function_call: Option<ChatCompletionRequestAssistantMessageFunctionCall>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub refusal: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_calls: Option<ChatCompletionMessageToolCalls>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestAssistantMessageAudio {
pub id: String,
}
pub type ChatCompletionRequestAssistantMessageContentString = Option<String>;
pub type ChatCompletionRequestAssistantMessageContentArray =
Option<Vec<ChatCompletionRequestAssistantMessageContentPart>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ChatCompletionRequestAssistantMessageContent {
ChatCompletionRequestAssistantMessageContentString(
ChatCompletionRequestAssistantMessageContentString,
),
ChatCompletionRequestAssistantMessageContentArray(
ChatCompletionRequestAssistantMessageContentArray,
),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestAssistantMessageFunctionCall {
pub arguments: String,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestToolMessage {
pub content: ChatCompletionRequestToolMessageContent,
pub tool_call_id: String,
}
pub type ChatCompletionRequestToolMessageContentString = Option<String>;
pub type ChatCompletionRequestToolMessageContentArray =
Option<Vec<ChatCompletionRequestToolMessageContentPart>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ChatCompletionRequestToolMessageContent {
ChatCompletionRequestToolMessageContentString(ChatCompletionRequestToolMessageContentString),
ChatCompletionRequestToolMessageContentArray(ChatCompletionRequestToolMessageContentArray),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestFunctionMessage {
pub content: Option<String>,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartText {
pub text: String,
pub r#type: ChatCompletionRequestMessageContentPartTextType,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionRequestMessageContentPartTextType {
#[serde(rename = "text")]
Text,
}
pub type ResponseFormatJsonSchemaSchema = Option<Value>;
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionAllowedToolsChoice {
pub allowed_tools: ChatCompletionAllowedTools,
pub r#type: ChatCompletionAllowedToolsChoiceType,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionAllowedToolsChoiceType {
#[serde(rename = "allowed_tools")]
AllowedTools,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionNamedToolChoice {
pub function: ChatCompletionNamedToolChoiceFunction,
pub r#type: ChatCompletionNamedToolChoiceType,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionNamedToolChoiceFunction {
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionNamedToolChoiceType {
#[serde(rename = "function")]
Function,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionNamedToolChoiceCustom {
pub custom: ChatCompletionNamedToolChoiceCustomCustom,
pub r#type: ChatCompletionNamedToolChoiceCustomType,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionNamedToolChoiceCustomCustom {
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionNamedToolChoiceCustomType {
#[serde(rename = "custom")]
Custom,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionObject {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<FunctionParameters>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ChatCompletionMessageToolCallsItem {
#[serde(rename = "function")]
Function(ChatCompletionMessageToolCall),
#[serde(rename = "custom")]
Custom(ChatCompletionMessageCustomToolCall),
}
pub type ChatCompletionMessageToolCalls = Option<Vec<ChatCompletionMessageToolCallsItem>>;
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionMessageToolCallChunk {
#[serde(skip_serializing_if = "Option::is_none")]
pub function: Option<ChatCompletionMessageToolCallChunkFunction>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub index: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<ChatCompletionMessageToolCallChunkType>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionMessageToolCallChunkFunction {
#[serde(skip_serializing_if = "Option::is_none")]
pub arguments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionMessageToolCallChunkType {
#[serde(rename = "function")]
Function,
}
pub type Metadata = Option<Option<HashMap<String, String>>>;
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ChatCompletionRequestSystemMessageContentPart {
#[serde(rename = "text")]
Text(ChatCompletionRequestMessageContentPartText),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ChatCompletionRequestUserMessageContentPart {
#[serde(rename = "text")]
Text(ChatCompletionRequestMessageContentPartText),
#[serde(rename = "image_url")]
ImageUrl(ChatCompletionRequestMessageContentPartImage),
#[serde(rename = "input_audio")]
InputAudio(ChatCompletionRequestMessageContentPartAudio),
#[serde(rename = "file")]
File(ChatCompletionRequestMessageContentPartFile),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ChatCompletionRequestAssistantMessageContentPart {
#[serde(rename = "text")]
Text(ChatCompletionRequestMessageContentPartText),
#[serde(rename = "refusal")]
Refusal(ChatCompletionRequestMessageContentPartRefusal),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ChatCompletionRequestToolMessageContentPart {
#[serde(rename = "text")]
Text(ChatCompletionRequestMessageContentPartText),
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionAllowedTools {
pub mode: ChatCompletionAllowedToolsMode,
pub tools: Vec<Value>,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionAllowedToolsMode {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "required")]
Required,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionMessageToolCall {
pub function: ChatCompletionMessageToolCallFunction,
pub id: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionMessageToolCallFunction {
pub arguments: String,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionMessageCustomToolCall {
pub custom: ChatCompletionMessageCustomToolCallCustom,
pub id: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionMessageCustomToolCallCustom {
pub input: String,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartImage {
pub image_url: ChatCompletionRequestMessageContentPartImageImageUrl,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartImageImageUrl {
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<ChatCompletionRequestMessageContentPartImageImageUrlDetail>,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionRequestMessageContentPartImageImageUrlDetail {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "low")]
Low,
#[serde(rename = "high")]
High,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartAudio {
pub input_audio: ChatCompletionRequestMessageContentPartAudioInputAudio,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartAudioInputAudio {
pub data: String,
pub format: ChatCompletionRequestMessageContentPartAudioInputAudioFormat,
}
#[derive(Serialize, Deserialize)]
pub enum ChatCompletionRequestMessageContentPartAudioInputAudioFormat {
#[serde(rename = "wav")]
Wav,
#[serde(rename = "mp3")]
Mp3,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartFile {
pub file: ChatCompletionRequestMessageContentPartFileFile,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartFileFile {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ChatCompletionRequestMessageContentPartRefusal {
pub refusal: String,
}