use async_trait::async_trait;
use crate::error::GenResult;
use crate::tools::ToolExecutor;
#[async_trait]
pub trait LlmClient: Send + Sync {
async fn complete(&self, system: &str, user: &str) -> GenResult<String>;
async fn complete_with_tools(
&self,
system: &str,
user: &str,
_tools: &dyn ToolExecutor,
_max_turns: u32,
) -> GenResult<String> {
self.complete(system, user).await
}
}