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 兼容端点的请求,做两件事:

  1. 路径转换:将 /v1/chat/completions 这样的 OpenAI 路径映射到 ChatJimmy 对应的接口
  2. 格式适配:在请求头中注入 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 服务切换的困扰,不妨试试这个方案——三分钟部署,一个端点,即可复用所有现有代码。