Sign inSign up

kukuqi/claude-code-proxy

By kukuqi

•Updated about 1 year ago

Image
API management
0

369

kukuqi/claude-code-proxy repository overview

⁠Claude Code 代理服务(typescript版)

本服务是一个代理程序,用于将 Anthropic 的 Claude API 格式无缝转换为兼容 OpenAI 的 API 格式。基于 Hono 框架和 Bun 运行时构建,可部署到 Cloudflare Workers、Docker 或作为独立 CLI 工具使用。

⁠功能特性

  • API 格式转换:在 Claude 与 OpenAI API 间无缝转换
  • 消息规范化:自动处理嵌套内容数组及工具调用映射
  • 流式支持:同时支持流式与非流式响应
  • 多种部署方式:支持 Cloudflare Workers、Docker 或 npm 包
  • CLI 接口:独立可执行文件,内置版本和帮助命令
  • 模型路由:根据任务类型动态选择推理或补全模型

⁠安装与使用

⁠NPM 包(推荐)
⁠全局安装
# 全局安装
npm install -g @kiyo-e/claude-code-proxy

# 默认端口启动(3000)
claude-code-proxy

# 或指定端口
claude-code-proxy --port 8080
⁠按需执行(npx / bunx)

无需安装即可运行:

# 使用 npx 默认端口(3000)
npx @kiyo-e/claude-code-proxy

# 使用 bunx 指定端口
bunx @kiyo-e/claude-code-proxy --port 8080
⁠与 Claude Code 搭配使用
# 设置代理地址(使用你启动代理时的端口)
export ANTHROPIC_BASE_URL=http://localhost:3000 

# 使用 claude 命令
claude "帮我 review 这段代码"
⁠Docker(快速开始)
# 拉取镜像
docker pull kukuqi/claude-code-proxy:ts

# GitHub Models(默认)
docker run -d -p 3000:3000 -e CLAUDE_CODE_PROXY_API_KEY=你的_github_token kukuqi/claude-code-proxy:ts

# OpenRouter
docker run -d -p 3000:3000 \
  -e CLAUDE_CODE_PROXY_API_KEY=你的_openrouter_key \
  -e ANTHROPIC_PROXY_BASE_URL=https://openrouter.ai/api/v1 \
  -e REASONING_MODEL=z-ai/glm-4.5-air:free \
  -e COMPLETION_MODEL=z-ai/glm-4.5-air:free \
  -e REASONING_EFFORT=high \
  kukuqi/claude-code-proxy:ts

# 与 Claude Code 一起使用
ANTHROPIC_BASE_URL=http://localhost:3000 claude "帮我 review 这段代码"
⁠使用环境文件配置
# 创建 .env 文件
cat > .env << EOF
CLAUDE_CODE_PROXY_API_KEY=your api key
ANTHROPIC_PROXY_BASE_URL=https://open.bigmodel.cn/api/v1
REASONING_MODEL=glm-4.5
COMPLETION_MODEL=glm-4.5
REASONING_MAX_TOKENS=4096
COMPLETION_MAX_TOKENS=2048
REASONING_EFFORT=high
DEBUG=true
PORT=3000
EOF

# 带环境文件运行
docker run -d -p 3000:3000 --name zhipu --env-file .env kukuqi/claude-code-proxy:ts

# 查看运行状态
docker logs -f --tail 100 zhipu

⁠查看接口
http://localhost:3000

{
    "status": "ok",
    "message": "Claude Code Proxy is running",
    "config": {
        "ANTHROPIC_PROXY_BASE_URL": "https://free.v36.cm/v1",
        "REASONING_MODEL": "gpt-4o-mini",
        "COMPLETION_MODEL": "gpt-4o-mini",
        "REASONING_MAX_TOKENS": "4096",
        "COMPLETION_MAX_TOKENS": "2048",
        "REASONING_EFFORT": "high"
    }
}

# Claude code通用接口格式

http://localhost:3000/v1/messages
⁠Cloudflare Workers
# 部署到 Cloudflare Workers
bun run deploy

# 在 Workers 控制面板配置环境变量
# 或通过 wrangler CLI:
npx wrangler secret put CLAUDE_CODE_PROXY_API_KEY
npx wrangler secret put ANTHROPIC_PROXY_BASE_URL

