Как получить JSON от Ollama и проверить его по схеме
Практический маршрут от локального API-запроса до проверки полей. Где структурированный вывод помогает и почему проверка кода всё равно нужна.

Редакционная иллюстрация создана с помощью ИИ. Это вымышленная сцена, а не результат тестирования инструмента.
Зачем ограничивать формат
Свободный ответ удобен для разговора, но неудобен для программы, которая ждёт конкретные поля. Если вы хотите получить заголовок и массив тегов, попросите модель вернуть объект заданной формы. Ollama поддерживает structured outputs через поле format в API и принимает JSON Schema.
Это снижает число ответов с лишними пояснениями и неправильными ключами. Но схема не проверяет, правдивы ли значения. Модель может вернуть валидный JSON с выдуманным содержимым, поэтому типовую проверку отделяйте от факт-проверки.
Опишите минимальный контракт
Начните с данных, которые ваш код действительно использует. Например: title как строка, tags как массив строк, confidence как число от 0 до 1. Не добавляйте поля «на будущее»: каждый дополнительный элемент усложняет разбор ответа и проверку.
В JSON Schema задайте тип объекта, типы свойств и обязательные поля. Если ваш потребитель не поддерживает дополнительные ключи, укажите это в схеме. Выберите формат данных, который можно проверить обычным JSON-парсером на вашей стороне.
{
"type": "object",
"properties": {
"title": {"type": "string"},
"tags": {"type": "array", "items": {"type": "string"}}
},
"required": ["title", "tags"]
}Подайте схему через API
Документация Ollama показывает передачу схемы в поле format при запросе к chat API. В prompt отдельно объясните задачу и смысл каждого поля. Техническое ограничение задаёт форму, а инструкция модели задаёт содержание. Это две разные части запроса.
Проверьте точный endpoint и параметры в актуальной документации перед внедрением. Возможности зависят от модели: если выбранная модель плохо выполняет структурированные задания, схема не превратит её в надёжный классификатор. Сначала прогоните несколько коротких запросов, включая пустые и неоднозначные входы.
На дату проверки документация Ollama отдельно указывает, что Ollama Cloud пока не поддерживает structured outputs. Если прототип будет работать через облачный endpoint, проверьте поддержку на нём отдельно, а не переносите результат локального теста на облачную версию.
Проверяйте ответ как данные
Разберите ответ локальным JSON-парсером и проверьте его схему библиотекой, подходящей вашему языку. При ошибке не передавайте результат дальше как будто он безопасен. Покажите понятную ошибку или попросите повтор, ограничив число попыток.
Проверьте и смысловые условия: есть ли в tags только разрешённые значения, укладывается ли заголовок в нужную длину, не повторяет ли он исходный текст целиком. Такие правила обычно задаются кодом после синтаксической проверки.
Небольшой протокол теста
- Один обычный пример, который модель должна обработать.
- Пустой или слишком короткий ввод.
- Запрос с лишними инструкциями, пытающимися изменить формат.
- Проверка неверного JSON и отказа модели на вашей стороне.
- Повтор одного входа с фиксацией модели, версии и настроек.