cj2api:将 ChatJimmy 转为 OpenAI 兼容 API 的零成本方案

痛点场景:想用 ChatJimmy,却舍不得重写代码

很多开发者在项目中已经封装好了 OpenAI 的 API 调用逻辑。突然发现 ChatJimmy 效果不错,想切换过去,却发现:

  • API 返回格式完全不同
  • 需要改动现有代码
  • 调试成本不可忽视

cj2api 正是为解决这个矛盾而生。它在 Cloudflare Worker 上运行,把 ChatJimmy 的响应实时转换为 OpenAI 兼容格式,让你的旧代码直接复用。

核心原理:Worker 层做协议转换

cj2api 的架构非常轻量,本质是一个 HTTP 中间层

客户端 → OpenAI 格式请求 → cj2api Worker → ChatJimmy API
ChatJimmy 响应 → cj2api Worker → OpenAI 格式 → 客户端

Worker 接收符合 OpenAI Chat Completion 规范的请求,将请求体解析后重新组装,调用 ChatJimmy 的接口,再将响应流式或同步地转换回 OpenAI 格式。

关键实现点包括:

  • 请求体重构:提取 messages 数组、模型参数等核心字段
  • 流式响应处理:使用 ReadableStream 实时转换 SSE 数据
  • 错误标准化:将 ChatJimmy 的错误映射为 OpenAI 风格的错误码

为什么选择 Cloudflare Worker

部署在 Cloudflare Worker 上有几个实际好处:

  • 免费额度充足:每天 10 万次请求,完全够个人或小团队使用
  • 全球边缘节点:延迟低,无需自己维护服务器
  • 冷启动几乎为零:比传统 Node 服务响应更快
  • 一键部署:通过 Wrangler CLI 即可完成发布

快速部署指南

前置准备

  • Cloudflare 账号(免费即可)
  • ChatJimmy 的 API Key

部署步骤

# 安装 Wrangler CLI
npm install -g wrangler

# 克隆项目
git clone https://github.com/your-repo/cj2api.git
cd cj2api

# 配置环境变量
wrangler secret put CHATJIMMY_API_KEY
# 输入你的 ChatJimmy API Key

# 部署到 Cloudflare
wrangler deploy

部署完成后,你会获得一个 .workers.dev 域名,格式类似:

https://cj2api.xxx.workers.dev/v1/chat/completions

快速验证

项目自带测试页面,访问部署后的域名即可打开 Swagger UI。填入测试消息,点击发送,查看返回的 JSON 结构是否与 OpenAI API 一致。

用 cURL 测试也很简单:

curl https://cj2api.xxx.workers.dev/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer dummy-key" \
  -d '{
    "model": "chatjimmy-model",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'

如果开启 stream: true,你会看到标准的 SSE 流式输出,与 OpenAI 的 /v1/chat/completions 行为完全一致。

与同类工具的差异

特性 cj2api 传统代理方案
部署成本 零成本 需要购买服务器
冷启动 几乎无 有明显延迟
流式支持 原生支持 部分方案不支持
自带测试页 通常需要额外配置
维护成本 无(Cloudflare 托管) 需要自己运维

适用场景

cj2api 特别适合以下情况:

  • 快速原型开发:想先用 ChatJimmy 试试效果,不确定长期使用
  • 现有项目迁移:已有 OpenAI 调用代码,想换后端模型
  • 个人项目:没有预算购买服务器,只想免费跑起来
  • 学习研究:想了解 API 转换层如何实现

如果你正面临 API 格式不兼容的问题,又不想投入运维精力,cj2api 是个值得一试的轻量方案。