部署后,你的代理将可通过 https://你的-worker-名称.你的子域名.workers.dev 访问。

⁠与 Claude Code 搭配使用
# 将部署的 Worker URL 设为 base URL
export ANTHROPIC_BASE_URL=https://你的-worker-名称.你的子域名.workers.dev

# 正常使用 Claude Code
claude "帮我 review 这段代码"
claude "解释这个函数并给出改进建议"
⁠完整示例
  1. 部署代理:
git clone https://github.com/kiyo-e/claude-code-proxy
cd claude-code-proxy
bun install
bun run deploy
  1. 设置环境变量:
# GitHub Models(推荐)
npx wrangler secret put CLAUDE_CODE_PROXY_API_KEY
# 输入你的 GitHub Personal Access Token

# OpenRouter
npx wrangler secret put CLAUDE_CODE_PROXY_API_KEY
# 输入你的 OpenRouter API Key
npx wrangler secret put ANTHROPIC_PROXY_BASE_URL
# 输入:https://openrouter.ai/api/v1
npx wrangler secret put REASONING_MODEL
# 输入:z-ai/glm-4.5-air:free
npx wrangler secret put COMPLETION_MODEL
# 输入:z-ai/glm-4.5-air:free
  1. 测试部署:
curl https://你的-worker-名称.你的子域名.workers.dev
  1. 与 Claude Code 一起使用:
# 如未安装 Claude Code,请先安装
npm install -g @anthropics/claude-code

# 设置代理 URL
export ANTHROPIC_BASE_URL=https://你的-worker-名称.你的子域名.workers.dev

# 使用 Claude Code
claude "Review 这段 TypeScript 代码并提出改进建议"

⁠开发

⁠本地开发
# 安装依赖
bun install

# 热重载开发服务器(端口 3000)
bun run start

# Cloudflare Workers 开发
bun run dev

# 构建 CLI 包
bun run build

# 测试 CLI
./bin --help
⁠构建与发布
# 构建并发布 npm 包
bun run build
npm publish

⁠配置

⁠环境变量
  • CLAUDE_CODE_PROXY_API_KEY - 上游 API 的 Bearer Token
  • ANTHROPIC_PROXY_BASE_URL - 上游 API URL(默认:https://models.github.ai/inference)⁠
  • REASONING_MODEL - 推理任务模型(默认:openai/gpt-4.1)
  • COMPLETION_MODEL - 补全任务模型(默认:openai/gpt-4.1)
  • REASONING_MAX_TOKENS - 推理模型最大 token 数(可选)
  • COMPLETION_MAX_TOKENS - 补全模型最大 token 数(可选)
  • REASONING_EFFORT - 推理模型推理努力级别(可选,如:"low"、"medium"、"high")
  • DEBUG - 启用调试日志(默认:false)
  • PORT - CLI 模式服务器端口(默认:3000)
⁠Cloudflare Workers 配置

通过 Workers 控制面板或 wrangler CLI 设置环境变量:

# 设置密钥(敏感数据推荐)
npx wrangler secret put CLAUDE_CODE_PROXY_API_KEY
npx wrangler secret put ANTHROPIC_PROXY_BASE_URL

# 设置普通环境变量
npx wrangler env put REASONING_MODEL "z-ai/glm-4.5-air:free"
npx wrangler env put COMPLETION_MODEL "z-ai/glm-4.5-air:free"
npx wrangler env put REASONING_EFFORT "high"
npx wrangler env put DEBUG "false"

或通过 wrangler.toml 配置:

[env.production.vars]
REASONING_MODEL = "z-ai/glm-4.5-air:free"
COMPLETION_MODEL = "z-ai/glm-4.5-air:free"
REASONING_EFFORT = "high"
DEBUG = "false"
⁠CLI 选项
claude-code-proxy [选项]

选项:
  -v, --version    显示版本号
  -h, --help       显示帮助信息
  -p, --port PORT  设置服务器端口(默认:3000)

⁠GitHub Actions 集成

在 issue 与 PR 中启用 @claude 提及:

name: Claude PR 助手
on:
  issue_comment:
    types: [created]
  pull_request:
    types: [opened, synchronize]

jobs:
  claude-code-action:
    if: contains(github.event.comment.body, '@claude') || github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    services:
      claude-code-proxy:
        image: ghcr.io/kiyo-e/claude-code-proxy:latest
        ports:
          - 3000:3000
        env:
          CLAUDE_CODE_PROXY_API_KEY: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v4
      - name: 运行 Claude PR Action
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.GITHUB_TOKEN }}
        env:
          ANTHROPIC_BASE_URL: http://localhost:3000

