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 在中间做了两件事:

  1. 请求转换:将 OpenAI 格式的请求体(model、messages、temperature 等)转换为 ChatJimmy 需要的格式
  2. 响应转换:将 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,还处于早期阶段,但核心功能完整,代码简洁易读,感兴趣的同学可以去看看源码,了解它是如何处理请求和响应的。