use ambi::llm::handler::LLMRequest;
use ambi::{Agent, LLMEngineTrait};
use anyhow::Result;
use async_trait::async_trait;
use tokio::sync::mpsc::Sender;
struct MyCompanyEngine {
api_key: String,
}
#[async_trait]
impl LLMEngineTrait for MyCompanyEngine {
async fn chat(&mut self, request: LLMRequest) -> Result<String> {
Ok("Im a AI assistant".to_string())
}
async fn chat_stream(
&mut self,
request: LLMRequest,
tx: tokio::sync::mpsc::Sender<Result<String, anyhow::Error>>,
) {
}
fn reset_context(&mut self) {}
}
#[tokio::main]
async fn main() -> Result<()> {
let my_engine = Box::new(MyCompanyEngine {
api_key: "secret".to_string(),
});
let mut agent = Agent::with_custom_engine(my_engine)?.preamble("who are you");
let _ = agent.chat("你好").await;
Ok(())
}