cj2api:将 ChatJimmy 转换为 OpenAI 兼容 API 的轻量级方案
为什么需要 API 格式转换
开发者在使用 AI 服务时,常会遇到供应商提供的 API 格式与现有代码不兼容的问题。假设你正在维护一个基于 OpenAI API 构建的智能助手,突然需要切换到 ChatJimmy,却发现代码中散落了数十处 api.openai.com 的端点调用——改起来费时费力,还有引入 bug 的风险。
cj2api 正是为解决这一痛点而生。这个仅有 24 Stars 的轻量项目,通过 Cloudflare Worker 将 ChatJimmy 转换为 OpenAI 兼容格式,让你无需修改任何业务代码即可平滑切换。
核心原理
cj2api 的实现思路非常简洁。它本质上是一个 HTTP 代理,运行在 Cloudflare Worker 平台上,拦截发送给 OpenAI 兼容端点的请求,做两件事:
- 路径转换:将
/v1/chat/completions这样的 OpenAI 路径映射到 ChatJimmy 对应的接口 - 格式适配:在请求头中注入 ChatJimmy 所需的认证信息,确保请求能正确路由
核心代码不过几十行,关键逻辑如下:
export default {
async fetch(request, env) {
const url = new URL(request.url);
if (url.pathname.startsWith('/v1/')) {
url.hostname = 'api.chatai.com'; // 目标服务器地址
}
const newRequest = new Request(url, request);
newRequest.headers.set('Authorization', `Bearer ${env.CHATJIMMY_TOKEN}`);
return fetch(newRequest);
}
};
Worker 会自动处理请求转发,开发者无需关心底层网络细节。
部署与配置
零成本部署是 cj2api 的一大卖点。整个部署流程基于 Wrangler CLI,三步即可上线:
# 初始化项目
npx wrangler init cj2api
# 进入目录,修改 wrangler.toml 中的 name 和 routes
cd cj2api
# 部署到 Cloudflare
wrangler deploy
部署完成后,你的 Worker URL 就是新的 API 端点。请求示例:
curl https://cj2api.your-subdomain.workers.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-openai-key" \
-d '{"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Hello"}]}'
项目自带测试页面,浏览器打开 Worker URL 即可直接调试,非常适合快速验证功能。
与同类工具的差异
市面上的 API 格式转换工具并不少见,但 cj2api 有几个鲜明特点:
| 特性 | cj2api | 传统代理服务 |
|---|---|---|
| 部署成本 | 零成本(Cloudflare 免费额度) | 需付费云主机 |
| 配置复杂度 | 仅需配置 Token | 需要搭建服务、配置 Nginx |
| 冷启动 | 无(边缘节点即时响应) | 可能存在延迟 |
| 流式输出 | 原生支持 | 部分工具需额外配置 |
对于个人项目或小型团队而言,无需额外付费、无需运维服务器是实打实的优势。
适用场景
- 已有应用基于 OpenAI SDK 开发,需要接入 ChatJimmy
- 想在多个 AI 服务间快速切换而不改业务代码
- 需要一个临时 API 端点用于测试或原型开发
由于项目托管在 GitHub,任何人都可以 fork 并根据自己需求修改路由规则或添加自定义逻辑。
如果你正面临 AI 服务切换的困扰,不妨试试这个方案——三分钟部署,一个端点,即可复用所有现有代码。