cj2api 实战:3分钟将 ChatJimmy 接入任何 OpenAI 生态应用
痛点:被平台绑定的 AI 应用
你是否遇到过这种情况:找到一款性价比不错的 AI 模型服务,但项目里所有代码都是针对 OpenAI API 写的,改起来工作量巨大?
或者你同时维护多个 AI 应用,需要在不同的模型提供商之间切换,每次改配置都要改一堆代码?
cj2api 就是为解决这个痛点而生的。
它是什么
cj2api 是一个部署在 Cloudflare Worker 上的轻量级代理服务。它的核心功能只有一个:将 ChatJimmy 的 API 响应转换为 OpenAI 兼容的格式。
这样一来,所有支持 OpenAI API 的应用——LangChain、LlamaIndex、各种聊天 UI——都能直接使用 ChatJimmy,无需任何代码修改。
核心原理
项目采用了标准的 Cloudflare Worker 架构,请求流程如下:
客户端 → Cloudflare Worker → ChatJimmy API → Worker 转换格式 → 客户端
Worker 在中间做了两件事:
- 请求转换:将 OpenAI 格式的请求体(model、messages、temperature 等)转换为 ChatJimmy 需要的格式
- 响应转换:将 ChatJimmy 返回的数据重新组装成 OpenAI 的
/v1/chat/completions响应格式
如果启用流式输出,Worker 会拦截 Server-Sent Events (SSE) 流,逐行转换数据格式后实时推送回客户端。
零成本部署的秘密
Cloudflare Worker 有每天 10 万次免费请求的额度,对于个人项目和小团队来说基本等于不要钱。
部署只需三步:
# 1. 克隆项目
git clone https://github.com/your-repo/cj2api.git
cd cj2api
# 2. 安装依赖
npm install
# 3. 部署到 Cloudflare
npx wrangler deploy
部署完成后,你会获得一个 *.workers.dev 的域名,直接可用。
快速上手
配置好 ChatJimmy 的 API Key 后,使用方式与 OpenAI API 完全一致:
curl https://your-worker.workers.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_CHATJIMMY_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "你好"}],
"stream": true
}'
返回格式与 OpenAI API 完全兼容:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "你好!有什么可以帮助你的吗?"},
"finish_reason": "stop"
}]
}
自带测试页
项目内置了一个简单的 Web 测试页面,访问根路径 https://your-worker.workers.dev/ 即可打开。
这个页面可以直接发送测试请求、查看返回结果,对于调试和验证 API 工作状态非常方便。
与同类工具的差异
| 特性 | cj2api | 通用 API 转换工具 |
|---|---|---|
| 部署成本 | 完全免费 | 需付费云主机 |
| 延迟 | 边缘部署,全球低延迟 | 取决于服务器位置 |
| 流式支持 | ✅ 原生支持 | 部分支持 |
| 配置复杂度 | 极简,仅需 API Key | 通常需要更多配置 |
适用场景
- 想在 OpenAI 生态应用中使用 ChatJimmy 的开发者
- 需要在多个 AI 服务之间快速切换的项目
- 不想支付高昂云服务器费用、追求零运维成本的小团队
项目目前只有 22 颗 GitHub Stars,还处于早期阶段,但核心功能完整,代码简洁易读,感兴趣的同学可以去看看源码,了解它是如何处理请求和响应的。