proxy_example/
proxy_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    match std::env::var("AI_PROXY_URL") {
10        Ok(proxy_url) => {
11            println!("✅ 检测到代理配置: {}", proxy_url);
12            println!("   所有HTTP请求将通过此代理服务器");
13        }
14        Err(_) => {
15            println!("ℹ️  未设置AI_PROXY_URL环境变量");
16            println!("   如需使用代理,请设置: export AI_PROXY_URL=http://proxy.example.com:8080");
17        }
18    }
19    
20    println!("\n🚀 创建AI客户端...");
21    let client = AiClient::new(Provider::Groq)?;
22    println!("✅ 客户端创建成功,提供商: {:?}", client.current_provider());
23    
24    // 创建测试请求
25    let request = ChatCompletionRequest::new(
26        "llama3-8b-8192".to_string(),
27        vec![Message {
28            role: Role::User,
29            content: "Hello! This request may go through a proxy.".to_string(),
30        }],
31    );
32    
33    println!("\n📤 准备发送请求...");
34    println!("   模型: {}", request.model);
35    println!("   消息: {}", request.messages[0].content);
36    
37    // 获取模型列表(这个请求也会通过代理)
38    match client.list_models().await {
39        Ok(models) => {
40            println!("\n📋 通过代理获取到的模型列表:");
41            for model in models {
42                println!("   • {}", model);
43            }
44        }
45        Err(e) => {
46            println!("\n⚠️  获取模型列表失败: {}", e);
47            println!("   这可能是由于:");
48            println!("   • 未设置GROQ_API_KEY环境变量");
49            println!("   • 代理服务器配置错误");
50            println!("   • 网络连接问题");
51        }
52    }
53    
54    println!("\n💡 代理配置说明:");
55    println!("   • 设置环境变量: AI_PROXY_URL=http://your-proxy:port");
56    println!("   • 支持HTTP和HTTPS代理");
57    println!("   • 支持带认证的代理: http://user:pass@proxy:port");
58    println!("   • 所有AI提供商都会自动使用此代理配置");
59    
60    Ok(())
61}