这是一个将 Elmo Chat API 转换为 OpenAI 兼容格式的中间代理服务器。
🚀 在线服务已上线! 无需部署,直接使用API Base URL:
https://elmo-chat-proxy.vercel.app/v1
- ✅ OpenAI 兼容的 API 接口
- ✅ 支持流式和非流式响应
- ✅ 支持多轮对话
- ✅ 自动转换请求和响应格式
- ✅ CORS 支持
- ✅ 完整的错误处理
- ✅ 支持 Vercel 无服务器部署
你可以直接使用已部署的 Vercel 实例,无需本地安装:
API Base URL: https://elmo-chat-proxy.vercel.app/v1
curl -X POST https://elmo-chat-proxy.vercel.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "elmo-chat",
"messages": [{"role": "user", "content": "你好"}]
}'如果你想在本地运行或自行部署:
npm installnpm start服务器默认运行在 http://localhost:3000
运行测试脚本验证所有功能:
./test.sh- Fork 本项目到你的 GitHub
- 在 Vercel 中导入项目
- 点击部署,无需任何配置
- 部署完成后获得你的专属 API URL
在线使用: 将以下示例中的 URL 替换为 https://elmo-chat-proxy.vercel.app/v1/chat/completions
本地使用: 将 URL 替换为 http://localhost:3000/v1/chat/completions
curl -X POST https://elmo-chat-proxy.vercel.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "elmo-chat",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下自己"
}
]
}'curl -X POST https://elmo-chat-proxy.vercel.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "elmo-chat",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下自己"
}
],
"stream": true
}'curl -X POST https://elmo-chat-proxy.vercel.app/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "elmo-chat",
"messages": [
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!有什么可以帮助你的吗?"
},
{
"role": "user",
"content": "今天天气怎么样?"
}
]
}'const response = await fetch('https://elmo-chat-proxy.vercel.app/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'elmo-chat',
messages: [
{ role: 'user', content: '你好' }
]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);from openai import OpenAI
client = OpenAI(
api_key="dummy-key", # Elmo 不需要 API key
base_url="https://elmo-chat-proxy.vercel.app/v1" # 在线使用
# base_url="http://localhost:3000/v1" # 本地使用
)
response = client.chat.completions.create(
model="elmo-chat",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)from openai import OpenAI
client = OpenAI(
api_key="dummy-key",
base_url="https://elmo-chat-proxy.vercel.app/v1" # 在线使用
# base_url="http://localhost:3000/v1" # 本地使用
)
stream = client.chat.completions.create(
model="elmo-chat",
messages=[{"role": "user", "content": "介绍一下人工智能"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")OpenAI 兼容的聊天完成端点。
请求体参数:
model(string): 模型名称,使用 "elmo-chat"messages(array): 消息数组role(string): "user", "assistant", 或 "system" (system 消息会被忽略)content(string): 消息内容
stream(boolean, 可选): 是否使用流式响应,默认 falseenableCache(boolean, 可选): 是否启用缓存,默认 true
响应格式:
非流式响应 (stream=false):
{
"id": "chatcmpl-1728432000000",
"object": "chat.completion",
"created": 1728432000,
"model": "elmo-chat",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!有什么可以帮助你的吗?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 14,
"total_tokens": 14
}
}流式响应 (stream=true): Server-Sent Events (SSE) 格式
列出可用的模型。
{
"object": "list",
"data": [
{
"id": "elmo-chat",
"object": "model",
"created": 1677610602,
"owned_by": "elmo"
}
]
}健康检查端点。
{
"status": "ok",
"message": "Elmo Chat Proxy is running"
}PORT: 服务器端口,默认 3000 (仅本地部署时需要)
PORT=8080 npm start使用 API Base URL: https://elmo-chat-proxy.vercel.app/v1
模型名称: elmo-chat
API Key: 任意填写 (如 dummy-key)
- ChatWise
- Continue (VS Code 插件)
- Open WebUI
- Cherry Studio
- LibreChat
- 任何支持 OpenAI API 格式的应用
配置示例:
API Base URL: https://elmo-chat-proxy.vercel.app/v1
Model: elmo-chat
API Key: dummy-key (随意填写或留空)
该代理服务器的工作原理:
- 接收 OpenAI 格式的聊天请求
- 将请求转换为 Elmo Chat API 格式
- 对于单条消息,自动添加对话历史以触发对话模式
- 调用 Elmo Chat API 并解析响应
- 将响应转换回 OpenAI 格式
- 支持流式和非流式两种响应模式
- Elmo Chat 主要设计用于网页内容总结,但通过适当的参数配置也可以用于对话
- 该代理会自动处理单条消息的情况,添加虚拟对话历史来触发对话模式
- system 角色的消息会被过滤,因为 Elmo 不支持 system 角色
- 不需要 API key,在 LLM 客户端内将 API KEY 部分随意填写即可
- 响应格式完全兼容 OpenAI API
- 在线服务: 可直接使用
https://elmo-chat-proxy.vercel.app/v1,无需部署 - 本地部署: 适合开发调试或自定义需求
ElmoChatProxy/
├── server.js # 主服务器文件
├── package.json # 项目配置
├── vercel.json # Vercel 部署配置
├── test.sh # 测试脚本
├── test-elmo.js # Elmo API 测试文件
├── test-conversation.js # 对话测试文件
├── example.js # Node.js 使用示例
├── example.py # Python 使用示例
└── README.md # 本文档
MIT