Полный справочник по REST API-эндпоинтам LM Studio, совместимым с OpenAI.

Локальный сервер LM Studio предоставляет HTTP-эндпоинты, которые можно использовать для отправки запросов к загруженным моделям. API спроектирован так, чтобы быть максимально совместимым с клиентскими библиотеками OpenAI, что позволяет легко переключаться между облачными и локальными моделями.

Базовый URL

По умолчанию сервер доступен по адресу:

http://localhost:1234/v1

Если вы изменили порт или включили обслуживание в локальной сети, используйте соответствующий адрес.

Доступные эндпоинты

GET /v1/models

Получает список моделей, доступных на сервере.

Пример запроса:

curl http://localhost:1234/v1/models

Пример ответа:

{
  "object": "list",
  "data": [
    {
      "id": "lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF",
      "object": "model",
      "owned_by": "lmstudio"
    }
  ]
}

POST /v1/chat/completions

Основной эндпоинт для взаимодействия в формате диалога. Поддерживает системные промпты, историю сообщений и потоковую передачу (streaming).

Основные параметры запроса:

  • model (строка, обязательно): Идентификатор загруженной модели
  • messages (массив, обязательно): Список сообщений в формате [{"role": "user", "content": "..."}, ...]
  • stream (логическое, опционально): Если true, ответ передаётся частями (Server-Sent Events)
  • max_tokens (число, опционально): Максимальное количество генерируемых токенов
  • temperature (число, опционально): Степень случайности (0.0 - 1.0)
  • top_p (число, опционально): Порог вероятности для ядерной выборки
  • stop (строка или массив, опционально): Стоп-последовательности, останавливающие генерацию
  • frequency_penalty (число, опционально): Штраф за повторение токенов (-2.0 - 2.0)
  • presence_penalty (число, опционально): Штраф за появление новых тем (-2.0 - 2.0)

Пример запроса:

curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF",
    "messages": [
      {"role": "system", "content": "Ты полезный ассистент."},
      {"role": "user", "content": "Объясни квантование моделей простыми словами."}
    ],
    "temperature": 0.7,
    "max_tokens": 512
  }'

Пример ответа:

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1718000000,
  "model": "lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Квантование — это техника сжатия весов модели..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 150,
    "total_tokens": 174
  }
}

POST /v1/completions

Устаревший (legacy) эндпоинт для текстовых завершений. Рекомендуется использовать /v1/chat/completions для новых проектов.

Принимает параметр prompt (строка) вместо messages и возвращает один объект choices с полем text.

POST /v1/embeddings

Генерирует векторные представления (эмбеддинги) для текста. Используется для семантического поиска, кластеризации и RAG.

Параметры:

  • model: Идентификатор модели для эмбеддингов
  • input: Строка или массив строк

Пример запроса:

curl http://localhost:1234/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nomic-ai/nomic-embed-text-v1.5-GGUF",
    "input": "Локальные языковые модели работают быстрее и обеспечивают приватность данных."
  }'

Потоковая передача (Streaming)

Для получения ответов в реальном времени установите параметр "stream": true. Сервер будет возвращать события в формате SSE (Server-Sent Events).

Формат событий:

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1718000000,"model":"...","choices":[{"index":0,"delta":{"content":"Кван"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1718000000,"model":"...","choices":[{"index":0,"delta":{"content":"тование"},"finish_reason":null}]}

data: [DONE]

Обработка ошибок

API использует стандартные HTTP-коды статуса и возвращает JSON с описанием ошибки:

{
  "error": {
    "message": "Model not loaded",
    "type": "invalid_request_error",
    "param": "model",
    "code": "model_not_loaded"
  }
}

Частые коды ошибок:

  • 400 Bad Request: Неверный формат запроса или отсутствующие обязательные параметры
  • 401 Unauthorized: Требуется API-ключ или ключ неверный
  • 404 Not Found: Указанный эндпоинт или модель не найдены
  • 429 Too Many Requests: Превышен лимит параллельных запросов или очередь заполнена
  • 500 Internal Server Error: Ошибка на стороне сервера (проверьте логи LM Studio)
  • 503 Service Unavailable: Модель не загружена или сервер перегружен

Аутентификация

Если вы включили аутентификацию в настройках сервера, добавляйте заголовок ко всем запросам:

-H "Authorization: Bearer ваш-секретный-ключ"

Ограничения и особенности

  • Формат моделей: Эндпоинты работают только с загруженными в память моделями (обычно GGUF или MLX)
  • Контекстное окно: Если запрос превышает лимит контекста модели, вернётся ошибка context_length_exceeded
  • Инструменты (Function Calling): Поддерживаются через параметры tools и tool_choice (зависит от модели)
  • JSON Mode: Включается через параметр response_format: {"type": "json_object"} (требует поддержки моделью)

Дополнительные ресурсы

Обслуживание в локальной сети

Позвольте другим устройствам в вашей сети использовать этот API-сервер LM Studio

Локальный сервер

Запуск API-сервера LLM на localhost с настройками сервера LM Studio

OpenAI-совместимые эндпоинты

Подробная документация по совместимости с OpenAI API



Оригинал страницы