59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
// 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<bool>,
|
|
}
|
|
|
|
// ============= 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<CompletionTokensDetails>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
|
pub struct CompletionTokensDetails {
|
|
pub reasoning_tokens: Option<u32>,
|
|
}
|
|
|
|
// ============= Logprobs Types =============
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
|
pub struct LogProbs {
|
|
pub tokens: Vec<String>,
|
|
pub token_logprobs: Vec<Option<f32>>,
|
|
pub top_logprobs: Vec<Option<HashMap<String, f32>>>,
|
|
pub text_offset: Vec<u32>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
|
pub struct ChatLogProbs {
|
|
pub content: Option<Vec<ChatLogProbsContent>>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
|
pub struct ChatLogProbsContent {
|
|
pub token: String,
|
|
pub logprob: f32,
|
|
pub bytes: Option<Vec<u8>>,
|
|
pub top_logprobs: Vec<TopLogProb>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
|
pub struct TopLogProb {
|
|
pub token: String,
|
|
pub logprob: f32,
|
|
pub bytes: Option<Vec<u8>>,
|
|
}
|