⁠使用示例

⁠与 Cloudflare Workers 搭配使用 Claude Code

部署代理到 Cloudflare Workers 后:

# 将 Worker URL 设为 API base
export ANTHROPIC_BASE_URL=https://claude-proxy.你的子域名.workers.dev

# 使用 Claude Code 完成各种任务
claude "Review 这个 JavaScript 函数潜在的 bug"
claude "为这个 API 响应生成 TypeScript 接口"
claude "优化这个 React 组件以获得更好性能"
claude "解释这个复杂正则表达式的作用"

# 与特定文件一起使用
claude "检查这个 package.json 的安全漏洞" package.json
claude "为这个 README 提出改进建议" README.md
⁠直接调用 API

也可直接通过 HTTP 请求使用代理:

# 健康检查
curl https://claude-proxy.你的子域名.workers.dev

# 发送消息(示例)
curl -X POST https://claude-proxy.你的子域名.workers.dev/v1/messages \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-sonnet-20240229",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "你好,Claude!"
      }
    ]
  }'

⁠API 端点

  • GET / - 健康检查与配置状态
  • POST /v1/messages - 兼容 OpenAI 的 Claude API 代理端点

⁠架构

代理负责以下功能:

  • 消息转换:将 Claude 嵌套内容结构转为 OpenAI 的扁平格式
  • 工具调用映射:将 tool_use/tool_result 转换为 tool_calls/tool 角色
  • 模式转换:移除 format: 'uri' 约束以保证兼容性
  • 流式响应:支持 SSE 实时响应
  • 模型选择:根据请求特征动态路由

⁠支持的供应商

  • GitHub Models(默认)- 使用 GitHub Token 认证
  • OpenRouter - 支持多种开源模型
  • 自定义 OpenAI 兼容 API - 任何遵循 OpenAI 格式的 API

基于 Bun⁠ 与 Hono⁠ 构建

=============================================================================================================================================

⁠Claude Code 代理服务器(python版)

一个代理服务器,使 Claude Code 能够与兼容 OpenAI 的 API 提供商配合使用。将 Claude API 请求转换为 OpenAI API 调用,让你可以通过 Claude Code CLI 使用各种 LLM 提供商。

⁠功能特点

  • 完全兼容 Claude API:完整的 /v1/messages 端点支持
  • 支持多种提供商:OpenAI、Azure OpenAI、本地模型(Ollama)以及任何兼容 OpenAI 的 API
  • 智能模型映射:可通过环境变量配置 BIG 和 SMALL 模型
  • 函数调用:完整的工具使用支持,并正确转换
  • 流式响应:实时 SSE 流式传输支持
  • 图像支持:Base64 编码的图像输入
  • 错误处理:全面的错误处理和日志记录

⁠快速开始

⁠1. 安装依赖项
# 使用 UV(推荐)
uv sync

# 或者使用 pip
pip install -r requirements.txt
⁠2. 配置
cp .env.example .env
# 编辑 .env 并添加你的 API 配置
# 注意:环境变量会自动从 .env 文件加载
⁠3. 启动服务器
# 直接运行
python start_proxy.py

# 或者使用 UV
uv run claude-code-proxy

# 或者使用 docker compose
docker compose up -d
⁠4. 与 Claude Code 配合使用
# 如果代理中未设置 ANTHROPIC_API_KEY:
ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY="any-value" claude

# 如果代理中已设置 ANTHROPIC_API_KEY:
ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY="exact-matching-key" claude

⁠配置

应用程序会自动从项目根目录下的 .env 文件加载环境变量,使用 python-dotenv。你也可以直接在 shell 中设置环境变量。

⁠环境变量

必需:

  • OPENAI_API_KEY - 目标提供商的 API 密钥

