cj2api 实战:用 Cloudflare Worker 将 ChatJimmy 转为 OpenAI 兼容 API
痛点场景
你正在使用 ChatJimmy 进行日常开发,它在中文理解和上下文记忆上表现出色。但当你尝试在 Cursor 编辑器中使用 Continue 插件、或搭建基于 LangChain 的 RAG 系统时,这些工具都只认 OpenAI 格式的 API。
换接口?成本飙升。继续用 ChatJimmy?生态工具全废了。
cj2api 正是为解决这个"接口孤岛"问题而生。
核心原理
cj2api 本质是一个协议转换层,部署在 Cloudflare Worker 上运行。架构如下:
Cursor/Continue/LangChain
↓ (OpenAI 格式)
Cloudflare Worker (cj2api)
↓ (ChatJimmy 格式)
ChatJimmy API
↓ (流式/非流式响应)
Worker 转换后返回
↓ (OpenAI 格式)
上游客户端
当客户端发送 /v1/chat/completions 请求时,cj2api 接收请求头、body 和 stream 参数,将 OpenAI 的 messages 格式映射为 ChatJimmy 的请求格式,代理转发后再将响应转换回 OpenAI 格式返回给客户端。
快速部署
部署只需三步,全程免费:
# 1. 安装 Wrangler CLI
npm install -g wrangler
# 2. 克隆项目
git clone https://github.com/your-repo/cj2api.git
cd cj2api
# 3. 部署到 Cloudflare
wrangler deploy
部署完成后,Worker 域名即是你的 API 端点。
配置与调用
在 ChatJimmy 控制台获取 API Key 后,在 Cloudflare Worker 的环境变量中配置:
wrangler secret put CHATJIMMY_API_KEY
# 输入你的 ChatJimmy API Key
调用示例(Python):
from openai import OpenAI
client = OpenAI(
api_key="dummy", # 本地 Worker 不需要真实 key
base_url="https://cj2api.your-subdomain.workers.dev/v1"
)
response = client.chat.completions.create(
model="chat Jimmy",
messages=[{"role": "user", "content": "解释什么是向量数据库"}],
stream=True # 支持流式输出
)
for chunk in response:
print(chunk.choices[0].delta.content, end="", flush=True)
与同类工具的差异
| 特性 | cj2api | API Hub 类方案 | 自建代理服务 |
|---|---|---|---|
| 部署成本 | 零成本(CF 免费额度) | 依赖第三方稳定性 | 需要服务器费用 |
| 延迟 | 全球边缘,低延迟 | 中等 | 取决于服务器位置 |
| 流式输出 | 原生支持 | 部分支持 | 需额外开发 |
| 数据安全 | 完全自控,无第三方中转 | 数据经过第三方 | 完全自控 |
| 测试工具 | 内置测试页 | 需额外工具 | 无 |
最关键的优势是零成本 + 完全自托管:你不需要为 API 转换支付任何费用,数据也不会经过任何第三方服务器。
适用场景
cj2api 适合以下场景:
- 在 Cursor 或 VS Code + Continue 中使用 ChatJimmy 作为代码助手
- 搭建本地 RAG 系统时,想用 ChatJimmy 作为 LLM 后端
- 任何需要 OpenAI 兼容接口但你想继续使用 ChatJimmy 的工具
只需一个 Worker,你就能打通 ChatJimmy 与整个 OpenAI 生态的工具链。