use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Truncation {
Auto,
#[default]
Disabled,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TextConfig {
pub format: TextFormat,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum TextFormat {
#[default]
Text,
JsonSchema {
schema: serde_json::Value,
description: String,
name: String,
strict: Option<bool>,
},
JsonObject,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ReasoningConfig {
pub effort: Option<ReasoningEffort>,
pub generate_summary: Option<SummaryConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ReasoningEffort {
Low,
High,
Medium,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum SummaryConfig {
Concise,
Detailed,
}