Универсальный Bloom: Apply ⏱ 9 мин оркестрация

Конвейер цехов: Prompt Chaining и контроль качества

🧊 Won't Have 💧 Could Have ☀️ Should Have 🔥 Must Have
☀️ Should Have
Первый и самый практичный приём оркестрации. Не обязателен для базы, но именно он чаще всего спасает длинные задачи от «качество поплыло».

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

Сцена с работы. Ты просишь AI: «Возьми вот эти три отчёта по продажам, найди, что просело за квартал, и напиши на этом письмо региональным менеджерам — построже». Один запрос, всё сразу. На коротком тексте проходит отлично, ты привыкаешь. А потом задача чуть крупнее — и на выходе письмо, где половина цифр из второго отчёта потерялась, вывод не бьётся с данными, а тон вместо «построже» съехал в «дорогие коллеги». AI взялся за всё разом — и на длинной дистанции потерял нить.

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

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

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

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

🏭 Один повар на всё против конвейера цехов

В прошлой теме мы договорились: иногда одного агента мало, и тогда задачу берёт бригада (мультиагент — несколько агентов с разными ролями, как кухонная бригада с разными цехами). Сегодня — самый первый, самый простой способ организовать такую работу. Он называется Prompt Chaining (по-русски — конвейер промптов, где промпт — это запрос-задание модели): задачу режут на последовательные шаги, и каждый шаг делается отдельным запросом.

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

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

Конвейер цехов: выход одного = вход следующего
🔪
Цех 1 · Заготовка
Собрать данные из трёх отчётов в один аккуратный список.
🔥
Цех 2 · Горячий
Проанализировать список: где и насколько просели продажи.
🍽
Цех 3 · Раздача
Написать по анализу письмо менеджерам в нужном тоне.
Каждый цех делает одно дело. Полуфабрикат едет дальше по конвейеру. Никто не держит в голове всю задачу разом — поэтому и не теряет нить.

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

🚦 Контролёр между станциями: контрольная точка (gate)

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

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

Это и есть ключевая мысль темы. Контрольная точка между шагами делает три вещи: проверяет полуфабрикат по чётким критериям, не пускает брак дальше и при желании возвращает на переделку. Без неё ошибка из шага 1 тихо доезжает до шага 3 и всплывает уже в готовом письме клиенту — где чинить её и дорого, и стыдно.

Контрольная точка (gate) между цехами
🔪
Цех · полуфабрикат
Выдал заготовку: список данных, черновик, расчёт.
🚦
Контрольная точка (gate)
Проверяет по списку. ✅ Чисто → дальше. 🚩 Брак → стоп или назад на переделку.
Брак ловят там, где он появился, а не в готовом блюде на столе у гостя. Чем раньше поймали — тем дешевле починить.

🧩 Как это выглядит на пальцах

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

Псевдокод (на пальцах) · конвейер из трёх шагов с контрольной точкой # это НЕ настоящий код, а логика на человеческом языке

# ЦЕХ 1 — заготовка: собрать данные в аккуратный список
список_данных = шаг_1 собирает цифры из трёх отчётов

# КОНТРОЛЬНАЯ ТОЧКА (gate): проверяем полуфабрикат ДО следующего цеха
если в списке нет всех трёх отчётов ИЛИ цифры не сходятся:
    стоп → вернуть на переделку, дальше НЕ пускать

# ЦЕХ 2 — горячий: анализ едет ТОЛЬКО на проверенных данных
анализ = шаг_2 считает по списку_данных, где и насколько просели продажи

# ЦЕХ 3 — раздача: письмо едет ТОЛЬКО на готовом анализе
письмо = шаг_3 пишет менеджерам по анализу, тон «построже»
# → брак из шага 1 не доехал до письма: контрольная точка не пустила

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

🔧 Это workflow, а не «умный» агент

Тут принципиальная вещь, которую легко спутать. Конвейер цехов — это workflow (по-русски — рабочий процесс по заранее прописанным шагам). Ты заранее сам решил: сначала собрать данные, потом проанализировать, потом написать письмо. Порядок цехов придумал человек, а не модель на лету. Модель просто хорошо делает свой узкий кусок на каждой станции.

Помнишь разницу из начала курса — workflow против агента? В теме про то, когда агент не нужен, мы говорили: если путь предсказуем и его можно расписать заранее — не нужен «умный» автономный агент, который сам решает, что делать. Нужен надёжный конвейер по чётким шагам. Prompt Chaining — ровно это. Дёшево, предсказуемо, легко проверять и чинить.

