Андрагогика Bloom: Apply ⏱ 9 мин автоматизация

Структурированный вывод (JSON): отвечай по форме

🧊 Won't Have 💧 Could Have ☀️ Should Have 🔥 Must Have
☀️ Should Have
Тот приём, на котором ответ модели превращается из красивого текста в данные, которые подхватит другая программа. Без него автоматизации не будет.

🤔 Зачем это читать

Ты попросил модель разобрать сотню входящих писем от клиентов и для каждого вытащить: кто написал, по какому заказу, доволен или зол, что просит. Она справилась — выдала сто аккуратных абзацев живым языком, читать приятно. А дальше начинается боль: эти сто абзацев надо занести в таблицу или в 1С. И ты сидишь и руками растаскиваешь — из этого абзаца имя сюда, статус туда, номер заказа в третью колонку. Час работы превратился в три.

Знакомо? Ответ красивый ровно для человека, который читает глазами. А машине — таблице, CRM (программе с карточками клиентов), бухгалтерской системе — этот красивый абзац всё равно что иностранный язык. Она не умеет «вчитываться» и догадываться, где тут имя, а где жалоба. Ей нужна форма: вот поле «имя», вот поле «статус», заполни ровно так.

Дело не в том, что модель плохо поработала. Дело в том, что ты не сказал ей, в какой форме отвечать. Попросил «разбери письма» — получил сочинение. А надо было попросить «разбери и выдай по форме: имя, заказ, настроение, просьба» — и получить готовые данные, которые программа подхватит сама, без твоих рук.

После этой темы ты сможешь сам формулировать запрос так, чтобы ответ был не сочинением, а заполненным бланком, который другая программа прочитает и разложит по местам без единого клика мышкой. Это тот самый приём, который превращает «модель что-то написала» в «модель встроена в наш рабочий процесс». Клей всей автоматизации.

Задержись на 10 секунд. Вспомни, когда ты в последний раз вручную переносил что-то из одного места в другое: из письма в таблицу, из ответа в карточку клиента, из отчёта в форму. Сколько времени ушло на это «растаскивание»? Держи этот случай в голове — к концу страницы ты увидишь, как его можно было снять одной фразой в запросе.

🍱 Бланк с полями против свободного письма

В прошлой теме про должностную инструкцию и разделители мы учились объяснять повару, кто он и где границы заказа. Теперь — про то, в каком виде он должен подать готовое блюдо. Это разные вещи: одно дело, что повар приготовил, другое — как он это выложил на выдачу.

Представь два способа подачи. Первый: повар приносит тебе блюдо в руках, всё свалено горкой, «вот, держи, тут лосось, рядом вроде соус, а это гарнир, кажется». Вкусно, наверное. Но если за этой выдачей стоит конвейер — официант, который должен мгновенно понять, что куда, — он встанет в ступор. Где порция? Сколько соуса? Это вообще на какой стол?

Второй способ: повар выкладывает всё в стандартную гастроёмкость с подписанными отсеками — в одном отсеке основное, в другом соус, в третьем гарнир, на крышке номер стола. Любой на раздаче возьмёт и поймёт мгновенно, не переспрашивая. Это и есть структурированный вывод: ответ не «на глаз в руках», а разложенный по заранее оговорённой форме.

Для текста та же история — это разница между свободным письмом и бланком с полями. Свободное письмо человек прочитает легко, а машина — нет. Бланк, где у каждого факта своё подписанное поле, машина прочитает с ходу, а заполнить его модель тоже умеет — если её об этом попросить.

Один и тот же факт — две подачи
📝 Свободное письмо
«Анна Петрова написала по заказу № 1842, она недовольна задержкой и просит вернуть деньги.»
Человек прочитает за секунду. Машина — не разберёт, где тут что.
🍱 Бланк с полями
имя: Анна Петрова
заказ: 1842
настроение: недовольна
просьба: возврат денег
Машина возьмёт каждое поле и разложит по колонкам сама.

🔤 Что такое JSON и почему все системы говорят на нём

У этого «бланка с полями» есть общепринятый вид, на котором между собой договариваются почти все программы мира. Называется он JSON (структурированный формат данных — читается «джейсон»). Не пугайся слова: по сути это просто способ записать «поле — значение» так, чтобы любая программа поняла одинаково.

Смотри, как он устроен, на нашем примере. Пары «название поля : его значение», каждая на своей строке, всё в фигурных скобках:

Так выглядит заполненный бланк (JSON) {
  "имя": "Анна Петрова",
  "заказ": 1842,
  "настроение": "недовольна",
  "просьба": "возврат денег"
}
# слева — название поля (как подпись на отсеке), справа — что туда положили

