一个用 TypeScript 开发的 Claude API 代理服务,支持多种 AI 提供商。该服务提供完整的 Claude API 兼容性,同时允许您使用不同的 AI 提供商(OpenAI、Azure OpenAI、Ollama 等)作为后端。
- 完整的 Claude API 兼容性 - 支持完整的
/v1/messages端点 - 多提供商支持 - OpenAI、Azure OpenAI、Ollama、Anthropic
- 直接模型支持 - 直接使用任何模型名称,无需映射
- 流式响应 - 支持所有提供商的流式响应
- 认证系统 - 基于 API 密钥的认证
- 速率限制 - 可配置的速率限制
- 健康检查 - 全面的健康监控
- Vercel 部署 - 开箱即用的 Vercel 部署支持
npm install复制示例配置文件:
cp .env.example .env编辑 .env 文件,配置您的提供商:
# 服务器配置
PORT=3000
NODE_ENV=development
# 默认提供商
DEFAULT_PROVIDER=openai
# OpenAI 配置
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
# Azure OpenAI 配置
AZURE_OPENAI_API_KEY=your_azure_api_key_here
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
AZURE_OPENAI_API_VERSION=2024-02-15-preview
# Ollama 配置
OLLAMA_BASE_URL=http://localhost:11434
# Anthropic 配置
ANTHROPIC_AUTH_TOKEN=your_anthropic_api_key_here
ANTHROPIC_BASE_URL=https://api.anthropic.com
# 速率限制
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
# 日志配置
LOG_LEVEL=info
LOG_FORMAT=simple
# CORS 配置
CORS_ORIGIN=*
CORS_CREDENTIALS=false开发模式:
npm run dev生产模式:
npm run build
npm start设置环境变量指向您的代理:
export ANTHROPIC_AUTH_TOKEN=your_api_key
export ANTHROPIC_BASE_URL=http://localhost:3000然后正常使用 Claude SDK:
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="gpt-4o", # 直接使用提供商支持的模型名称
max_tokens=1000,
messages=[
{"role": "user", "content": "Hello, Claude!"}
]
)
print(message.content)curl -X POST http://localhost:3000/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
"model": "gpt-4o",
"max_tokens": 1000,
"messages": [
{"role": "user", "content": "Hello!"}
]
}'curl -X POST http://localhost:3000/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
"model": "gpt-3.5-turbo",
"max_tokens": 200,
"stream": true,
"messages": [
{"role": "user", "content": "Write a short poem"}
]
}'| 端点 | 方法 | 描述 |
|---|---|---|
/v1/messages |
POST | 创建消息(Claude API 兼容) |
/v1/models |
GET | 列出可用模型 |
/health |
GET | 基本健康检查 |
/health/detailed |
GET | 详细健康检查 |
/health/providers |
GET | 提供商健康状态 |
直接使用您想要的模型名称即可。代理会验证模型是否被配置的提供商支持。如果模型不受支持,您会收到错误消息,指示哪些模型可用。
支持的模型示例:
- OpenAI:
gpt-4o,gpt-4,gpt-3.5-turbo,gpt-4-turbo等 - Anthropic:
claude-3-5-sonnet-20241022,claude-3-haiku-20240307等 - Ollama: 任何已安装的模型名称
- 安装 Vercel CLI:
npm i -g vercel- 部署:
vercel- 在 Vercel 仪表板中设置环境变量:
OPENAI_API_KEYDEFAULT_PROVIDER- 其他必要的配置变量
FROM node:18-alpine
WORKDIR /app
# 复制 package 文件
COPY package*.json ./
COPY tsconfig.json ./
# 安装依赖
RUN npm ci --only=production
# 复制源代码
COPY src/ ./src/
# 构建应用
RUN npm run build
# 暴露端口
EXPOSE 3000
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:3000/health || exit 1
# 启动应用
CMD ["npm", "start"]构建和运行:
# 构建镜像
docker build -t claude-proxy .
# 运行容器
docker run -d \
--name claude-proxy \
-p 3000:3000 \
-e OPENAI_API_KEY=your_key \
-e DEFAULT_PROVIDER=openai \
claude-proxy- 连接您的 GitHub 仓库到 Railway 或 Render
- 在平台仪表板中设置环境变量
- 自动部署
| 变量 | 描述 | 默认值 |
|---|---|---|
PORT |
服务器端口 | 3000 |
NODE_ENV |
环境 | development |
DEFAULT_PROVIDER |
默认 AI 提供商 | openai |
RATE_LIMIT_WINDOW_MS |
速率限制窗口(毫秒) | 900000 (15分钟) |
RATE_LIMIT_MAX_REQUESTS |
窗口内最大请求数 | 100 |
LOG_LEVEL |
日志级别 | info |
LOG_FORMAT |
日志格式 | json |
CORS_ORIGIN |
CORS 源 | * |
CORS_CREDENTIALS |
CORS 凭据 | false |
OPENAI_API_KEY- OpenAI API 密钥(必需)OPENAI_BASE_URL- API 基础 URL(可选)OPENAI_ORGANIZATION- 组织 ID(可选)
AZURE_OPENAI_API_KEY- Azure OpenAI API 密钥(必需)AZURE_OPENAI_ENDPOINT- Azure OpenAI 端点(必需)AZURE_OPENAI_API_VERSION- API 版本(必需,如:2024-02-15-preview)
OLLAMA_BASE_URL- Ollama 服务器 URL(默认:http://localhost:11434)
ANTHROPIC_AUTH_TOKEN- Anthropic API 密钥(必需)ANTHROPIC_BASE_URL- API 基础 URL(可选)
项目包含了完整的测试示例:
# 安装示例依赖
cd examples
npm install axios
# 运行所有示例
node usage.js
# 运行特定示例
node usage.js --simple # 简单消息
node usage.js --stream # 流式消息
node usage.js --models # 列出模型
node usage.js --health # 健康检查src/
├── types/ # TypeScript 类型定义
├── providers/ # 提供商实现
├── middleware/ # Express 中间件
├── routes/ # API 路由
├── utils/ # 工具函数
├── app.ts # Express 应用配置
└── index.ts # 服务器入口点
- 创建继承
AbstractProvider的新提供商类 - 实现必需方法:
sendMessage,sendStreamMessage,listModels,healthCheck - 在类型定义中添加提供商配置
- 在工厂中注册提供商
npm testnpm run build-
提供商认证错误
- 验证 API 密钥是否正确设置
- 检查提供商特定的配置
-
模型不支持错误
- 检查您使用的模型名称是否被当前提供商支持
- 使用
/v1/models端点查看可用模型
-
速率限制
- 调整环境变量中的速率限制设置
- 监控使用模式
-
超时问题
- 增加慢速提供商的超时值
- 检查提供商健康状态
-
内存问题
- 监控内存使用情况
- 如需要增加分配的内存
启用调试日志:
LOG_LEVEL=debug npm run dev这将提供详细的请求/响应日志用于故障排除。
使用健康检查端点监控服务状态:
# 基本健康检查
curl http://localhost:3000/health
# 详细健康检查
curl http://localhost:3000/health/detailed
# 提供商健康状态
curl http://localhost:3000/health/providersMIT License - 详见 LICENSE 文件。