OpenAI 到 Claude API 的代理服务,支持请求格式自动转换、Prompt Caching 优化、多渠道负载均衡和 Web 管理界面。
docker run -d \
--name api-cache-proxy \
-p 9090:9090 \
-v $(pwd)/data:/data \
-e TZ=Asia/Shanghai \
qc0624/api-proxy:latest
创建 docker-compose.yml:
services:
api-cache-proxy:
image: qc0624/api-proxy:latest
container_name: api-cache-proxy
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
- TARGET_API=https://api.anthropic.com
- DEFAULT_MODEL=claude-sonnet-4-20250514
启动服务:
docker-compose up -d
打开浏览器访问:http://localhost:9090
from openai import OpenAI
# 指向代理服务
client = OpenAI(
base_url="http://localhost:9090/v1",
api_key="your-api-key" # 如果启用了认证
)
# 像使用 OpenAI 一样使用
response = client.chat.completions.create(
model="claude-sonnet-4-20250514",
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(response.choices[0].message.content)
curl -X POST http://localhost:9090/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "claude-sonnet-4-20250514",
"messages": [{"role": "user", "content": "Hello!"}]
}'
stream = client.chat.completions.create(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "Count to 10"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
| 变量 | 默认值 | 说明 |
|---|---|---|
TARGET_API | https://api.anthropic.com | Claude API 地址 |
PROXY_PORT | 9090 | 代理服务端口 |
DEFAULT_MODEL | claude-sonnet-4-20250514 | 默认模型(gpt-* 会自动映射到此) |
SHOW_THINKING | false | 是否显示 Extended Thinking 内容 |
API_KEY | - | 代理 API Key(可选) |
API_KEY_ENABLED | false | 是否启用 API Key 认证 |
DB_PATH | /data/proxy.db | 数据库路径 |
TZ | Asia/Shanghai | 时区设置 |
自动将 OpenAI 请求格式转换为 Claude 格式:
gpt-4 → claude-sonnet-4-20250514image_url → Claude image format自动在长对话中注入缓存断点,降低成本:
配置项:
max_cache_blocks:最多缓存断点数(默认 4)cache_threshold_default:默认缓存阈值 800 字符cache_threshold_opus:Opus 模型阈值 16000 字符支持 Claude 的深度思考模式:
response = client.chat.completions.create(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "Solve this complex problem..."}],
extra_body={
"thinking": True,
"thinking_budget": 10000
}
)
Web 管理界面支持 PWA(渐进式 Web 应用):
安装方式:
/stats)/logs)/channels)/config)在配置页面启用 API Key 认证后,客户端需要提供密钥:
# 在管理界面生成随机 API Key(sk-xxx 格式)
# 或手动设置自定义密钥
# 客户端使用
curl -H "Authorization: Bearer your-api-key" \
http://localhost:9090/v1/chat/completions
支持所有使用 OpenAI SDK 的工具和应用:
openai_api_baseapi_base数据存储在 SQLite 数据库中(通过 volume 挂载):
备份数据:
# 数据库文件位置
./data/proxy.db
# 备份
cp ./data/proxy.db ./data/proxy.db.backup
# 健康检查端点
curl http://localhost:9090/health
# 获取统计数据
curl http://localhost:9090/api/stats
# 获取模型列表
curl http://localhost:9090/v1/models
MIT License
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请在 GitHub 提交 Issue。
Content type
Image
Digest
sha256:1f15e24ab…
Size
50.1 MB
Last updated
10 months ago
docker pull qc0624/api-proxy