use serde::{Deserialize, Serialize};
use crate::messages::InputMessage;
use crate::tools::{ToolChoice, ToolDefinition};
#[derive(Debug, Clone)]
pub struct Conversation {
pub messages: Vec<InputMessage>,
pub thinking_mode: bool,
pub tools: Vec<ToolDefinition>,
pub tool_choice: ToolChoice,
pub reasoning_effort: Option<ReasoningEffort>,
pub response_format: ResponseFormat,
}
impl Default for Conversation {
fn default() -> Self {
Self {
messages: Vec::new(),
thinking_mode: true,
tools: Vec::new(),
tool_choice: ToolChoice::Auto,
reasoning_effort: None,
response_format: ResponseFormat::Text,
}
}
}
#[derive(Debug, Clone, Default)]
pub enum ResponseFormat {
#[default]
Text,
JsonObject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ReasoningEffort {
Low,
High,
Xhigh,
Max,
}