Совместимость с OpenAI и Ollama

8.1 Эндпоинты, совместимые с OpenAI

Сервису СЛЕДУЕТ предлагать интерфейс, совместимый с OpenAI, рядом с интерфейсом LMSP и объявлять его в interfaces с kind, равным openai. Чтобы охватить существующие клиенты, сервис, который это делает, ДОЛЖЕН реализовать как минимум следующие эндпоинты с префиксом /v1:

Эндпоинт Примечания
GET /v1/models Перечисляет модели каталога LMSP. Каждый id — идентификатор модели LMSP.
POST /v1/chat/completions Chat Completions, с потоковой передачей и без неё.
POST /v1/responses Форма OpenAI Responses.
POST /v1/embeddings В основном интерфейсе LMSP 1.0 нет эндпоинта эмбеддингов. Адаптер обслуживает этот эндпоинт напрямую для моделей, у которых capabilities.embeddings равно true.

Эти эндпоинты принимают те же Bearer-токены, что и интерфейс LMSP. Клиент, говорящий на протоколе OpenAI, указывает токен LMSP как свой API-ключ.

Первая реализация может начать с /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 могут автоматически обнаруживать сервис, читать его подробные возможности, возобновлять потоки событий и управлять асинхронными задачами.
  • Никакой серверный протокол не заставит работать клиент, который нельзя настроить и который принимает только официальные облачные адреса.