// Common types shared across OpenAI API implementations use serde::{Deserialize, Serialize}; use std::collections::HashMap; // ============= Shared Request Components ============= #[derive(Debug, Clone, Deserialize, Serialize)] pub struct StreamOptions { #[serde(skip_serializing_if = "Option::is_none")] pub include_usage: Option, } // ============= Usage Tracking ============= #[derive(Debug, Clone, Deserialize, Serialize)] pub struct Usage { pub prompt_tokens: u32, pub completion_tokens: u32, pub total_tokens: u32, #[serde(skip_serializing_if = "Option::is_none")] pub completion_tokens_details: Option, } #[derive(Debug, Clone, Deserialize, Serialize)] pub struct CompletionTokensDetails { pub reasoning_tokens: Option, } // ============= Logprobs Types ============= #[derive(Debug, Clone, Deserialize, Serialize)] pub struct LogProbs { pub tokens: Vec, pub token_logprobs: Vec>, pub top_logprobs: Vec>>, pub text_offset: Vec, } #[derive(Debug, Clone, Deserialize, Serialize)] pub struct ChatLogProbs { pub content: Option>, } #[derive(Debug, Clone, Deserialize, Serialize)] pub struct ChatLogProbsContent { pub token: String, pub logprob: f32, pub bytes: Option>, pub top_logprobs: Vec, } #[derive(Debug, Clone, Deserialize, Serialize)] pub struct TopLogProb { pub token: String, pub logprob: f32, pub bytes: Option>, }