ChatJimmy 转 OpenAI API:cj2api 零成本部署方案详解

痛点:为什么需要格式转换

如果你同时使用 ChatJimmy 和其他 AI 服务,接口兼容问题会让人头疼。现有的代码库大多基于 OpenAI API 格式编写,而 ChatJimmy 的接口并不兼容。每次切换模型,要么重写大段代码,要么维护两套调用逻辑。

更实际的问题是:很多成熟的开源项目和商业产品只支持 OpenAI 格式的 API。要把这些能力集成进来,要么等待官方适配,要么自己动手写一层适配器。cj2api 正是为了打破这道"格式壁垒"而诞生的。

cj2api 是什么

cj2api 是一个运行在 Cloudflare Worker 上的轻量级服务。它的核心功能是将 ChatJimmy 的 API 响应转换为 OpenAI 兼容的格式,让你可以在不修改任何业务代码的情况下,直接用 OpenAI SDK 调用 ChatJimmy。

项目具有三个核心特性:

零成本部署:Cloudflare Worker 提供每月 10 万次免费请求额度,个人使用完全足够。

流式输出:支持 SSE(Server-Sent Events)格式的流式响应,token 逐个返回,适合需要实时展示生成内容的场景。

自带测试页:部署完成后会自动生成一个交互式测试界面,可以直接在浏览器里验证 API 调用效果,无需额外配置 Postman 或 curl。

技术原理与架构

从架构上看,cj2api 采用的是"协议转换层"的思路。Cloudflare Worker 作为中间层,接收 OpenAI 格式的请求,翻译成 ChatJimmy 能理解的格式,再将响应转换回 OpenAI 标准。

客户端请求 (OpenAI 格式)
    ↓
Cloudflare Worker (cj2api)
    ↓ 转换请求格式
ChatJimmy API
    ↓ 获取响应
Cloudflare Worker (cj2api)
    ↓ 转换响应格式
客户端响应 (OpenAI 格式)

Worker 的优势在于:全球边缘节点部署,延迟极低;按请求计费,免费额度充足;无需管理服务器,维护成本为零。

具体来说,请求转换主要处理两个字段:model 名称映射和 messages 格式标准化。响应转换则需要将 ChatJimmy 返回的数据结构调整为 OpenAI 的 chat/completions 格式,包括 content、role、finish_reason 等字段的统一。

快速部署指南

前置准备

  • 一个 Cloudflare 账号(免费注册即可)
  • Node.js 环境(用于安装 Wrangler CLI)

部署命令

# 安装 Wrangler CLI
npm install -g wrangler

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

# 登录 Cloudflare(会弹出浏览器授权)
wrangler login

# 部署 Worker
wrangler deploy

部署成功后,Wrangler 会输出 Worker 的访问地址,格式类似 https://cj2api.xxx.workers.dev

配置环境变量

在项目根目录的 wrangler.toml 中配置:

name = "cj2api"
main = "src/index.js"
compatibility_date = "2024-01-01"

[vars]
CHAT_JIMMY_API_KEY = "your-api-key-here"
CHAT_JIMMY_BASE_URL = "https://api.chatjimmy.com"

也可以在 Cloudflare Dashboard 的 Worker 设置中管理这些变量。

测试调用

部署完成后,可以通过 curl 验证:

curl -X POST https://cj2api.xxx.workers.dev/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer dummy-key" \
  -d '{
    "model": "jimmy-model",
    "messages": [
      {"role": "user", "content": "你好,请介绍一下你自己"}
    ]
  }'

如果需要流式响应,将 stream 设为 true,返回数据会通过 SSE 格式逐条推送。

与同类方案对比

市面上存在类似的 API 转换工具,比如 one-api、NewAPI 等。相比之下,cj2api 的定位更聚焦:

特性 cj2api one-api 其他方案
部署成本 零成本 需要 VPS 多数需付费
专注场景 ChatJimmy 专一 多渠道统一 通用型
配置复杂度 中等
流式支持 原生支持 需额外配置 不一定

如果你的需求只是让 ChatJimmy 接入现有 OpenAI 生态,cj2api 的极简部署和零运维负担很有吸引力。但如果你的场景涉及多渠道 AI 服务的统一管理,或者需要更复杂的鉴权和配额控制,one-api 这类更通用的方案可能更合适。

适用场景与局限性

cj2api 适合以下场景:

  • 已经在使用 ChatJimmy,想要快速接入现有 OpenAI 生态的工具(比如 LangChain、AutoGPT 等)
  • 不想为 API 适配额外付费服务器
  • 快速原型验证阶段,需要流式输出能力

但需要注意它的局限性:目前仅支持 ChatJimmy 到 OpenAI 的单向转换,不支持多渠道汇聚;没有内置的用量统计和权限控制;如果 ChatJimmy API 本身有变更,Worker 代码可能需要同步更新。

快速上手

项目源码和详细文档可以在 GitHub 获取:https://github.com/your-repo/cj2api

克隆项目后,按照上面的部署步骤,大约 5 分钟即可完成从零到可用的 API 转换服务。部署过程中遇到问题,可以查看项目 README 中的常见问题解答。