| # 完整使用示例 | |
| 本文档提供了JetBrains AI Proxy多JWT负载均衡系统的完整使用示例。 | |
| ## 📋 准备工作 | |
| ### 1. 编译项目 | |
| ```bash | |
| # 进入项目目录 | |
| cd jetbrains-ai-proxy | |
| # 编译项目 | |
| go build -o jetbrains-ai-proxy | |
| # 或者使用交叉编译 | |
| GOOS=linux GOARCH=amd64 go build -o jetbrains-ai-proxy-linux | |
| ``` | |
| ### 2. 准备JWT Tokens | |
| 确保你有有效的JetBrains AI JWT tokens。你可以从以下途径获取: | |
| - JetBrains AI服务控制台 | |
| - 现有的JetBrains IDE配置 | |
| - API密钥管理界面 | |
| ## 🎯 使用场景示例 | |
| ### 场景1: 开发环境快速启动 | |
| ```bash | |
| # 1. 生成示例配置 | |
| ./jetbrains-ai-proxy --generate-config | |
| # 2. 编辑配置文件 | |
| vim config/config.json | |
| # 3. 启动服务 | |
| ./jetbrains-ai-proxy | |
| ``` | |
| 配置文件内容: | |
| ```json | |
| { | |
| "jetbrains_tokens": [ | |
| { | |
| "token": "your_jwt_token_here", | |
| "name": "Dev_Token", | |
| "description": "Development JWT token" | |
| } | |
| ], | |
| "bearer_token": "your_bearer_token_here", | |
| "load_balance_strategy": "round_robin", | |
| "server_port": 8080, | |
| "server_host": "127.0.0.1" | |
| } | |
| ``` | |
| ### 场景2: 生产环境多JWT负载均衡 | |
| ```bash | |
| # 1. 创建生产配置目录 | |
| mkdir -p /etc/jetbrains-ai-proxy | |
| # 2. 创建生产配置文件 | |
| cat > /etc/jetbrains-ai-proxy/config.json << 'EOF' | |
| { | |
| "jetbrains_tokens": [ | |
| { | |
| "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", | |
| "name": "Primary_Production", | |
| "description": "Primary production JWT token", | |
| "priority": 1, | |
| "metadata": { | |
| "environment": "production", | |
| "region": "us-east-1", | |
| "tier": "primary" | |
| } | |
| }, | |
| { | |
| "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", | |
| "name": "Secondary_Production", | |
| "description": "Secondary production JWT token", | |
| "priority": 2, | |
| "metadata": { | |
| "environment": "production", | |
| "region": "us-west-2", | |
| "tier": "secondary" | |
| } | |
| }, | |
| { | |
| "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", | |
| "name": "Backup_Production", | |
| "description": "Backup production JWT token", | |
| "priority": 3, | |
| "metadata": { | |
| "environment": "production", | |
| "region": "eu-west-1", | |
| "tier": "backup" | |
| } | |
| } | |
| ], | |
| "bearer_token": "prod_bearer_token_here", | |
| "load_balance_strategy": "random", | |
| "health_check_interval": "30s", | |
| "server_port": 8080, | |
| "server_host": "0.0.0.0" | |
| } | |
| EOF | |
| # 3. 启动服务 | |
| ./jetbrains-ai-proxy --config /etc/jetbrains-ai-proxy/config.json | |
| ``` | |
| ### 场景3: 使用环境变量配置 | |
| ```bash | |
| # 1. 设置环境变量 | |
| export JWT_TOKENS="jwt1,jwt2,jwt3" | |
| export BEARER_TOKEN="your_bearer_token" | |
| export LOAD_BALANCE_STRATEGY="random" | |
| export SERVER_PORT="9090" | |
| # 2. 启动服务 | |
| ./jetbrains-ai-proxy | |
| # 或者使用.env文件 | |
| cat > .env << 'EOF' | |
| JWT_TOKENS=jwt_token_1,jwt_token_2,jwt_token_3 | |
| BEARER_TOKEN=your_bearer_token_here | |
| LOAD_BALANCE_STRATEGY=round_robin | |
| SERVER_HOST=0.0.0.0 | |
| SERVER_PORT=8080 | |
| EOF | |
| ./jetbrains-ai-proxy | |
| ``` | |
| ### 场景4: Docker容器部署 | |
| ```bash | |
| # 1. 创建Dockerfile(如果不存在) | |
| cat > Dockerfile << 'EOF' | |
| FROM golang:1.21-alpine AS builder | |
| WORKDIR /app | |
| COPY go.mod go.sum ./ | |
| RUN go mod download | |
| COPY . . | |
| RUN go build -o jetbrains-ai-proxy | |
| FROM alpine:latest | |
| RUN apk --no-cache add ca-certificates | |
| WORKDIR /root/ | |
| COPY --from=builder /app/jetbrains-ai-proxy . | |
| EXPOSE 8080 | |
| CMD ["./jetbrains-ai-proxy"] | |
| EOF | |
| # 2. 构建镜像 | |
| docker build -t jetbrains-ai-proxy . | |
| # 3. 运行容器 | |
| docker run -d \ | |
| --name jetbrains-ai-proxy \ | |
| -p 8080:8080 \ | |
| -e JWT_TOKENS="jwt1,jwt2,jwt3" \ | |
| -e BEARER_TOKEN="your_bearer_token" \ | |
| -e LOAD_BALANCE_STRATEGY="random" \ | |
| jetbrains-ai-proxy | |
| # 4. 或者使用配置文件挂载 | |
| docker run -d \ | |
| --name jetbrains-ai-proxy \ | |
| -p 8080:8080 \ | |
| -v $(pwd)/config:/app/config \ | |
| jetbrains-ai-proxy | |
| ``` | |
| ## 🔧 管理和监控 | |
| ### 健康检查 | |
| ```bash | |
| # 检查服务状态 | |
| curl http://localhost:8080/health | |
| # 响应示例 | |
| { | |
| "status": "ok", | |
| "healthy_tokens": 3, | |
| "total_tokens": 3, | |
| "strategy": "round_robin", | |
| "server_info": { | |
| "host": "0.0.0.0", | |
| "port": 8080 | |
| } | |
| } | |
| ``` | |
| ### 查看配置信息 | |
| ```bash | |
| # 查看当前配置 | |
| curl http://localhost:8080/config | |
| # 响应示例 | |
| { | |
| "jwt_tokens_count": 3, | |
| "jwt_tokens": [ | |
| { | |
| "name": "Primary_JWT", | |
| "description": "Primary JWT token", | |
| "priority": 1, | |
| "token_preview": "eyJ0eXAiOiJKV1QiLCJhbGc..." | |
| } | |
| ], | |
| "bearer_token_set": true, | |
| "load_balance_strategy": "round_robin", | |
| "health_check_interval": "30s", | |
| "server_host": "0.0.0.0", | |
| "server_port": 8080 | |
| } | |
| ``` | |
| ### 查看统计信息 | |
| ```bash | |
| # 查看负载均衡统计 | |
| curl http://localhost:8080/stats | |
| # 响应示例 | |
| { | |
| "balancer": { | |
| "healthy_tokens": 3, | |
| "total_tokens": 3, | |
| "strategy": "round_robin" | |
| }, | |
| "config": { | |
| "health_check_interval": "30s", | |
| "server_host": "0.0.0.0", | |
| "server_port": 8080 | |
| } | |
| } | |
| ``` | |
| ### 重载配置 | |
| ```bash | |
| # 重新加载配置(无需重启服务) | |
| curl -X POST http://localhost:8080/reload | |
| # 响应示例 | |
| { | |
| "message": "Configuration reloaded successfully" | |
| } | |
| ``` | |
| ## 🧪 测试API | |
| ### 发送聊天请求 | |
| ```bash | |
| # 发送非流式请求 | |
| curl -X POST http://localhost:8080/v1/chat/completions \ | |
| -H "Authorization: Bearer your_bearer_token" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "model": "gpt-4o", | |
| "messages": [ | |
| {"role": "user", "content": "Hello, how are you?"} | |
| ], | |
| "stream": false | |
| }' | |
| # 发送流式请求 | |
| curl -X POST http://localhost:8080/v1/chat/completions \ | |
| -H "Authorization: Bearer your_bearer_token" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "model": "gpt-4o", | |
| "messages": [ | |
| {"role": "user", "content": "Tell me a story"} | |
| ], | |
| "stream": true | |
| }' | |
| ``` | |
| ### 获取支持的模型 | |
| ```bash | |
| # 获取模型列表 | |
| curl http://localhost:8080/v1/models \ | |
| -H "Authorization: Bearer your_bearer_token" | |
| ``` | |
| ## 🚨 故障排除 | |
| ### 常见问题 | |
| 1. **所有JWT tokens都不健康** | |
| ```bash | |
| # 检查token有效性 | |
| curl http://localhost:8080/health | |
| # 查看日志 | |
| tail -f /var/log/jetbrains-ai-proxy.log | |
| ``` | |
| 2. **配置文件未找到** | |
| ```bash | |
| # 生成示例配置 | |
| ./jetbrains-ai-proxy --generate-config | |
| # 检查配置文件路径 | |
| ./jetbrains-ai-proxy --print-config | |
| ``` | |
| 3. **端口被占用** | |
| ```bash | |
| # 检查端口使用情况 | |
| lsof -i :8080 | |
| # 使用不同端口启动 | |
| ./jetbrains-ai-proxy -p 9090 | |
| ``` | |
| ### 日志分析 | |
| ```bash | |
| # 查看实时日志 | |
| tail -f jetbrains-ai-proxy.log | |
| # 过滤健康检查日志 | |
| grep "health check" jetbrains-ai-proxy.log | |
| # 过滤错误日志 | |
| grep -i error jetbrains-ai-proxy.log | |
| ``` | |
| ## 📈 性能优化建议 | |
| 1. **JWT Token数量**: 建议配置3-5个JWT tokens以获得最佳负载均衡效果 | |
| 2. **健康检查间隔**: 生产环境建议设置为30-60秒 | |
| 3. **负载均衡策略**: | |
| - 使用`round_robin`获得均匀分布 | |
| - 使用`random`避免可预测的请求模式 | |
| 4. **监控**: 定期检查`/health`和`/stats`端点 | |
| 5. **日志**: 配置适当的日志级别和轮转策略 | |