安全性:

  • ANTHROPIC_API_KEY - 预期的 Anthropic API 密钥,用于客户端验证
    • 如果设置,客户端必须提供此确切的 API 密钥才能访问代理
    • 如果未设置,将接受任何 API 密钥

模型配置:

  • BIG_MODEL - 用于 Claude opus 请求的模型(默认:gpt-4o)
  • MIDDLE_MODEL - 用于 Claude opus 请求的模型(默认:gpt-4o)
  • SMALL_MODEL - 用于 Claude haiku 请求的模型(默认:gpt-4o-mini)

API 配置:

  • OPENAI_BASE_URL - API 基础 URL(默认:https://api.openai.com/v1)

服务器设置:

  • HOST - 服务器主机(默认:0.0.0.0)
  • PORT - 服务器端口(默认:8082)
  • LOG_LEVEL - 日志级别(默认:WARNING)

性能:

  • MAX_TOKENS_LIMIT - 令牌限制(默认:4096)
  • REQUEST_TIMEOUT - 请求超时时间(秒)(默认:90)
⁠模型映射

代理将 Claude 模型请求映射到你配置的模型:

Claude 请求映射到环境变量
包含 "haiku" 的模型SMALL_MODEL默认:gpt-4o-mini
包含 "sonnet" 的模型MIDDLE_MODEL默认:BIG_MODEL
包含 "opus" 的模型BIG_MODEL默认:gpt-4o
⁠提供商示例
⁠OpenAI
OPENAI_API_KEY="sk-your-openai-key"
OPENAI_BASE_URL="https://api.openai.com/v1"
BIG_MODEL="gpt-4o"
MIDDLE_MODEL="gpt-4o"
SMALL_MODEL="gpt-4o-mini"
⁠Azure OpenAI
OPENAI_API_KEY="your-azure-key"
OPENAI_BASE_URL="https://your-resource.openai.azure.com/openai/deployments/your-deployment"
BIG_MODEL="gpt-4"
MIDDLE_MODEL="gpt-4"
SMALL_MODEL="gpt-35-turbo"
⁠本地模型(Ollama)
OPENAI_API_KEY="dummy-key"  # 必需,但可以是虚拟值
OPENAI_BASE_URL="http://localhost:11434/v1"
BIG_MODEL="llama3.1:70b"
MIDDLE_MODEL="llama3.1:70b"
SMALL_MODEL="llama3.1:8b"
⁠其他提供商

任何兼容 OpenAI 的 API 都可以通过设置适当的 OPENAI_BASE_URL 来使用。

⁠使用示例

⁠基本聊天
import httpx

response = httpx.post(
    "http://localhost:8082/v1/messages",
    json={
        "model": "claude-3-5-sonnet-20241022",  # 映射到 MIDDLE_MODEL
        "max_tokens": 100,
        "messages": [
            {"role": "user", "content": "你好!"}
        ]
    }
)

⁠与 Claude Code 集成

该代理设计为与 Claude Code CLI 无缝配合:

# 启动代理
python start_proxy.py

# 使用代理与 Claude Code
ANTHROPIC_BASE_URL=http://localhost:8082 claude

# 或者永久设置
export ANTHROPIC_BASE_URL=http://localhost:8082
claude

⁠测试

测试代理功能:

# 运行综合测试
python src/test_claude_to_openai.py

⁠开发

⁠使用 UV
# 安装依赖项
uv sync

# 运行服务器
uv run claude-code-proxy

# 格式化代码
uv run black src/
uv run isort src/

# 类型检查
uv run mypy src/
⁠项目结构
claude-code-proxy/
├── src/
│   ├── main.py  # 主服务器
│   ├── test_claude_to_openai.py    # 测试
│   └── [其他模块...]
├── start_proxy.py                  # 启动脚本
├── .env.example                    # 配置模板
└── README.md                       # 本文件

⁠性能

  • Async/await 实现高并发
  • 连接池 提高效率
  • 流式支持 实现实时响应
  • 可配置超时 和重试
  • 智能错误处理 并附带详细日志

Tag summary

Content type

Image

Digest

sha256:2203cf6f3…

Size

205.4 MB

Last updated

about 1 year ago

docker pull kukuqi/claude-code-proxy:py