OpenAI 與 Ollama 相容層

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