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 的客戶端,才能自動發現服務、讀取詳細能力、恢復事件流和管理非同步任務。
- 沒有任何伺服端協定能讓完全不可設定、且只接受官方雲位址的客戶端接入本地服務。