12 - Справочник API
Полный справочник по 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 API