proxy_example/
proxy_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 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 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 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}