config_driven_example/
config_driven_example.rs

1use 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    // 演示配置驱动的优势:轻松切换提供商
9    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        // 创建客户端 - 只需改变枚举值
19        let client = AiClient::new(provider)?;
20        println!("✅ 客户端创建成功: {:?}", client.current_provider());
21        
22        // 获取模型列表
23        match client.list_models().await {
24            Ok(models) => println!("📋 可用模型: {:?}", models),
25            Err(e) => println!("⚠️  获取模型列表失败: {}", e),
26        }
27        
28        // 创建测试请求
29        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}