use lellm_agent::{AgentBuilder, ToolUseLoop, create_agent_with_system};
use lellm_core::{ChatResponse, ContentBlock, Message, TokenUsage};
use lellm_provider::{MockProvider, ResolvedModel};
use std::sync::Arc;
fn create_agent_with_builder() -> ToolUseLoop {
let response = ChatResponse::new(
vec![ContentBlock::text(
"根据我的简洁风格:LeLLM 是 Rust 版本的 LangChain,专注于低层编排和精准控制。"
.to_string(),
)],
TokenUsage::default(),
serde_json::json!(null),
);
let provider = Arc::new(MockProvider::reply_with(response));
let model = ResolvedModel {
context_window: None,
provider,
model: "test-model".to_string(),
};
AgentBuilder::new(model)
.system("你是一个简洁准确的助手。回答不超过两句话。使用技术术语。".to_string())
.compile()
}
fn create_agent_simple() -> ToolUseLoop {
let response = ChatResponse::new(
vec![ContentBlock::text(
"LeLLM 是 Rust 版本的 LangChain / LangGraph / AutoGen。".to_string(),
)],
TokenUsage::default(),
serde_json::json!(null),
);
let provider = Arc::new(MockProvider::reply_with(response));
let model = ResolvedModel {
context_window: None,
provider,
model: "test-model".to_string(),
};
create_agent_with_system(model, "你是一个专业的技术助手。请用中文回答。".to_string())
}
#[tokio::main]
async fn main() {
println!("=== 示例 1: AgentBuilder 设置系统提示 ===\n");
let agent = create_agent_with_builder();
let result = agent
.invoke(vec![Message::user_text("介绍一下 LeLLM 项目。")])
.await
.expect("执行失败");
for msg in &result.messages {
if let Message::System { content } = msg {
println!("[系统提示]");
for block in content {
if let ContentBlock::Text(t) = block {
println!(" {}", t.text);
}
}
println!();
}
}
println!("[AI 回复]");
for block in &result.response.content {
if let ContentBlock::Text(t) = block {
println!(" {}", t.text);
}
}
println!("\n=== 示例 2: 糖衣 API ===\n");
let agent2 = create_agent_simple();
let result2 = agent2
.invoke(vec![Message::user_text("LeLLM 是什么?")])
.await
.expect("执行失败");
for msg in &result2.messages {
if let Message::System { content } = msg {
println!("[系统提示]");
for block in content {
if let ContentBlock::Text(t) = block {
println!(" {}", t.text);
}
}
println!();
}
}
println!("[AI 回复]");
for block in &result2.response.content {
if let ContentBlock::Text(t) = block {
println!(" {}", t.text);
}
}
println!("\n=== 示例 3: 无系统提示(从消息推断任务)===\n");
let response3 = ChatResponse::new(
vec![ContentBlock::text("好的,我来帮你。")],
TokenUsage::default(),
serde_json::json!(null),
);
let provider3 = Arc::new(MockProvider::reply_with(response3));
let model3 = ResolvedModel {
context_window: None,
provider: provider3,
model: "test-model".to_string(),
};
let agent3 = AgentBuilder::new(model3).compile();
let result3 = agent3
.invoke(vec![Message::user_text(
"你是一个翻译助手。请将以下句子翻译成英文:你好世界",
)])
.await
.expect("执行失败");
println!("[AI 回复]");
for block in &result3.response.content {
if let ContentBlock::Text(t) = block {
println!(" {}", t.text);
}
}
}