Конвейер цехов: Prompt Chaining и контроль качества
🤔 Зачем это читать
Сцена с работы. Ты просишь AI: «Возьми вот эти три отчёта по продажам, найди, что просело за квартал, и напиши на этом письмо региональным менеджерам — построже». Один запрос, всё сразу. На коротком тексте проходит отлично, ты привыкаешь. А потом задача чуть крупнее — и на выходе письмо, где половина цифр из второго отчёта потерялась, вывод не бьётся с данными, а тон вместо «построже» съехал в «дорогие коллеги». AI взялся за всё разом — и на длинной дистанции потерял нить.
Знакомо? Это не «модель плохая» и не «ты криво попросил». Это как поручить одному повару за один заход почистить рыбу, сварить соус, собрать блюдо и красиво подать — да ещё пока всё это держать в голове. На простом справится. На сложном где-то обязательно смажет: пока собирал подачу, забыл, что соус недосолил. Чем длиннее цепочка дел в одной голове, тем выше шанс, что что-то выпадет.
И вот что обидно: брак из первого шага едет дальше по всей задаче. Неправильно посчитал просадку — и письмо, и тон, и вывод строятся уже на гнилом фундаменте. Ошибка не остаётся на месте, она тащит за собой весь хвост работы.
После этой темы ты сможешь разрезать такую задачу на цепочку отдельных шагов-цехов и поставить между ними контрольную точку, которая ловит брак до того, как он уехал дальше. Это первый и самый простой приём оркестрации (orchestration — дирижирование несколькими шагами или агентами, как дирижёр оркестром) — и заодно самый надёжный способ перестать терять качество на длинных задачах.
Задержись на 10 секунд. Вспомни последний раз, когда ты сам делал длинную задачу за один присест — отчёт, сложное письмо, расчёт в несколько действий — и где-то в середине допустил ошибку, на которой потом построилось всё остальное, и переделывать пришлось не один шаг, а половину работы. Подержи эту сцену в голове. Дальше — ровно про то, как этого не допустить.
🏭 Один повар на всё против конвейера цехов
В прошлой теме мы договорились: иногда одного агента мало, и тогда задачу берёт бригада (мультиагент — несколько агентов с разными ролями, как кухонная бригада с разными цехами). Сегодня — самый первый, самый простой способ организовать такую работу. Он называется Prompt Chaining (по-русски — конвейер промптов, где промпт — это запрос-задание модели): задачу режут на последовательные шаги, и каждый шаг делается отдельным запросом.
Представь большую кухню. Можно поручить всё одному повару — и на сложном заказе он смажет, мы это уже видели. А можно построить конвейер цехов: в холодном цехе чистят и нарезают, в горячем цехе готовят, на раздаче собирают и оформляют тарелку. Каждый цех делает одно дело и делает его хорошо. Заготовка из первого цеха едет во второй, оттуда — на раздачу.
Главное правило конвейера: выход одного цеха = вход следующего. Нарезанная рыба из холодного цеха — это то, с чем начинает работать горячий. Готовое блюдо из горячего — то, что собирает раздача. Никто не держит в голове всю задачу целиком: каждому ровно его кусок, на нём он и сосредоточен.
Почему так надёжнее, чем один большой запрос? Потому что у каждого цеха задача узкая и понятная. «Собери данные в список» — модель не отвлекается на тон письма. «Напиши письмо по готовому анализу» — не путается в исходных цифрах, они уже посчитаны до неё. Меньше задача за раз — меньше шансов смазать. Это та же мысль, с которой начинался весь курс: начни с простого — несколько простых шагов почти всегда честнее одного сложного.
🚦 Контролёр между станциями: контрольная точка (gate)
Но конвейер сам по себе ещё не спасает от того самого «брак едет дальше». Если в первом цехе рыбу почистили плохо, она поедет в горячий цех — и испортит блюдо уже там. Поэтому между станциями ставят контролёра. На AI-конвейере это называется gate (по-русски — контрольная точка, или «ворота»): шаг, который смотрит на полуфабрикат и решает — пропустить дальше или остановить.
Контролёр на кухне не готовит. Его дело — взять заготовку из предыдущего цеха и проверить по простому списку: рыба почищена? косточки выбраны? размер нарезки тот? Если всё ок — пропустил дальше. Если брак — остановил конвейер или вернул заготовку назад на переделку. Главное: брак не едет в следующий цех. Его ловят на той станции, где он появился.
Это и есть ключевая мысль темы. Контрольная точка между шагами делает три вещи: проверяет полуфабрикат по чётким критериям, не пускает брак дальше и при желании возвращает на переделку. Без неё ошибка из шага 1 тихо доезжает до шага 3 и всплывает уже в готовом письме клиенту — где чинить её и дорого, и стыдно.
🧩 Как это выглядит на пальцах
Соберём всё вместе на нашем примере с письмом менеджерам. Ниже — логика на пальцах: тот же конвейер, расписанный обычными словами, не настоящий код, который надо запускать (по-умному такое называют псевдокодом). Можешь пролистать, если картинка уже сложилась.
# ЦЕХ 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-предложению простым вопросом: «эту задачу расписали по шагам с проверками между ними — или скормили одним куском в надежде, что разберётся само?». И второй: «где тут ловят брак — в начале по дешёвке или в самом конце на готовом результате?». Кто умеет резать задачу на цеха и ставить контролёра в правильном месте — получает надёжность почти бесплатно.
🎯 Практика
Одно задание на пять минут — оно превращает «конвейер цехов» из схемы в твой рабочий приём.
- Вспомни задачу со своей работы, которую ты отдал бы AI одним большим запросом — например, «собери данные, проанализируй и напиши отчёт». Запиши её одной строкой.
- Разрежь её на 3 - 4 шага-цеха, где выход каждого — вход следующего. Проверь нить: данные → анализ → черновик → оформление. Если шаг можно сделать только после предыдущего — порядок верный.
- Найди самый хрупкий шаг — тот, чья ошибка испортит весь хвост (обычно это сбор данных). Поставь сразу за ним контрольную точку и сформулируй для неё одно чёткое правило проверки: «все источники на месте?», «цифры сходятся?», «формат тот?». Эта одна фраза — половина надёжности всего конвейера.
То самое письмо менеджерам из начала, где половина цифр потерялась, твой конвейер с контрольной точкой за сбором поймал бы на первой станции — пока чинить дёшево.