cj2api 实战:零成本将 ChatJimmy 接入 OpenAI 生态

痛点场景

你正在开发一个 AI 对话应用,代码里已经封装好了 OpenAI 的调用逻辑。突然接到需求:「接入 ChatJimmy 作为备选模型」。现有代码不支持,改造成本高,难道要重写整个调用层?

这是很多开发者的真实困境:不同 AI 服务商的 API 格式各异,每次接入新模型都要写适配层。有没有一种方式,让非 OpenAI 系的模型也能「伪装」成 OpenAI API?

cj2api 正是为解决这个问题而生。

cj2api 是什么

cj2api 是一个开源的 Cloudflare Worker 项目,核心功能是将 ChatJimmy 的接口转换为 OpenAI 兼容格式。

主要特性:

  • 零成本部署:利用 Cloudflare Worker 的免费额度
  • 流式输出:支持 SSE 方式的流式响应
  • 开箱即用:自带 Web 测试页面
  • 兼容性好:接口格式与 OpenAI API 完全一致

核心原理:协议转换层

cj2api 本质是一个协议转换中间件。它的处理流程如下:

客户端请求(OpenAI 格式)
       ↓
Cloudflare Worker
       ↓
解析 OpenAI 请求结构
       ↓
转换为 ChatJimmy API 格式
       ↓
调用 ChatJimmy 接口
       ↓
接收 ChatJimmy 响应
       ↓
转换为 OpenAI 响应格式
       ↓
返回给客户端

关键实现在于请求体的映射。以聊天补全为例:

// 接收 OpenAI 格式请求
const openaiRequest = await request.json();

// 转换为 ChatJimmy 格式
const chatJimmyRequest = {
  messages: openaiRequest.messages,
  stream: openaiRequest.stream,
  model: openaiRequest.model
};

响应转换同理,无论是普通响应还是流式输出,都需要重新组装成 OpenAI 格式。

部署流程

项目提供了详细的部署指南,步骤非常简洁:

# 1. 安装 Wrangler CLI
npm install -g wrangler

# 2. 克隆项目
git clone https://github.com/xyhelper/cj2api.git
cd cj2api

# 3. 配置 ChatJimmy API 地址
# 编辑 wrangler.toml,修改 api_base_url 为你的 ChatJimmy 地址

# 4. 部署
wrangler deploy

部署完成后,你会获得一个 Worker URL,即可用 OpenAI 的方式调用:

curl https://your-worker.workers.dev/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": false
  }'

为什么选择 Cloudflare Worker

相比传统服务器部署,Cloudflare Worker 有几个优势:

特性 Cloudflare Worker 传统 VPS
成本 免费额度充足 需要付费
冷启动 极快(<5ms) 较慢
全球边缘 自动就近接入 需额外配置
SSL 证书 自动配置 手动申请

对于个人项目或小规模应用,Worker 完全能够满足需求,且无需担心服务器运维。

与同类工具的对比

市面上类似的项目不少,如 OneAPI、NewAPI 等,它们定位更偏向于「多模型聚合管理」。相比之下,cj2api 的特点在于:

  • 专注:只做 ChatJimmy 到 OpenAI 的转换,代码简洁
  • 轻量:单文件实现,依赖少
  • 快速部署:无需数据库,几分钟即可上线

如果你只需要接入 ChatJimmy,且追求极简部署,cj2api 是更好的选择。

适用场景

  • 现有应用想快速切换到 ChatJimmy 模型
  • 开发调试时需要统一的 API 调用方式
  • 个人项目预算有限,希望零成本运行 AI 接口

项目代码开源在 GitHub,Star 虽不多,但胜在实用。如果你正好有 ChatJimmy 的接入需求,不妨一试。