use crate::provider::ModelOptions;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(default)]
#[non_exhaustive]
pub struct AgentConfig {
pub(crate) max_tool_rounds: usize,
pub(crate) max_structured_retries: usize,
pub(crate) options: ModelOptions,
}
impl Default for AgentConfig {
fn default() -> Self {
Self {
max_tool_rounds: 10,
max_structured_retries: 3,
options: ModelOptions::default(),
}
}
}
impl AgentConfig {
pub fn new() -> Self {
Self::default()
}
pub fn max_tool_rounds(&self) -> usize {
self.max_tool_rounds
}
pub fn with_max_tool_rounds(mut self, max_tool_rounds: usize) -> Self {
self.max_tool_rounds = max_tool_rounds;
self
}
pub fn max_structured_retries(&self) -> usize {
self.max_structured_retries
}
pub fn with_max_structured_retries(mut self, max_structured_retries: usize) -> Self {
self.max_structured_retries = max_structured_retries;
self
}
pub fn options(&self) -> &ModelOptions {
&self.options
}
pub fn with_options(mut self, options: ModelOptions) -> Self {
self.options = options;
self
}
}