一个高性能的 Go 语言 API 代理服务器,可以将 Claude API 请求转换为 OpenAI 兼容格式,支持任意 OpenAI 兼容的 LLM 服务。
- 🔄 完整的 API 转换 - 支持 Claude Messages API 到 OpenAI Chat Completion API 的双向转换
- 🚀 流式响应支持 - 完整支持 Server-Sent Events (SSE) 流式输出
- 🔑 多配置管理 - 支持多个独立的 API 配置,通过不同的 API Key 区分
- 📊 详细的请求日志 - 记录完整的请求/响应体、Token 统计和性能指标
- 🖥️ Web 管理界面 - 现代化的 React 管理界面,支持 OpenAI API 配置管理、在线测试和日志查看
- 🔐 安全认证 - 基于 API Key 的身份验证,确保服务安全
- 💾 SQLite 存储 - 轻量级数据库,支持配置、统计和日志持久化
go build -o claude-with-openai-api创建 .env 文件:
# 服务器配置
PORT=8083
HOST=0.0.0.0
LOG_LEVEL=INFO
# 数据库配置
DB_PATH=./data/proxy.db
# 默认 OpenAI API 配置(首次启动后建议通过 Web UI 管理)
OPENAI_API_KEY=your-openai-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
BIG_MODEL=gpt-4o
MIDDLE_MODEL=gpt-4o
SMALL_MODEL=gpt-4o-mini./claude-with-openai-api server服务启动后访问:
- API 端点:
http://localhost:8083 - 管理界面:
http://localhost:8083/ui - 健康检查:
http://localhost:8083/health
- 访问
http://localhost:8083/ui - 创建新的 API 配置
- 记录生成的 Anthropic API Key
- 配置 Claude CLI:
export ANTHROPIC_BASE_URL=http://localhost:8083
export ANTHROPIC_API_KEY="your-anthropic-api-key" # 从 Web UI 获取
claude -p "Hello"curl -X POST http://localhost:8083/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: your-anthropic-api-key" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'- ✅ 创建、编辑、删除 API 配置
- ✅ 为每个配置生成独立的 Anthropic API Key
- ✅ 一键更新 API Key(Renew Key)
- ✅ 启用/禁用配置
- ✅ 独立的测试页面(
/ui/configs/:id/test) - ✅ 自定义模型、Max Tokens、Temperature
- ✅ 实时查看响应结果和 Token 统计
- ✅ 详细的请求/响应记录
- ✅ 支持 URL 路由切换标签(
?tab=logs) - ✅ 查看完整的 JSON 请求体和响应体
- ✅ Token 统计和性能分析
- ✅ 请求总数、成功率
- ✅ Token 使用统计(输入/输出/总计)
- ✅ 平均响应时间
- ✅ 错误统计
POST /v1/messages- 创建消息(需要有效的 Anthropic API Key)POST /v1/messages/count_tokens- 计算 Token 数量GET /v1/admin/me- 获取用户信息(Claude CLI 兼容)
GET /api/configs- 获取所有配置GET /api/configs/:id- 获取指定配置POST /api/configs- 创建新配置PUT /api/configs/:id- 更新配置DELETE /api/configs/:id- 删除配置POST /api/configs/:id/renew-key- 更新 API KeyPOST /api/configs/:id/test- 测试配置
GET /api/configs/:id/stats- 获取统计信息GET /api/configs/:id/logs- 获取请求日志
GET /health- 服务健康状态
详细的生产部署指南请参考 DEPLOYMENT.md
快速部署步骤:
# 1. 复制模板文件
cp deploy-prod.sh.template deploy-prod.sh
cp k8s/deployment.yaml.template k8s/deployment.yaml
cp k8s/ingress.yaml.template k8s/ingress.yaml
# 2. 编辑配置文件,填入你的实际信息
# 3. 执行部署
./deploy-prod.sh├── cmd/ # 命令行入口
├── config/ # 系统配置
├── converter/ # API 格式转换
├── database/ # 数据库操作
├── handler/ # HTTP 处理器
├── models/ # 数据模型
├── client/ # OpenAI 客户端
├── utils/ # 工具函数
├── frontend/ # React 管理界面
└── main.go # 程序入口
cd frontend
npm install
npm run buildgo test ./...代理会自动将 Claude 模型映射到配置的 OpenAI 模型:
claude-3-opus-*→big_modelclaude-3-5-sonnet-*→middle_modelclaude-3-*-haiku-*→small_model
使用 SQLite 存储:
- API 配置(加密存储 OpenAI API Key)
- Token 使用统计
- 详细的请求日志
数据库文件默认位置:./data/proxy.db
- ✅ API Key 加密存储(AES-256-GCM)
- ✅ 基于 API Key 的请求认证
- ✅ 配置级别的访问控制
- ✅ 无效 API Key 自动拒绝(401 Unauthorized)
- ✅ JWT 认证保护管理界面
- ✅ 敏感数据文件自动排除版本控制
- 环境变量: 使用
env.example创建你自己的.env文件,不要提交真实的 API 密钥 - 数据库权限: 确保
data/proxy.db文件权限正确(建议 600) - 生产部署: 始终使用 HTTPS
- 访问控制: 在生产环境中配置防火墙规则
- 密码策略: 使用强密码保护管理界面
更多安全信息请参阅 SECURITY.md
本项目参考了社区中优秀的 Claude API 代理实现,并在此基础上进行了 Go 语言重写和功能增强。