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 的接入需求,不妨一试。