cj2api:将 ChatJimmy 转换为 OpenAI 兼容 API 的零成本方案
技术痛点:想用 ChatJimmy,应用却只认 OpenAI 格式
当你找到一款不错的 AI 服务,却发现自己的项目只支持 OpenAI 的 API 格式——这大概是每个开发者都经历过的尴尬。
ChatJimmy 是一款有自己的接口规范的 AI 服务,但很多开源项目、SDK 和应用都是基于 OpenAI 的 /v1/chat/completions 格式开发的。直接对接意味着要改代码、做适配,麻烦且容易出错。
cj2api 就是为解决这个"接口不兼容"问题而生的。
项目简介
cj2api 是一个轻量级的转换层,运行在 Cloudflare Worker 上。它的核心功能只有一个:把 ChatJimmy 的请求/响应格式翻译成 OpenAI 兼容的形式。
关键特性:
- 零成本部署(利用 Cloudflare 免费额度)
- 原生支持 SSE 流式输出
- 自带 Web 测试页面
- 单文件部署,配置简单
技术架构
项目采用标准的 Cloudflare Worker 架构,核心逻辑分为三层:
请求转换层:接收 OpenAI 格式的请求,提取 model、messages 等字段,转换为 ChatJimmy 的接口格式。
代理转发层:使用 fetch API 将转换后的请求发送到 ChatJimmy 服务,支持流式和非流式两种模式。
响应转换层:将 ChatJimmy 的响应重新格式化为 OpenAI 的 chat/completions 标准格式。
// 核心代理逻辑示例
export default {
async fetch(request, env) {
const url = new URL(request.url);
// 路由到 ChatJimmy
const targetUrl = `https://api.chatjimmy.com/v1/chat/completions`;
// 转发请求
const response = await fetch(targetUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(await request.json())
});
return new Response(response.body, {
headers: {
'Content-Type': 'text/event-stream',
...Object.fromEntries(response.headers)
}
});
}
};
部署流程
使用 Wrangler CLI 部署,整个过程不超过 5 分钟:
# 安装 Wrangler
npm install -g wrangler
# 克隆项目
git clone https://github.com/yourrepo/cj2api.git
cd cj2api
# 登录 Cloudflare
wrangler login
# 部署
wrangler deploy
部署完成后,你会获得一个 *.workers.dev 域名,API 端点即可直接使用。
使用示例
部署完成后,按以下方式调用:
curl https://your-worker.workers.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'
项目自带的测试页面(/test 路由)提供了可视化的调试界面,可直接在浏览器中发送请求、查看响应。
与同类工具的对比
| 特性 | cj2api | 商业 API 转换服务 | 自建代理服务器 |
|---|---|---|---|
| 成本 | 免费 | 按调用计费 | 服务器费用 |
| 部署难度 | 5 分钟 | 即用 | 数小时 |
| 维护成本 | 低 | 无 | 高 |
| 延迟 | 略高 | 低 | 取决于服务器 |
核心差异在于零成本和开箱即用。对于个人项目、小团队或临时需求,不需要为每个月几十美元的服务器账单操心。
适用场景
cj2api 特别适合以下场景:
- 快速验证:想测试 ChatJimmy 效果,但不想改现有代码
- 个人项目:预算有限,不想为 API 转换付费
- 边缘计算:需要低延迟的全球化 API 访问
如果你正在寻找一个简单、免费且可靠的接口转换方案,cj2api 值得一试。