零成本部署:cj2api 将 ChatJimmy 转换为 OpenAI 兼容 API 全攻略
痛点场景:你的 AI 工具链无法直接用 ChatJimmy
作为一名独立开发者,你正在构建一个 AI 应用。某天你发现了 ChatJimmy——一个性价比极高的 AI 服务,但它的 API 格式与 OpenAI 不兼容。
问题来了:你现有的工具(curl 命令、Postman、代码库)都是基于 OpenAI API 格式设计的。换言之,你需要为 ChatJimmy 单独适配,工作量不小。
cj2api 正是为解决这个「格式孤岛」问题而生。
什么是 cj2api
cj2api 是一个运行在 Cloudflare Worker 上的开源代理服务,核心功能是将 ChatJimmy 的 API 响应转换为 OpenAI 兼容格式。
项目地址:GitHub - cj2api(Stars: 22)
关键特性:
- 零成本部署:利用 Cloudflare Worker 免费额度
- 流式输出:完整支持 Server-Sent Events
- 即开即用:自带测试页面,无需额外工具验证
核心原理
cj2api 的架构非常简洁:
用户请求(OpenAI格式) → Cloudflare Worker → ChatJimmy API → 转换响应 → 返回用户
Worker 端做了两件事:
- 请求转换:将 OpenAI 格式的请求体转换为 ChatJimmy 所需的格式
- 响应转换:将 ChatJimmy 的响应重新格式化为 OpenAI 标准输出
关键代码片段(简化版):
export default {
async fetch(request) {
const body = await request.json();
// 构建 ChatJimmy 请求
const jimmyRequest = {
model: body.model,
messages: body.messages,
stream: body.stream
};
// 发送到 ChatJimmy
const response = await fetch('https://api.chatjimmy.com/v1/chat/completions', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}` },
body: JSON.stringify(jimmyRequest)
});
// 流式或非流式处理
if (body.stream) {
return handleStreamResponse(response);
}
return new Response(await response.text(), {
headers: { 'Content-Type': 'application/json' }
});
}
};
部署步骤
方式一:Wrangler CLI(推荐)
# 安装 Wrangler
npm install -g wrangler
# 登录 Cloudflare
wrangler login
# 创建新 Worker 项目
wrangler init cj2api
# 进入目录并安装依赖
cd cj2api
npm install
# 配置 API Key
wrangler secret put CHATJIMMY_API_KEY
# 输入你的 ChatJimmy API Key
# 部署
wrangler deploy
方式二:在线部署
- 访问 Cloudflare Dashboard
- 创建新的 Worker
- 粘贴 cj2api 源码
- 设置环境变量
CHATJIMMY_API_KEY - 点击部署
部署完成后,你将获得一个类似 cj2api.xxx.workers.dev 的域名。
使用示例
部署成功后,可以这样调用:
curl https://cj2api.xxx.workers.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'
响应格式完全兼容 OpenAI:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"model": "gpt-3.5-turbo",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "你好!"},
"finish_reason": "stop"
}]
}
与同类工具的差异
| 特性 | cj2api | 传统代理服务 |
|---|---|---|
| 部署成本 | 免费(Cloudflare) | 需要付费服务器 |
| 冷启动 | < 50ms | 数百毫秒 |
| 扩展性 | 自动弹性 | 需手动扩容 |
| 配置复杂度 | 极简 | 中等 |
适用场景
- 快速验证 ChatJimmy 与现有系统的兼容性
- 不想维护独立服务器的个人项目
- 原型开发阶段的技术选型
需要注意的是,由于依赖 Cloudflare 网络,特定地区可能存在访问延迟。项目代码开源,安全性可自行审计。