Почему именно он, а не просто красивый текст? Потому что у JSON есть жёсткая, всегда одинаковая форма. У поля «имя» всегда будет значение «имя» — не «звать её», не «отправитель», не «клиентка». Поэтому программа, которая принимает такой ответ, заранее знает, где искать каждый кусочек, и берёт его без догадок. Это и есть подписанные отсеки гастроёмкости: повар может приготовить разное, но раскладка всегда одна, и раздача никогда не путается.

Тебе как владельцу не нужно уметь писать JSON руками — это работа поваров. Тебе нужно понимать одну вещь: когда ответ модели должна читать другая программа, проси ответ в этой строгой форме, а не вольным текстом. Дальше код подхватит сам.

📋 Как попросить ответ по форме (тремя движениями)

Хорошая новость: чтобы получить структурированный ответ, не нужно ничего технического. Достаточно в запросе чётко сказать три вещи — вот они на той же задаче с письмами.

Псевдокод · запрос на ответ по форме # это НЕ настоящий код, а как сформулировать задание модели

Разбери письмо клиента ниже.
Верни ответ строго в формате JSON, без лишнего текста до и после.

Заполни ровно эти поля:
  "имя"       — кто написал # текст
  "заказ"     — номер заказа # число
  "настроение" — доволен / нейтрально / недоволен
  "просьба"   — что человек хочет # коротко

Если поля в письме нет — поставь "не указано", не выдумывай.
# граница против фантазии: пустое поле честнее придуманного

Разберём по движениям. Первое — назвать форму: «верни в формате JSON». Этим ты сразу отсекаешь сочинение. Второе — перечислить поля: какие именно отсеки в гастроёмкости и что в каждый класть. Тут же стоит сказать тип — где число, где текст, где выбор из готового списка («доволен / нейтрально / недоволен»). Чем точнее опишешь форму, тем точнее повар её заполнит. Третье — закрыть лазейку для фантазии: «нет данных — поставь „не указано“, не выдумывай». Иначе модель «из вежливости» может дописать правдоподобное, а на самом деле взятое из воздуха.

Заметь, как это перекликается с прошлыми темами модуля: тут работают и точность заказа, и заранее заданные границы. Структурированный вывод — не отдельный фокус, а ещё один способ дать повару ровно тот заказ, какой нужен.

Гастроёмкость с подписанными отсеками
Раскладка всегда одна — раздача никогда не путается, что куда
отсек «имя»Анна Петрова
отсек «заказ»1842
отсек «настроение»недовольна
отсек «просьба»возврат денег
отсек «дата»не указано
свободное местодля нового поля
Пустой отсек честнее заполненного наугад. Поле «дата» = «не указано» лучше, чем выдуманная дата, которую программа примет за правду.

🔌 Зачем это бизнесу: клей между моделью и системами

Вот ради чего всё. Сам по себе красивый ответ модели — это тупик: его прочитал человек, и дальше всё снова руками. А структурированный ответ — это труба, по которой данные сами текут из модели в твои системы: в таблицу, в 1С, в CRM, в следующую программу по цепочке.

Разница прямая и денежная. Со свободным текстом каждый ответ кто-то должен прочитать и перенести руками — это упирается в человеко-часы и в опечатки. С формой ответ занимается своим местом автоматически: пришло письмо → модель разобрала по бланку → программа сама занесла в таблицу и завела заявку. Сто писем за минуту вместо трёх часов руками. И главное — предсказуемо: форма всегда одна, значит, принимающая программа не сломается на пятьдесят третьем ответе из-за того, что модель вдруг написала чуть иначе.

Именно поэтому структурированный вывод называют клеем автоматизации. Без него каждый кусок системы живёт сам по себе, и между ними сидит человек-переноска. С ним куски склеиваются в один процесс, который работает сам. На этом и держится всё, что в курсе пойдёт дальше — про инструменты агента и про сборку нескольких шагов в цепочку.

🎮 Что машина прочитает, а что — нет

Прежде чем жать кнопку — реши сам: вот ответ модели. Если его примет не человек, а другая программа — таблица, CRM, следующий шаг автоматизации — она поймёт его без твоих рук? Или кому-то придётся сидеть и растаскивать вручную?

Сначала пять ответов на одну задачу: для каждого реши — машина прочитает сама или нужны руки человека. А в конце задание посложнее: сам поймай, где форма врёт. Жми кнопку — сразу увидишь разбор. Это тренировка того самого чутья «по форме или нет», ради которого тема.

📖 Ключевые понятия

