Гайды

Как получить JSON от Ollama и проверить его по схеме

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

Редакция НейроДвижа. Проверено 25 сентября 2026.

AI-иллюстрация: Кот-космонавт на розовой планете

Редакционная иллюстрация создана с помощью ИИ. Это вымышленная сцена, а не результат тестирования инструмента.

Зачем ограничивать формат

Свободный ответ удобен для разговора, но неудобен для программы, которая ждёт конкретные поля. Если вы хотите получить заголовок и массив тегов, попросите модель вернуть объект заданной формы. 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 и отказа модели на вашей стороне.
  • Повтор одного входа с фиксацией модели, версии и настроек.