cc / README.md
caidaoli's picture
feat: 更新端口配置,将所有相关文件中的端口从 8080 修改为 7860
5b4ade7
metadata
title: Claude Code to OpenAI API Proxy
emoji: 🔥
colorFrom: red
colorTo: red
sdk: docker
pinned: false

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

Claude to OpenAI API Proxy

🔥 一个强大的Go代理服务器,将Claude API格式的请求无缝转换为OpenAI API格式,使Claude CLI能够与任何OpenAI兼容的服务通信。

部署在 Hugging Face Space 上的容器化应用

✨ 功能特性

  • 动态路由:无需修改代码,通过URL路径动态指定目标API和模型
  • 全功能API兼容:完全支持Claude的/v1/messages端点,包括流式和非流式响应
  • Tool Calling转换:智能转换Claude的tools格式为OpenAI格式
  • Haiku模型快捷方式:支持环境变量配置固定路由
  • 一键配置脚本:交互式配置Claude CLI工具
  • 环境变量配置:支持.env文件进行本地开发配置

🔬 工作原理

动态路由格式

https://<代理地址>/<协议>/<目标API域名>/<路径>/HAIKU_MODEL/<模型名称>

处理流程

  1. 解析URL提取目标API和模型信息
  2. 转发x-api-key头部作为Authorization: Bearer <key>
  3. 将Claude格式请求转换为OpenAI格式
  4. 发送到目标API的/chat/completions端点
  5. 将OpenAI响应转换回Claude格式

🚀 快速开始

本地开发

  1. 克隆项目:
git clone <repository-url>
cd openai2claudecode
  1. 配置环境变量:
cp .env.example .env
# 编辑 .env 文件设置您的配置
  1. 安装依赖:
go mod tidy
  1. 运行服务器:
go run main.go

服务器将在http://localhost:7860启动。

使用配置脚本

运行一键配置脚本来设置Claude CLI:

./claude_proxy.sh

脚本会引导您:

  • 安装Claude CLI(如果需要)
  • 选择API服务(Google Gemini、Groq、OpenAI等)
  • 配置API密钥
  • 设置代理URL
  • 测试配置

Docker部署

  1. 构建Docker镜像:
docker build -t claude-proxy .
  1. 运行容器:
docker run -p 7860:7860 \
  -e DEBUG=false \
  claude-proxy

📖 使用示例

Google Gemini

curl -X POST http://localhost:7860/https/generativelanguage.googleapis.com/v1beta/gemini-1.5-pro/v1/messages \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_GEMINI_API_KEY' \
  -d '{
    "model": "gemini-1.5-pro",
    "max_tokens": 1000,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Groq

curl -X POST http://localhost:7860/https/api.groq.com/openai/v1/llama3-70b-8192/v1/messages \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_GROQ_API_KEY' \
  -d '{
    "model": "llama3-70b-8192",
    "max_tokens": 1000,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

OpenAI

curl -X POST http://localhost:7860/https/api.openai.com/v1/gpt-4/v1/messages \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_OPENAI_API_KEY' \
  -d '{
    "model": "gpt-4",
    "max_tokens": 1000,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

流式响应

添加"stream": true到请求体中启用流式响应:

{
  "model": "gpt-4",
  "max_tokens": 1000,
  "messages": [{"role": "user", "content": "Hello!"}],
  "stream": true
}

Tool Calling

{
  "model": "gpt-4",
  "max_tokens": 1000,
  "messages": [{"role": "user", "content": "What's the weather like?"}],
  "tools": [
    {
      "name": "get_weather",
      "description": "Get the current weather",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {"type": "string"}
        },
        "required": ["location"]
      }
    }
  ]
}

⚙️ 配置

环境变量

创建.env文件来配置本地开发环境:

# 服务器配置
PORT=7860
DEBUG=true

# CORS配置(可选)
CORS_ALLOW_ORIGIN=*
CORS_ALLOW_METHODS=POST,GET,OPTIONS,PUT,DELETE
CORS_ALLOW_HEADERS=Accept,Content-Type,Content-Length,Accept-Encoding,X-CSRF-Token,Authorization,x-api-key,anthropic-version

Haiku快捷方式

设置环境变量后,可以使用简化的URL:

# 然后可以使用包含"haiku"的任何路径
curl -X POST http://localhost:7860/haiku/v1/messages \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_ANTHROPIC_API_KEY' \
  -d '{...}'

🔧 开发

项目结构

.
├── main.go          # 主服务器代码
├── go.mod           # Go模块依赖
├── go.sum           # Go模块校验和
├── claude_proxy.sh  # 配置脚本
├── test.sh          # 测试脚本
├── Dockerfile       # Docker配置
├── .env.example     # 环境变量示例
├── .env             # 本地环境变量(需要创建)
└── README.md        # 项目文档

测试

启动服务器后,访问根路径检查状态:

curl http://localhost:7860/

应该返回:

{
  "message": "Claude to OpenAI API Proxy",
  "version": "1.0.0",
  "environment": "debug"
}

或者运行测试脚本:

./test.sh

🐳 Hugging Face Space 部署

此项目设计为在Hugging Face Space上运行,通过Docker容器部署。

部署配置

  1. 项目使用Docker SDK进行容器化部署
  2. 支持环境变量配置
  3. 自动处理CORS和API代理功能

环境变量设置

在Hugging Face Space设置中配置以下环境变量:

  • PORT: 服务器端口(默认7860)
  • DEBUG: 调试模式(true/false)

🤝 贡献

欢迎提交Issue和Pull Request!

📄 许可证

MIT License


🌟 如果这个项目对你有帮助,请给个Star!