Обзор
- Информативная
- Черновик 1.0
- Обновлено
- Открыть как Markdown
1.1 Аннотация
Local Model Service Protocol (LMSP) определяет, как клиенты находят и используют сервисы языковых моделей, работающие на устройстве пользователя или в его локальной сети. Он описывает обнаружение сервисов, каталог моделей, синхронную и потоковую генерацию, а также асинхронные задачи, переживающие перезапуск. Кроме того, он определяет, как один и тот же сервис предлагает интерфейс, совместимый с OpenAI, рядом с интерфейсом LMSP, чтобы существующие клиенты продолжали работать.
LMSP не заменяет API OpenAI, Ollama или MCP. Он объединяет их сильные стороны в слое протокола, рассчитанном на резидентный локальный сервис.
1.2 Статус документа
Это первый публичный черновик LMSP 1.0, опубликованный 2026-11-08. «LMSP» — рабочее название. Текст открыт для замечаний и может измениться несовместимо до выхода окончательной версии 1.0.
Нормативным является английский текст. Переводы предоставляются для удобства; при расхождениях приоритет имеет английский текст.
1.3 Основа проектирования
LMSP повторно использует проверенные решения вместо того, чтобы изобретать новые:
- OpenAI Responses API. Структурированные элементы вывода, семантические события, отправляемые сервером, и фоновое выполнение с запросом состояния и отменой для долгих задач. Это эталон для основного интерфейса диалога LMSP. См. потоковые ответы и фоновый режим.
- Ollama. Предоставляет эндпоинты
/v1/models,/v1/chat/completionsи/v1/responses, совместимые с OpenAI, что показывает: один сервис и слой адаптации к OpenAI резко снижают стоимость внедрения. См. совместимость Ollama с OpenAI. - Model Context Protocol (MCP). Его новейшая версия отказывается от обязательной инициализации сессии в пользу обнаружения без состояния: каждый запрос несёт собственные сведения о версии, а клиенты узнают возможности через интерфейс обнаружения. Это подходит для локальных сервисов, где перезапуски, сбои клиентов и обрывы соединений не должны портить состояние протокола. См. MCP.
- Agent2Agent (A2A). Карточки сервисов, явные состояния задач, подписка на задачи и их отмена легли в основу описания сервиса и модели асинхронных задач LMSP. См. A2A.
1.4 Архитектура
LMSP состоит из трёх слоёв над адаптерами, которые общаются со средами выполнения моделей:
+---------------------------------------------------------------+
| Discovery mDNS / DNS-SD + well-known service document |
+---------------------------------------------------------------+
| Core model catalog, responses, SSE, async tasks |
+---------------------------------------------------------------+
| Compatibility OpenAI API, optional Ollama API |
+---------------------------------------------------------------+
| Adapters llama.cpp, Ollama, vLLM, custom runtimes |
+---------------------------------------------------------------+
- Обнаружение. mDNS/DNS-SD и well-known-документ с описанием сервиса (страница 3).
- Ядро. Каталог моделей, синхронные ответы, события, отправляемые сервером, и асинхронные задачи (страницы 5–7).
- Совместимость. API, совместимый с OpenAI, и, по желанию, API, совместимый с Ollama (страница 8).
- Адаптеры. Мосты к llama.cpp, Ollama, vLLM или собственной среде выполнения.
Ведущий принцип — одно ядро выполнения моделей, два семейства интерфейсов. Сервис предлагает интерфейс LMSP и интерфейс OpenAI поверх одного и того же ядра, так что есть единственное место, где загружаются модели, выполняются запросы и отслеживаются задачи.
1.5 Язык требований
Ключевые слова ДОЛЖЕН/ДОЛЖНЫ (MUST), НЕ ДОЛЖЕН/НЕ ДОЛЖНЫ (MUST NOT), ОБЯЗАТЕЛЬНО (REQUIRED), СЛЕДУЕТ (SHOULD), НЕ СЛЕДУЕТ (SHOULD NOT), РЕКОМЕНДУЕТСЯ (RECOMMENDED), МОЖЕТ/МОГУТ (MAY) и НЕОБЯЗАТЕЛЬНО (OPTIONAL) в этом документе следует понимать так, как описано в BCP 14 (RFC 2119, RFC 8174), тогда и только тогда, когда они набраны жирным шрифтом заглавными буквами. В остальных случаях это обычные слова.
Каждая страница помечена как нормативная или информативная. Нормативные страницы определяют требования; информативные дают рекомендации. Примеры информативны. JSON кодируется в UTF-8, а имена полей используют snake_case.
1.6 Терминология
| Термин | Значение |
|---|---|
| Сервис | Резидентный процесс, который реализует LMSP и запускает модели через адаптеры. |
| Клиент | Программа, которая обнаруживает и вызывает сервис: агент, приложение или инструмент. |
| Адаптер | Компонент, который соединяет сервис с одной средой выполнения моделей, например llama.cpp, Ollama или vLLM. |
| Модель | Локально доступная модель, обозначаемая стабильным id. |
| Ответ | Результат одного запроса генерации: элементы вывода, статистика использования и статус. |
| Задача | Сохраняемое асинхронное выполнение запроса ответа с явным состоянием. |
| Событие | Одно событие, отправляемое сервером, с порядковым номером, которое выдаётся во время генерации ответа. |