一个用 Go 编写的高性能 OpenAI 兼容 API 代理服务器,可以将各种 LLM API(Anthropic、OpenAI 等)转换为统一的 OpenAI 格式接口。
- 🚀 高性能:Go 语言原生性能,内存占用低,启动速度快
- 🔄 格式转换:支持 Anthropic、OpenAI 等多种 API 格式自动转换
- 🔐 灵活认证:支持多种认证方式(环境变量、配置文件、客户端传递)
- 📡 流式响应:完整支持 SSE 流式输出
- 🎯 推理控制:支持 Anthropic thinking 和 OpenAI reasoning 功能
- 🔀 模型重定向:支持自动重定向模型请求到指定模型
- � 容器化部署:提供 Docker 支持,开箱即用
# 1. 克隆仓库
git clone https://github.com/james-6-23/Droid2api-Go.git
cd Droid2api-Go
# 2. 配置环境变量(可选)
# 编辑 docker-compose.yml 设置 FACTORY_API_KEY
# 3. 启动服务
docker compose pull
docker compose up -d
# 4. 查看日志
docker compose logs -f
# 5. 验证服务
curl http://localhost:3030/v1/modelsdocker run -d \
--name droid2api-go \
-p 3030:3000 \
-e FACTORY_API_KEY=your-api-key \
ghcr.io/james-6-23/droid2api-go:latest# 克隆仓库
git clone https://github.com/james-6-23/Droid2api-Go.git
cd Droid2api-Go
# 编译
go build -o droid2api-go .
# 运行
./droid2api-goconfig.json已内置在Docker镜像中,更新非常简单:
# 方法1:一行命令更新
docker compose pull && docker compose down && docker compose up -d
# 方法2:分步更新
docker compose pull # 拉取最新镜像
docker compose down # 停止容器
docker compose up -d # 启动新容器
# 查看更新日志
docker compose logs -f更新说明:
- ✅ 每次更新会自动获取最新的 config.json
- ✅ 代码和配置版本完全同步
- ✅ 无需手动管理配置文件
- ⚡ 整个过程约 10-30 秒
配置文件已打包在Docker镜像内,包含以下配置项:
主要配置:
port: 服务端口(默认 3000)user_agent: 用户代理标识system_prompt: 系统提示词dev_mode: 开发模式(详细日志)
模型重定向:
{
"model_redirects": {
"gpt-4": "gpt-4-turbo",
"claude-3-opus": "claude-3-5-sonnet"
}
}客户端请求 gpt-4 时会自动重定向到 gpt-4-turbo
API端点:
{
"endpoint": [
{"name": "openai", "base_url": "https://..."},
{"name": "anthropic", "base_url": "https://..."}
]
}模型列表:
{
"models": [
{
"name": "Claude Opus 4.1",
"id": "claude-opus-4-1-20250805",
"type": "anthropic",
"reasoning": "auto"
}
]
}推理级别说明:
auto: 保持客户端请求的原始设置off: 禁用推理功能low/medium/high: 设置推理预算(Anthropic thinking / OpenAI reasoning)
支持三种认证方式(按优先级排序):
1. 环境变量(推荐)
在 docker-compose.yml 中配置:
environment:
- FACTORY_API_KEY=your-api-key-here
- DROID_REFRESH_KEY=your-refresh-token-here或使用命令行:
docker run -e FACTORY_API_KEY=your-key ghcr.io/james-6-23/droid2api-go:latest2. 配置文件
创建 ~/.factory/auth.json:
{
"access_token": "your-access-token",
"refresh_token": "your-refresh-token"
}3. 客户端请求头
curl -H "X-Factory-API-Key: your-api-key" \
http://localhost:3030/v1/modelscurl http://localhost:3030/v1/modelscurl -X POST http://localhost:3030/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-Factory-API-Key: your-api-key" \
-d '{
"model": "claude-opus-4-1-20250805",
"messages": [
{"role": "user", "content": "Hello"}
],
"stream": true
}'curl -X POST http://localhost:3030/v1/messages \
-H "Content-Type: application/json" \
-H "X-Factory-API-Key: your-api-key" \
-d '{
"model": "claude-opus-4-1-20250805",
"messages": [
{"role": "user", "content": "Hello"}
],
"max_tokens": 1024
}'curl -X POST http://localhost:3030/v1/responses \
-H "Content-Type: application/json" \
-H "X-Factory-API-Key: your-api-key" \
-d '{
"model": "gpt-5-2025-08-07",
"input": [
{"role": "user", "content": "Hello"}
]
}'| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / |
服务信息和健康检查 |
| GET | /v1/models |
获取可用模型列表 |
| POST | /v1/chat/completions |
OpenAI 格式聊天(自动转换) |
| POST | /v1/responses |
直接转发 OpenAI 格式请求 |
| POST | /v1/messages |
直接转发 Anthropic 格式请求 |
| 变量名 | 说明 | 默认值 |
|---|---|---|
PORT |
服务端口 | 3000 |
FACTORY_API_KEY |
API 密钥 | - |
DROID_REFRESH_KEY |
刷新令牌 | - |
Droid2api-Go/
├── internal/
│ ├── config/ # 配置管理
│ ├── logger/ # 日志系统
│ ├── auth/ # 认证模块
│ ├── transformers/ # 请求/响应转换
│ └── handlers/ # HTTP 处理器
├── main.go # 主程序
├── config.json # 配置文件
├── Dockerfile # Docker 构建
└── docker-compose.yml # Docker Compose
与 Node.js 版本对比:
| 指标 | Node.js | Go | 提升 |
|---|---|---|---|
| 镜像大小 | ~200-300MB | ~20-30MB | ↓ 85% |
| 内存占用 | ~150-300MB | ~50-100MB | ↓ 60% |
| 启动时间 | ~1-2秒 | ~0.1-0.5秒 | ↑ 75% |
# 实时日志
docker compose logs -f
# 最近100行日志
docker compose logs --tail=100
# 只看错误日志
docker compose logs | grep ERRORQ: 如何修改配置? A: Fork仓库,修改config.json,推送后GitHub Actions会自动构建新镜像
Q: 如何使用自定义配置? A:
# 方法1: Fork仓库修改config.json
# 方法2: 本地构建
git clone your-fork
cd Droid2api-Go
# 修改config.json
docker compose build
docker compose up -dQ: 401 Unauthorized A: 检查环境变量 FACTORY_API_KEY 是否正确设置
Q: 端口冲突 A: 修改 docker-compose.yml 中的端口映射:
ports:
- "8080:3000" # 改为其他端口Q: 如何回滚版本? A:
# 修改 docker-compose.yml
image: ghcr.io/james-6-23/droid2api-go:v1.0.0 # 指定版本MIT License
- 基于 droid2api Node.js 版本重写
- 感谢 Factory.ai 提供的 API 服务
⭐ 如果这个项目对你有帮助,请给它一个 Star!