config_driven_example/
config_driven_example.rs

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