use crate::{AiConfig, AiResult};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChatMessage {
pub role: String,
pub content: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChatParams {
pub messages: Vec<ChatMessage>,
pub temperature: Option<f32>,
pub max_tokens: Option<u32>,
}
pub trait ChatCapability: Send + Sync {
#[allow(async_fn_in_trait)]
async fn chat(&self, params: &ChatParams, config: &AiConfig) -> AiResult<String>;
}