OpenCC 是一个高性能的协议转换器,实现 Anthropic Claude API 和 OpenAI API 之间的双向转换。允许用户以 Anthropic 格式发送请求,自动转换为 OpenAI 格式与 OpenAI 服务器通信,然后将响应转换回 Anthropic 格式。
- 🔄 协议统一: 完整的 Anthropic Claude API 到 OpenAI API 协议转换
- 🚀 高性能: 基于 Express.js 和 TypeScript 构建,支持流式响应
- 🛡️ 安全可靠: 内置认证、速率限制、错误处理和日志记录
- 🎯 功能保真: 智能转换策略,最大化保持原始 API 的功能特性
- 📊 监控完善: 内置健康检查、指标收集和调试信息
- 🔧 配置灵活: 支持环境变量配置和模型映射自定义
注意: 根据设计要求,以下功能被明确禁用:
- ❌ 音频输入: 不支持
input_audio类型内容- ❌ 文件上传: 不支持
file类型内容- ❌ Redis 缓存: 项目不使用 Redis,采用内存缓存
此协议转换器主要用于测试和比较模型能力,不建议作为生产环境的长期解决方案。
- Node.js: ≥ 18.0.0
- npm: ≥ 9.0.0 或 yarn: ≥ 1.22.0
- OpenAI API Key: 有效的 OpenAI API 密钥
git clone https://github.com/your-org/opencc.git
cd openccnpm install
# 或
yarn installcp .env.example .env编辑 .env 文件,设置必要的环境变量:
# 必需配置
OPENAI_API_KEY=your_openai_api_key_here
PORT=3000
# 可选配置
NODE_ENV=development
LOG_LEVEL=info# 开发模式(热重载)
npm run dev
# 生产模式
npm run build
npm start# 使用自定义 OpenAI API
npm start -- --openai-api-key sk-your-key-here --openai-base-url https://api.your-provider.com
# 或通过环境变量
export OPENAI_API_KEY=sk-your-key-here
export OPENAI_BASE_URL=https://api.your-provider.com
npm start- DeepSeek官网的直接支持工具调用,你用官网的API忽略这条
- 只测试了
DeepSeek V3.1,起它版本未测试 - DeepSeek 需要在CC中添加 deepseek-v3.1-code-agent 提示词。
复制这个文件到
.claude目录下,在CLAUDE.md中添加@deepseek-v3.1-code-agent.md - 所以不建议DeepSeek和其他模型混用,混用切换的时候记得去掉
CLAUDE.md中@deepseek-v3.1-code-agent.md,然和/clear以便恢复效果。 - 其实可以把这个提示词放到选项菜单中,但是我懒了,就到这结束吧,等我自己用的时候再来改。
--openai-api-key <key>: OpenAI API 密钥--openai-base-url <url>: OpenAI API 端点 URL--qwen-oauth-file <path>: qwen OAuth 认证文件路径--model <model>: 默认使用的模型--model-mapping <file|json>: 模型映射文件或 JSON 数据,参考 model-mapping.example.json
curl http://localhost:3000/health| 变量名 | 默认值 | 描述 |
|---|---|---|
PORT |
3000 |
服务端口 |
HOST |
localhost |
服务主机 |
NODE_ENV |
development |
运行环境 |
OPENAI_API_KEY |
必需 | OpenAI API 密钥 |
OPENAI_BASE_URL |
https://api.openai.com/v1 |
OpenAI API 基础URL |
OPENAI_TIMEOUT |
30000 |
请求超时时间(毫秒) |
RATE_LIMIT_WINDOW_MS |
900000 |
速率限制窗口期(15分钟) |
RATE_LIMIT_MAX_REQUESTS |
100 |
最大请求数 |
LOG_LEVEL |
info |
日志级别 |
LOG_FORMAT |
json |
日志格式 |
CORS_ORIGIN |
* |
CORS 允许的源 |
REQUEST_TIMEOUT |
60000 |
请求超时时间 |
MAX_REQUEST_SIZE |
10mb |
最大请求体大小 |
可以通过修改 config/model-mapping.json 文件自定义模型映射:
{
"claude-custom-model": {
"openaiModel": "gpt-4",
"contextLength": 8192,
"maxTokens": 4096,
"capabilities": ["text", "tools"]
}
}# 启动开发服务器(热重载)
npm run dev
# 类型检查
npm run typecheck
# 代码格式化
npm run format
# 代码检查
npm run lint
npm run lint:fix# 运行所有测试
npm test
# 监视模式
npm run test:watch
# 覆盖率报告
npm run test:coverage# 构建生产版本
npm run build
# 启动生产服务
npm start# 基础健康检查
curl http://localhost:3000/health
# 详细健康信息
curl http://localhost:3000/health/detailed
# 指标信息
curl http://localhost:3000/health/metrics# 设置详细日志
VERBOSE_LOGGING=true npm run dev
# 设置调试模式
DEBUG_MODE=true npm run dev- API 密钥管理: 确保 OpenAI API 密钥安全存储,不要提交到版本控制
- 速率限制: 根据使用情况调整速率限制配置
- CORS 配置: 生产环境中限制 CORS 源
- 认证: 确保客户端使用有效的 API 密钥
- 网络安全: 使用 HTTPS 部署,考虑反向代理
| 状态码 | 错误类型 | 描述 |
|---|---|---|
| 400 | invalid_request_error |
请求参数无效 |
| 401 | authentication_error |
认证失败 |
| 429 | rate_limit_error |
速率限制 |
| 500 | api_error |
服务器内部错误 |
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Missing required parameter: max_tokens"
}
}- Fork 项目
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 提交 Pull Request
- 使用 TypeScript 严格模式
- 遵循 ESLint 和 Prettier 配置
- 编写测试用例
- 更新文档
- 通用 OpenAI 配置功能指南 - 详细的配置和使用说明
- API 参考文档 - 完整的 API 接口文档
- 开发指南 - 开发环境搭建和扩展指南
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- Anthropic - Claude API 规范
- OpenAI - GPT API 兼容性
- Express.js - Web 框架
- TypeScript - 类型安全
- [Qoder]
- [QwenCode]
- [魔塔]
- [More] - 自己脑补
- 📚 没有支持,自己看着办




