cj2api 实战:用 Cloudflare Worker 将 ChatJimmy 转换为 OpenAI 兼容 API
当你的应用需要 ChatJimmy,却遇到 API 不兼容
想象这个场景:你的产品已经对接了 OpenAI API,整个架构围绕 /v1/chat/completions 格式设计。现在产品经理说要在特定场景切换到 ChatJimmy——但 ChatJimmy 的 API 格式完全不同,你需要改大量代码,还要处理认证、错误处理各种细节。
有没有一种方案,能让 ChatJimmy "伪装"成 OpenAI API?
cj2api 正是为解决这个问题而生。
核心技术原理
cj2api 本质是一个协议转换层,运行在 Cloudflare Worker 环境中。它的核心逻辑非常清晰:
- 接收符合 OpenAI API 规范的请求
- 将请求参数映射为 ChatJimmy API 格式
- 调用 ChatJimmy 接口获取响应
- 将响应重新格式化为 OpenAI 兼容格式返回
// 核心转换逻辑示意
export default {
async fetch(request) {
const openaiRequest = await request.json();
// 映射到 ChatJimmy 格式
const chatJimmyPayload = {
model: openaiRequest.model,
messages: openaiRequest.messages,
stream: openaiRequest.stream
};
// 调用 ChatJimmy
const response = await fetch(CHATJIMMY_ENDPOINT, {
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}` },
body: JSON.stringify(chatJimmyPayload)
});
return formatAsOpenAI(response, openaiRequest.stream);
}
}
Cloudflare Worker 选择了 V8 隔离环境而非 Node.js,这意味着更快的冷启动和更低的内存占用。对于轻量级 API 代理场景,这种选择恰到好处。
零成本部署的秘密
Cloudflare Workers 有每日 10 万次免费请求额度,对于个人项目或小规模使用几乎等同于免费。这让 cj2api 真正实现了零成本部署。
部署流程只需三步:
# 1. 安装 Wrangler CLI
npm install -g wrangler
# 2. 克隆项目
git clone https://github.com/your-repo/cj2api.git
cd cj2api
# 3. 一键部署
wrangler deploy
部署完成后,你会获得一个 *.workers.dev 域名,立即可用的 OpenAI 兼容 API 就诞生了。
流式输出:技术细节与体验
对于需要实时展示 AI 回复的场景,流式输出(Server-Sent Events)至关重要。cj2api 完整实现了这一能力:
curl -X POST 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": "你好"}],
"stream": true
}'
响应会像真正的 OpenAI API 一样,以 data: {...} 格式逐字推送。
项目自带测试页面(/test 路由),你可以直接在浏览器中验证流式效果,无需写代码调用。
与同类工具的差异
| 特性 | cj2api | 传统代理服务 |
|---|---|---|
| 部署成本 | 免费(Cloudflare 额度) | 需要服务器费用 |
| 冷启动 | < 50ms(V8 隔离) | 数秒(容器启动) |
| 全球加速 | Cloudflare 边缘节点 | 单地域 |
| 维护成本 | 几乎为零 | 需要运维监控 |
对于只是想快速让 ChatJimmy 适配现有 OpenAI 生态的开发者,cj2api 提供了一个零运维、零成本的捷径。
适用场景
cj2api 特别适合以下情况:
- 快速原型验证:不想在 API 适配层浪费时间的开发阶段
- 多模型切换:同一套代码需要兼容 OpenAI 和 ChatJimmy
- 边缘计算场景:需要在靠近用户的节点处理请求
- 成本敏感项目:学生、个人开发者或初创团队
如果你的团队已经有成熟的 API 网关方案,可能不需要这个工具。但对于轻量级需求,cj2api 的简洁设计值得一试。
项目地址:GitHub 搜索 cj2api,Star 数虽不高(24),但胜在实用。