Структурированный вывод
Ответ модели не вольным текстом, а по заранее оговорённой форме — как блюдо в гастроёмкости с подписанными отсеками, а не «на глаз в руках». Каждый факт лежит в своём поле под понятным названием, поэтому другая программа читает ответ без догадок и без рук человека.
JSON (структурированный формат данных)
Общепринятый вид того самого бланка с полями, на котором между собой договариваются почти все программы. Записывается парами «название поля : значение». Тебе не нужно писать его руками — нужно знать, что его стоит просить, когда ответ должна читать другая программа.
Бланк с полями vs свободное письмо
Два способа подать один и тот же факт. Свободное письмо человек прочитает легко, машина — нет. Бланк, где у каждого факта своё подписанное поле, машина прочитает сама. Аккуратный список с тире и отступами — это всё ещё письмо для людей, а не бланк для программ.
Клей автоматизации
Роль структурированного вывода в цепочке: предсказуемая форма, по которой данные сами текут из модели в системы (таблицу, 1С, CRM, следующий шаг). Без него между кусками процесса сидит человек-переноска; с ним куски склеиваются в процесс, который работает сам.

🛡️ Частые заблуждения

«Если ответ выглядит аккуратно — со списком, отступами, заголовками — машина его прочитает»

Нет. Аккуратное оформление — это для человеческих глаз, а не строгая форма для программ. Машине нужны именно поля с одинаковыми названиями, а не красивые тире и переносы. Список «— отправитель: …» программа не обязана понять так же, как ты. Структура для глаз и структура для кода — разные вещи.

«Просить ответ в JSON — это техническая штука, мне в неё лезть незачем»

Лезть в синтаксис — незачем, писать его руками тебе не придётся. А вот понимать, когда просить ответ по форме, — твоя работа. Это решение владельца, а не повара: «этот ответ пойдёт в другую программу — значит, проси строгую форму». Одна фраза в запросе экономит человеко-часы на ручном переносе.

«Если в письме нет какого-то поля, модель сама поймёт и оставит его пустым»

Не рассчитывай на это по умолчанию. Модель «из вежливости» может дописать правдоподобное — выдуманную дату, придуманный номер — и программа примет это за правду. Поэтому в запросе прямо говори: «нет данных — поставь „не указано", не выдумывай». Пустой отсек честнее заполненного наугад.

🧠 AI-чутьё (AI Judgment)

Когда просить форму, чему доверять, где подстелить соломку

Главная мысль темы для владельца короткая: как только ответ модели должна читать не пара глаз, а другая программа — проси строгую форму, а не вольный текст. Это водораздел между «модель что-то написала, дальше руками» и «модель встроена в наш процесс, он работает сам». Структурированный вывод — основа любой надёжной интеграции AI в системы.

Два рабочих движения. Первое: на любой запрос, где результат пойдёт дальше по цепочке, сразу думай о форме — какие поля нужны принимающей системе и в каком виде (число, текст, выбор из списка). Второе: всегда закрывай лазейку для фантазии — «нет данных — пиши „не указано"», иначе получишь правдоподобную выдумку, которую программа молча проглотит. Форма даёт предсказуемость, но не делает содержимое автоматически правдой — это всё ещё угадывание повара, просто разложенное по полкам.

И прямой мостик вперёд. Этот приём — фундамент под двумя большими вещами в курсе. Когда агент берёт инструменты (лезет в склад, в CRM, дёргает другую программу), он общается с ними ровно такой строгой формой — иначе они его не поймут. И когда несколько шагов собирают в цепочку, выход одного шага становится входом следующего — и держится эта стыковка опять же на предсказуемой форме. Без структурированного вывода ни инструменты, ни цепочки не работают надёжно. Поэтому он и стоит здесь, до них.

🎯 Практика

Одно задание на десять минут — чтобы приём лёг на твою реальную работу, а не остался теорией.

  1. Возьми тот случай из начала страницы — где ты что-то переносил руками из одного места в другое. Что это были за данные?
  2. Выпиши поля бланка для этой задачи: какие именно куски тебе нужны на выходе и какого они вида. Например: «имя — текст», «сумма — число», «статус — один из: новый / в работе / закрыт».
  3. Собери из этого запрос по форме тремя движениями: (1) «верни строго в формате JSON, без лишнего текста»; (2) перечисли поля и что в каждом; (3) «нет данных — поставь „не указано", не выдумывай».
  4. Прогони запрос на трёх-четырёх реальных примерах. Сравни: ответ теперь можно вставить в таблицу как есть — или всё ещё надо растаскивать руками? Если надо — какого уточнения в форме не хватило?

Этот готовый «запрос по форме» — уже маленький кирпич автоматизации. Его можно отдать тому, кто будет настраивать процесс, со словами: «вот ровно те поля, что мне нужны на выходе, в таком виде». Так формулирует задачу владелец, который понимает свою кухню.

🔗 Что дальше

Следующая тема: 4.1 — Инструменты агента: как болталка становится делалкой. Прямое продолжение: агент берёт реальные инструменты — лезет в склад, в CRM, дёргает другую программу — и разговаривает с ними ровно той строгой формой, которую ты освоил здесь.

Связанные темы: