LM Studio structured output: получить JSON по схеме через локальный API
На странице · 3 разделов
LM Studio принимает JSON Schema в поле `response_format` локального `/v1/chat/completions` и возвращает текст JSON в `choices[0].message.content`. На примере короткой заметки можно попросить два поля — день и время, затем проверить их по исходнику. Не всякая модель справляется с заданной структурой, а правильный формат не гарантирует правильных фактов.
Хотите получить из короткой заметки день и время в двух отдельных полях для собственной программы? В LM Studio можно попросить локальную модель вернуть JSON — текст с именованными полями — по заранее заданной схеме. Схема задаёт форму ответа, но не проверяет, правильно ли модель поняла заметку. s1
Уровень: инженерный. Нужны терминал и понимание локального API — адреса, на который программа отправляет запрос. Эта инструкция сверена с документацией 1 ноября 2026 года, но Modelium не запускал LM Studio и модель: ниже показан способ проверки на вашем компьютере, не редакционный результат. Пример рассчитан на Windows x64 с AVX2 и Git Bash для команды curl; LM Studio рекомендует 16 ГБ оперативной памяти и 4 ГБ выделенной видеопамяти, но это не подтверждённый минимум выбранной модели. Веса и движок скачиваются заранее; после подготовки локальный сервер и чат, согласно разработчику, могут работать без сети. s1 s3 s6
Как подготовить модель и локальный сервер?
Если приложения ещё нет, начните с установки LM Studio. В разделе Discover найдите точный репозиторий Qwen/Qwen3-8B-GGUF, выберите Qwen3-8B-Q4_K_M.gguf и дождитесь загрузки. Это конкретный кандидат для проверки, а не обещание совместимости и скорости на любом ПК: карточка автора указывает формат и лицензию весов Apache-2.0, но редакция не проверяла поиск и запуск этой ревизии в конкретной Windows-сборке. При нехватке ресурсов не подменяйте файл другим без повторной проверки его карточки. s4 s5
Откройте вкладку Developer и включите локальный сервер LM Studio на 127.0.0.1:1234. Если приложение предлагает загрузить модель в память, выберите скачанный файл. Адрес 127.0.0.1 означает доступ с этого компьютера; не включайте сетевой доступ и CORS ради примера. В Git Bash выполните curl -fsS http://127.0.0.1:1234/v1/models. В ответе найдите data и точное значение id нужной модели; при загрузке по требованию в списке могут быть и модели, ещё не находящиеся в памяти. Если сервер недоступен, проверьте, действительно ли он запущен, и его порт в Developer. s1 s2 s7
Как отправить заметку и получить два поля?
Скопируйте следующую команду после замены только MODEL_ID на точное значение id из предыдущего ответа. Учебный вход написан редакцией: «Встреча в пятницу в 10:30». Команда отправляет заметку серверу на том же компьютере; в response_format указано, что JSON должен содержать строки day и time, без лишних полей. Пометка /no_think описана в карточке Qwen3 для краткого режима; она не является общим параметром LM Studio для всех моделей. s1 s2 s5
curl -fsS http://127.0.0.1:1234/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"MODEL_ID","messages":[{"role":"user","content":"Из заметки: Встреча в пятницу в 10:30. Верни день и время без дополнительных сведений. /no_think"}],"response_format":{"type":"json_schema","json_schema":{"name":"meeting","schema":{"type":"object","properties":{"day":{"type":"string"},"time":{"type":"string"}},"required":["day","time"],"additionalProperties":false}}},"stream":false}'
Сервер возвращает ответ со строкой в choices[0].message.content. Именно эту строку ваша программа должна разобрать как JSON. В ней проверьте day и time по исходной заметке: «пятница», «10:30». Если появилась выдуманная дата или лишние поля, результат не подходит. Мы не приводим вымышленный ответ модели. Схема проверяет наличие и тип полей, а не истинность содержимого; для ответственного процесса сверяйте значения с исходником даже при успешно разобранном JSON. s1
Что делать при ошибке или неверном результате?
Если вместо ответа пришёл model not found, снова получите список /v1/models и проверьте точный id, а не имя файла на глаз. Если модель не помещается в память, разберите ошибку загрузки по отдельному гайду; размер GGUF не равен требуемой оперативной памяти. Если JSON не появился или его поля бессмысленны, проверьте response_format, наличие поддерживаемого chat GGUF и ответ с короткой заметкой: LM Studio предупреждает, что не каждая модель уверенно выдаёт structured output, особенно маленькие. На другой версии приложения или модели поведение может отличаться. s1 s2 s3
После проверки своего примера можете сравнить JSON Schema в других локальных серверах. Условия лицензии конкретной модели читайте на её карточке: лицензия весов Qwen3-8B-GGUF не является утверждением о правах на код LM Studio. s5
Источники
- LM Studio — Structured Output через локальный API — Текущая документация, копия HTML/TXT и SHA в каталоге исследования.. Получено 01.11.2026.
- LM Studio — List Models. Получено 01.11.2026.
- LM Studio — System Requirements. Получено 01.11.2026.
- LM Studio — Download an LLM. Получено 01.11.2026.
- Qwen/Qwen3-8B-GGUF — карточка и файл Q4_K_M на закреплённой ревизии — revision 7c41481f57cb95916b40956ab2f0b139b296d974; README и LICENSE на той же ревизии сохранены; GGUF-байты не скачивались, памяти не измеряли.. Получено 01.11.2026.
- LM Studio — Offline Operation. Получено 01.11.2026.
- LM Studio — lms server start и ограничение адреса. Получено 01.11.2026.