use serde::{Deserialize, Serialize};
#[derive(Deserialize)]
pub struct ChatRequest {
pub messages: Option<Vec<Message>>,
pub model: Option<String>,
#[serde(default)]
pub steps: Vec<ChainStepRequest>,
#[serde(default)]
pub response_transform: Option<String>,
#[serde(default)]
pub temperature: Option<f32>,
#[serde(default)]
pub max_tokens: Option<u32>,
}
#[derive(Deserialize)]
pub struct ChainStepRequest {
pub provider_id: String,
pub id: String,
pub template: String,
#[serde(default)]
pub temperature: Option<f32>,
#[serde(default)]
pub max_tokens: Option<u32>,
#[serde(default)]
pub response_transform: Option<String>,
}
#[derive(Deserialize, Serialize)]
pub struct Message {
pub role: String,
pub content: String,
}
#[derive(Serialize)]
pub struct ChatResponse {
pub id: String,
pub object: String,
pub created: u64,
pub model: String,
pub choices: Vec<Choice>,
}
#[derive(Serialize)]
pub struct Choice {
pub index: usize,
pub message: Message,
pub finish_reason: String,
}