config_driven_example/
config_driven_example.rs1use ai_lib::{AiClient, Provider, ChatCompletionRequest, Message, Role};
2
3#[tokio::main]
4async fn main() -> Result<(), Box<dyn std::error::Error>> {
5 println!("🚀 配置驱动的AI-lib示例");
6 println!("========================");
7
8 let providers = vec![
10 (Provider::Groq, "Groq"),
11 (Provider::OpenAI, "OpenAI"),
12 (Provider::DeepSeek, "DeepSeek"),
13 ];
14
15 for (provider, name) in providers {
16 println!("\n📡 测试提供商: {}", name);
17
18 let client = AiClient::new(provider)?;
20 println!("✅ 客户端创建成功: {:?}", client.current_provider());
21
22 match client.list_models().await {
24 Ok(models) => println!("📋 可用模型: {:?}", models),
25 Err(e) => println!("⚠️ 获取模型列表失败: {}", e),
26 }
27
28 let request = ChatCompletionRequest::new(
30 "test-model".to_string(),
31 vec![Message {
32 role: Role::User,
33 content: "Hello from ai-lib!".to_string(),
34 }],
35 );
36
37 println!("📤 请求已准备,模型: {}", request.model);
38 println!(" (需要设置对应的API_KEY环境变量才能实际调用)");
39 }
40
41 println!("\n🎯 配置驱动的核心优势:");
42 println!(" • 零代码切换: 只需改变Provider枚举值");
43 println!(" • 统一接口: 所有提供商使用相同的API");
44 println!(" • 快速扩展: 新增兼容提供商只需添加配置");
45
46 Ok(())
47}