add default implementation for common openai types (#568)

This commit is contained in:
Adil Hafeez 2025-09-16 12:48:07 -07:00 committed by GitHub
parent 118f60eea7
commit 3eb6af8829
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -162,6 +162,20 @@ pub struct ResponseMessage {
pub tool_calls: Option<Vec<ToolCall>>, pub tool_calls: Option<Vec<ToolCall>>,
} }
impl Default for ResponseMessage {
fn default() -> Self {
ResponseMessage {
role: Role::Assistant,
content: None,
refusal: None,
annotations: None,
audio: None,
function_call: None,
tool_calls: None,
}
}
}
impl ResponseMessage { impl ResponseMessage {
/// Convert ResponseMessage to Message for internal processing /// Convert ResponseMessage to Message for internal processing
/// This is useful for transformations that need to work with the request Message type /// This is useful for transformations that need to work with the request Message type
@ -367,6 +381,21 @@ pub struct ChatCompletionsResponse {
pub service_tier: Option<String>, pub service_tier: Option<String>,
} }
impl Default for ChatCompletionsResponse {
fn default() -> Self {
ChatCompletionsResponse {
id: String::new(),
object: String::new(),
created: 0,
model: String::new(),
choices: vec![],
usage: Usage::default(),
system_fingerprint: None,
service_tier: None,
}
}
}
/// Finish reason for completion /// Finish reason for completion
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
@ -389,6 +418,18 @@ pub struct Usage {
pub completion_tokens_details: Option<CompletionTokensDetails>, pub completion_tokens_details: Option<CompletionTokensDetails>,
} }
impl Default for Usage {
fn default() -> Self {
Usage {
prompt_tokens: 0,
completion_tokens: 0,
total_tokens: 0,
prompt_tokens_details: None,
completion_tokens_details: None,
}
}
}
/// Detailed breakdown of prompt tokens /// Detailed breakdown of prompt tokens
#[skip_serializing_none] #[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone)]
@ -417,6 +458,16 @@ pub struct Choice {
pub logprobs: Option<Value>, pub logprobs: Option<Value>,
} }
impl Default for Choice {
fn default() -> Self {
Choice {
index: 0,
message: ResponseMessage::default(),
finish_reason: None,
logprobs: None,
}
}
}
// ============================================================================ // ============================================================================
// STREAMING API TYPES // STREAMING API TYPES