cj2api 实战:将 ChatJimmy 接入 OpenAI 生态的零成本方案

痛点场景

如果你在用 Jimmy Chen 的 AI 服务(ChatJimmy),但项目代码已经基于 OpenAI SDK 编写,改造成本会让人头疼。更麻烦的是,某些边缘计算场景下,你只想用 Cloudflare Worker 的免费额度跑个小工具,却不想维护额外的 API 转发服务。

cj2api 正是为解决这个矛盾而生:它是一个跑在 Cloudflare Worker 上的轻量级代理,将 ChatJimmy 的 API 响应转换为 OpenAI 兼容格式。

核心原理

项目本质是一个 HTTP 代理层,工作流程如下:

  1. 接收 OpenAI 格式的请求(/v1/chat/completions
  2. 将请求体转换为 ChatJimmy 期望的格式
  3. 转发给 ChatJimmy API
  4. 将响应转回 OpenAI 兼容格式返回

关键技术点在于流式输出的处理。ChatJimmy 的流式响应需要通过 Server-Sent Events(SSE)解析,再重新组成为 OpenAI 的 data: 前缀格式。这部分代码是项目的核心价值所在。

部署步骤

部署只需几步,零成本使用 Cloudflare Workers 免费额度:

# 克隆项目
git clone https://github.com/your-repo/cj2api.git
cd cj2api

# 安装 Wrangler CLI(如未安装)
npm install -g wrangler

# 登录 Cloudflare
wrangler login

# 部署
wrangler deploy

部署完成后,你会得到一个 .workers.dev 域名,直接可用于生产环境。

配置与使用

项目支持通过环境变量配置 ChatJimmy 的 API 地址和密钥:

// wrangler.toml 或 Cloudflare 控制台设置
CJ_API_KEY = "your-chatjimmy-api-key"
CJ_API_BASE = "https://api.chatjimmy.com"

调用方式与 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": "Hello"}],
    "stream": true
  }'

独特优势

相比自建代理服务,cj2api 有几个明显优势:

  • 零成本:Cloudflare Workers 每日 10 万次免费请求
  • 无服务器运维:自动扩缩容,无需管理基础设施
  • 内置测试页:访问 Worker 根路径即可打开交互式测试界面
  • 边缘延迟低:请求就近处理,用户体验更好

适用场景

这个方案特别适合:快速原型验证阶段不想投入 API 网关成本、需要在边缘节点调用 AI 能力、已有 OpenAI SDK 代码希望快速切换 provider 的开发者。

项目代码量小、结构清晰,也适合作为学习 Cloudflare Worker + AI API 集成的参考实现。