use crate::llm::ChatTemplate;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct EvictionStrategy {
pub keep_head: usize,
pub keep_tail: usize,
pub max_safe_tokens: usize,
}
impl Default for EvictionStrategy {
fn default() -> Self {
Self {
keep_head: 2,
keep_tail: 6,
max_safe_tokens: 3000,
}
}
}
#[derive(Clone, Debug)]
pub struct AgentConfig {
pub system_prompt: String,
pub template: ChatTemplate,
pub max_iterations: usize,
pub enable_formatting: bool,
pub eviction_strategy: EvictionStrategy,
}
impl Default for AgentConfig {
fn default() -> Self {
Self {
system_prompt: String::new(),
template: ChatTemplate::chatml(),
max_iterations: 10,
enable_formatting: false,
eviction_strategy: EvictionStrategy::default(),
}
}
}