Поэтому и контрольная точка чаще всего — простое правило, а не отдельный «умный» проверяющий: «есть ли в списке все три отчёта?», «сходится ли сумма?», «уложились в нужный формат?». Где правило справляется — не зови критика. А вот где проверка содержательная («хорош ли черновик по смыслу») — там в контрольную точку ставят отдельного агента-критика, и это уже producer-critic из темы про свежий взгляд: один делает, другой придирается. Конвейер и критик отлично живут вместе.

🎮 Собери конвейер и поставь контролёра

Задача: агент готовит ответ клиенту на жалобу о бракованном товаре. Шаги перемешаны, и среди них затесалась контрольная точка (gate). Выстрой их в правильном порядке конвейера и поставь контролёра туда, где он ловит брак раньше всего. Двигай карточки кнопками ↑ / ↓. Прежде чем жать «Проверить», проговори про себя признак: «выход какого шага нужен этому шагу на входе?» — это и есть нить конвейера. Когда порядок готов — жми «Проверить».

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

Prompt Chaining (конвейер промптов)
Приём, где задачу режут на последовательные шаги-цеха, и каждый шаг делается отдельным запросом к модели. Выход одного шага = вход следующего. Надёжнее одного большого запроса, потому что у каждого цеха узкая, понятная задача — меньше шансов смазать. Цена за это честная: три запроса вместо одного — это медленнее и дороже по токенам. Ты сознательно платишь скоростью за надёжность, и на длинных задачах это почти всегда выгодный обмен.
Gate (контрольная точка)
Шаг-контролёр между цехами. Берёт полуфабрикат предыдущего цеха, проверяет его по чётким критериям и решает: пропустить дальше, остановить или вернуть на переделку. Главная польза — брак не едет вниз по конвейеру, его ловят там, где он появился.
Полуфабрикат
Промежуточный результат одного цеха: собранный список данных, черновик, расчёт. Не готовое блюдо, а заготовка, которая едет на следующую станцию. Именно её проверяет контрольная точка.
Оркестрация (orchestration)
Дирижирование несколькими шагами или агентами: кто что делает, в каком порядке, что кому передаёт. Prompt Chaining — самый простой её вид: шаги выстроены в линию, один за другим.

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

«Разбить на шаги — лишнее усложнение, один умный запрос сделает всё сразу и лучше»

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

«Контрольная точка — это обязательно второй „умный" агент-проверяющий»

Чаще всего нет. Самые полезные контрольные точки — это простые правила: «все три отчёта на месте?», «сумма сходится?», «попали в нужный формат?». Дёшево, мгновенно, предсказуемо. Отдельного агента-критика ставят только туда, где проверка содержательная — оценить смысл, а не факт наличия. Не зови критика там, где справится галочка по списку.

«Раз тут несколько шагов и проверки — это уже автономный агент»

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

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

Конвейер снижает риск на предсказуемых задачах, а ранний контроль ловит брак дёшево

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

Вторая мысль про деньги, и она универсальна: чем раньше на конвейере поймали брак, тем дешевле его починить. Ошибка, пойманная на сборе данных, — это переделка одного шага. Та же ошибка, доехавшая до письма клиенту, — это испорченное письмо, потерянное доверие и разбор полётов. Контрольная точка в начале почти ничего не стоит, а экономит весь хвост работы вниз по конвейеру.

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

🎯 Практика

Одно задание на пять минут — оно превращает «конвейер цехов» из схемы в твой рабочий приём.

  1. Вспомни задачу со своей работы, которую ты отдал бы AI одним большим запросом — например, «собери данные, проанализируй и напиши отчёт». Запиши её одной строкой.
  2. Разрежь её на 3 - 4 шага-цеха, где выход каждого — вход следующего. Проверь нить: данные → анализ → черновик → оформление. Если шаг можно сделать только после предыдущего — порядок верный.
  3. Найди самый хрупкий шаг — тот, чья ошибка испортит весь хвост (обычно это сбор данных). Поставь сразу за ним контрольную точку и сформулируй для неё одно чёткое правило проверки: «все источники на месте?», «цифры сходятся?», «формат тот?». Эта одна фраза — половина надёжности всего конвейера.

То самое письмо менеджерам из начала, где половина цифр потерялась, твой конвейер с контрольной точкой за сбором поймал бы на первой станции — пока чинить дёшево.

🔗 Что дальше

Следующая тема: 8.3 — Маршрутизация (Routing): хостес направляет заказ на нужную станцию. Конвейер ведёт все заказы по одной линии. А что, если заказы разные — простой вопрос и сложную жалобу глупо гнать одним путём? Routing — это когда классификатор (classifier — сортировщик на входе) смотрит на заказ и направляет его на свою ветку. Следующий приём оркестрации.

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

Дальше в курсе эта идея вырастает в: