cj2api:将 ChatJimmy 转换为 OpenAI 兼容 API 的零成本方案

痛点场景

你在开发一个 AI 应用,原计划接入 Claude/GPT 等模型,代码已经写好,接口调用逻辑也都调通了。但实际测试时发现目标模型 Jimmy 并没有提供 OpenAI 格式的 API,导致整个请求层需要重写。不想改代码?不想换模型?cj2api 就是来解决这个问题的。

项目简介

cj2api 是一个轻量级 Cloudflare Worker,它扮演着协议转换层的角色:将 ChatJimmy 的请求格式转换为 OpenAI 兼容的响应格式。这样一来,你的应用只需要发送标准 OpenAI 请求,就能无缝调用 Jimmy 模型。

核心特性:

  • 零成本部署:使用 Cloudflare Workers 免费额度,日均 10 万次请求足够
  • 流式输出:完整支持 Server-Sent Events,无需轮询
  • 自带测试页:部署后可直接在浏览器中验证功能

技术原理

Client (OpenAI格式请求)
        ↓
Cloudflare Worker (协议转换)
        ↓
ChatJimmy API
        ↓
Worker (响应格式转换)
        ↓
Client (OpenAI格式响应)

Worker 接收符合 OpenAI Chat Completions 规范的请求,将其重组为 ChatJimmy 所需的格式。响应返回时,Worker 将 Jimmy 的数据流转换为 SSE 格式,实现真正的流式输出。整个过程在 Edge 网络完成,延迟更低。

快速部署

部署 cj2api 只需几分钟:

# 安装 Wrangler CLI
npm install -g wrangler

# 克隆项目
git clone https://github.com/xxx/cj2api.git
cd cj2api

# 部署到 Cloudflare
wrangler deploy

部署完成后,你会获得一个 Worker URL,这既是你的 API 端点。

使用示例

在代码中调用时,只需将 baseURL 指向你的 Worker 地址:

from openai import OpenAI

client = OpenAI(
    api_key="jc YOUR_JIMMY_API_KEY",
    base_url="https://cj2api.your-account.workers.dev/v1"
)

response = client.chat.completions.create(
    model="jimmy-pro",
    messages=[
        {"role": "user", "content": "解释一下什么是 Cloudflare Worker"}
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content, end="")

API Key 前缀 jc 用于 Worker 识别请求来源,区分不同用户的 Jimmy 账号。

与同类工具的差异

特性 cj2api 通用 API 代理
部署成本 免费(Cloudflare) 需要自备服务器
流式支持 原生 SSE 可能需要额外配置
测试方式 内置 Web UI 需借助 Postman 等工具
配置复杂度 零配置 需调整多项参数

适用场景

cj2api 适合以下情况:现有项目需要快速接入 Jimmy 模型,但不想修改业务代码;个人开发者或小型团队没有预算维护独立 API 服务;需要在多个工具间切换 AI 模型提供商。

如果你正在寻找一个简单、免费且可靠的方式来打通 Jimmy 与现有 AI 开发工具链,这个项目值得一试。

---END---