Skip to content

jeffery9/openai-claude-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenAI Claude Proxy

一个完整的 OpenAI 服务商管理系统,为 Claude Code 提供 OpenAI AI 能力支持。

功能特性

  • 🔄 API 兼容性: 完全兼容 Claude SDK 接口,无需修改现有代码
  • 🏊‍♂️ 服务商池子: 支持多个 OpenAI 服务商的负载均衡和故障转移
  • 🎛️ Web 管理界面: 直观的服务商管理和监控界面
  • 📊 使用统计: 详细的请求统计和成功率监控
  • 🏥 健康检查: 自动检测服务商健康状态
  • ⚖️ 负载均衡: 支持加权轮询、随机选择、最少连接数等策略
  • 🔧 YAML 配置: 灵活的配置文件支持环境变量

alt text

快速开始

1. 配置环境变量

export OPENAI_API_KEY_1="your-openai-api-key"  
export AZURE_OPENAI_KEY="your-azure-openai-key"  
export CUSTOM_API_KEY="your-custom-api-key"

2. 启动服务

# 使用 Docker Compose  [header-6](#header-6)
docker-compose up -d  
  
# 或者直接运行  [header-7](#header-7)
go run main.go

3. 配置 Claude Code

在 Claude Code 中设置环境变量:

export ANTHROPIC_API_KEY="dummy-key"  
export ANTHROPIC_BASE_URL="http://localhost:8080"

4. 访问管理界面

打开浏览器访问 http://localhost:8081 进行服务商管理。

配置说明

config.yaml

openai_providers:  
  pool:  
    - id: "provider-1"  
      name: "OpenAI Official"  
      api_key: "${OPENAI_API_KEY_1}"  
      base_url: "https://api.openai.com"  
      model: "gpt-4"  
      enabled: true  
      weight: 10  
      max_requests_per_minute: 60  
      timeout: 30s  
  
load_balancing:  
  strategy: "weighted_round_robin"  
  health_check:  
    enabled: true  
    interval: 30s  
    timeout: 10s  
  
failover:  
  enabled: true  
  max_retries: 3  
  retry_delay: 1s  
  
server:  
  port: 8080  
  admin_port: 8081  
  log_level: "info"

API 端点

Claude 兼容 API (端口 8080)

  • POST /v1/messages - 创建消息
  • POST /v1/messages/streaming - 流式消息
  • GET /health - 健康检查

管理 API (端口 8081)

  • GET /api/providers - 获取服务商列表
  • POST /api/providers - 创建服务商
  • PUT /api/providers/{id} - 更新服务商
  • DELETE /api/providers/{id} - 删除服务商
  • GET /api/providers/{id}/usage - 获取使用统计
  • GET /api/health/all - 获取所有服务商健康状态

在 Claude Code 中使用

import "github.com/anthropics/anthropic-sdk-go"  
  
client := anthropic.NewClient()  
message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{  
    MaxTokens: 1024,  
    Messages: []anthropic.MessageParam{  
        anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),  
    },  
    Model: anthropic.ModelClaudeSonnet4_20250514,  
})

部署

Docker 部署

docker build -t openai-claude-proxy .  
docker run -p 8080:8080 -p 8081:8081 \  
  -e OPENAI_API_KEY_1="your-key" \  
  openai-claude-proxy

Kubernetes 部署

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: openai-claude-proxy  
spec:  
  replicas: 2  
  selector:  
    matchLabels:  
      app: openai-claude-proxy  
  template:  
    metadata:  
      labels:  
        app: openai-claude-proxy  
    spec:  
      containers:  
      - name: proxy  
        image: openai-claude-proxy:latest  
        ports:  
        - containerPort: 8080  
        - containerPort: 8081  
        env:  
        - name: OPENAI_API_KEY_1  
          valueFrom:  
            secretKeyRef:  
              name: openai-keys  
              key: api-key-1

监控和日志

系统提供详细的使用统计和健康监控:

  • 请求总数和成功率
  • Token 使用量统计
  • 服务商健康状态
  • 负载均衡分布

故障排除

常见问题

  1. 服务商连接失败: 检查 API Key 和 Base URL 配置
  2. 负载均衡不工作: 确认多个服务商都已启用且健康
  3. Claude Code 连接失败: 检查环境变量 ANTHROPIC_BASE_URL 设置

日志查看

# Docker 日志  [header-8](#header-8)
docker-compose logs -f  
  
# 直接运行日志  [header-9](#header-9)
./main 2>&1 | tee app.log

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published