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