OpenAI 与 Ollama 兼容层
- 规范性
- 草案 1.0
- 更新于
- 查看 Markdown
8.1 兼容 OpenAI 的接口
服务应在 LMSP 接口之外提供兼容 OpenAI 的接口,并在 interfaces 中以 kind 为 openai 声明。为覆盖现有客户端,提供该接口的服务必须在 /v1 前缀下至少实现以下接口:
| 接口 | 说明 |
|---|---|
GET /v1/models |
列出 LMSP 目录中的模型。每个 id 都是 LMSP 模型 id。 |
POST /v1/chat/completions |
Chat Completions,支持流式和非流式。 |
POST /v1/responses |
OpenAI Responses 格式。 |
POST /v1/embeddings |
LMSP 1.0 核心接口没有 embeddings 接口。适配器直接提供此接口,供 capabilities.embeddings 为 true 的模型使用。 |
这些接口接受与 LMSP 接口相同的 Bearer Token。使用 OpenAI 协议的客户端把 LMSP 令牌设置为 API Key 即可。
首个实现可以先从 /v1/models 和 /v1/chat/completions 开始(第 12 章)。
8.2 兼容 Ollama 的接口
服务应同时提供以下接口,让为 Ollama 编写的客户端也能使用:
| 接口 | 说明 |
|---|---|
GET /api/tags |
列出 LMSP 目录中的模型。 |
POST /api/chat |
对话。 |
POST /api/generate |
纯文本生成。 |
提供这些接口的服务以 kind 为 ollama 声明一个接口。
8.3 同一个执行内核
兼容层必须只做数据转换,不得另建第二套模型管理逻辑。兼容接口上的请求会被映射为 LMSP 响应,与原生请求在同一个内核和适配器上运行,使用同一个模型目录和同一套认证。
OpenAI Chat Completions
| 请求映射
v
LMSP Response
| 后端适配
v
llama.cpp / Ollama / vLLM / 其他运行时
在 /v1 和 /api 接口上,服务应按对应 API 所定义的格式报告错误,让未修改的客户端能够解析。LMSP 接口始终使用 application/problem+json。
8.4 边界
兼容性有其限度,值得直说:
- 现有的 OpenAI 兼容客户端通常只需修改
base_url,但不能自动获得 LMSP 的发现能力。 - 只有支持 LMSP 的客户端,才能自动发现服务、读取详细能力、恢复事件流和管理异步任务。
- 没有任何服务端协议能让完全不可配置、且只接受官方云地址的客户端接入本地服务。