Skip to content

james-6-23/Droid2api-Go

Repository files navigation

Droid2API-Go

一个用 Go 编写的高性能 OpenAI 兼容 API 代理服务器,可以将各种 LLM API(Anthropic、OpenAI 等)转换为统一的 OpenAI 格式接口。

✨ 特性

  • 🚀 高性能:Go 语言原生性能,内存占用低,启动速度快
  • 🔄 格式转换:支持 Anthropic、OpenAI 等多种 API 格式自动转换
  • 🔐 灵活认证:支持多种认证方式(环境变量、配置文件、客户端传递)
  • 📡 流式响应:完整支持 SSE 流式输出
  • 🎯 推理控制:支持 Anthropic thinking 和 OpenAI reasoning 功能
  • 🔀 模型重定向:支持自动重定向模型请求到指定模型
  • 容器化部署:提供 Docker 支持,开箱即用

📦 快速开始

Docker Compose 部署(推荐)

# 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/models

Docker 运行

docker 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-go

🔄 更新服务

config.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 秒

⚙️ 配置说明

config.json(内置在镜像中)

配置文件已打包在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:latest

2. 配置文件

创建 ~/.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/models

🚀 API 使用

获取模型列表

curl http://localhost:3030/v1/models

聊天补全(OpenAI 格式,自动转换)

curl -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
  }'

直接转发 Anthropic 格式

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
  }'

直接转发 OpenAI 格式

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"}
    ]
  }'

📡 API 端点

方法 路径 说明
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 ERROR

常见问题

Q: 如何修改配置? 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 -d

Q: 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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages