use std::sync::Arc;
use std::time::Duration;
use tokio_util::sync::CancellationToken;
use crate::ids::RunId;
use crate::message::SystemPrompt;
use crate::middleware::ChatMiddleware;
#[non_exhaustive]
pub struct RunConfig {
pub system_prompt: Option<SystemPrompt>,
pub max_iterations: usize,
pub max_tokens: u32,
pub middlewares: Vec<Arc<dyn ChatMiddleware>>,
pub run_id: Option<RunId>,
pub timeout: Option<Duration>,
pub cancellation: Option<CancellationToken>,
}
impl Default for RunConfig {
fn default() -> Self {
Self {
system_prompt: None,
max_iterations: 10,
max_tokens: 4096,
middlewares: vec![],
run_id: None,
timeout: None,
cancellation: None,
}
}
}
impl RunConfig {
pub fn new(max_iterations: usize) -> Self {
Self {
max_iterations,
..Default::default()
}
}
}