Совместимость с OpenAI и Ollama
- Нормативная
- Черновик 1.0
- Обновлено
- Открыть как Markdown
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 могут автоматически обнаруживать сервис, читать его подробные возможности, возобновлять потоки событий и управлять асинхронными задачами.
- Никакой серверный протокол не заставит работать клиент, который нельзя настроить и который принимает только официальные облачные адреса.