Конвейер: выход → вход
Pipeline — это цепочка: агенты выстроены в линию, и результат каждого передаётся следующему как вход. Никакого центра, никакого «решения на ходу» — порядок известен заранее и зашит в структуру. Каждый агент делает свой узкий этап и отдаёт эстафету дальше.
Метафора — заводская сборочная линия: деталь движется от станка к станку, каждый выполняет одну операцию. Или Unix-пайп cat file | grep x | sort | uniq: вывод одной команды — ввод следующей. Pipeline переносит эту проверенную идею на агентов.
Pipeline против Supervisor
Оба организуют команду, но принципиально по-разному — это ключевое различие двух паттернов.
| Критерий | Pipeline | Supervisor |
|---|---|---|
| Топология | цепочка (линия) | звезда (центр) |
| Кто решает порядок | структура (фиксирован) | координатор в рантайме |
| Гибкость маршрута | нет — всегда одна линия | есть — ветвление |
| Стоимость / предсказуемость | дешевле, предсказуемее | дороже (центр), гибче |
| Когда | порядок известен заранее | порядок зависит от результата |
Главное отличие: в Pipeline нет управляющего агента. Координация «зашита» в структуру цепочки, а не принимается LLM на каждом шаге. Это убирает целый источник стоимости, недетерминизма и точек отказа (супервайзер). Когда порядок и так известен, дирижёр — лишняя сущность.
Один паттерн — разные реализации
Pipeline ты уже собирал, просто не называл паттерном. Вот он в знакомых инструментах:
# --- CrewAI: sequential process ---
Crew(agents=[loader, analyst, writer],
tasks=[load, analyze, write], # выполнятся по порядку
process=Process.sequential) # выход → вход через context
# --- LangGraph: линейный граф ---
builder.add_edge(START, "loader")
builder.add_edge("loader", "analyst") # цепочка рёбер
builder.add_edge("analyst", "writer")
builder.add_edge("writer", END)
# --- Голый Python: просто вызовы по очереди ---
data = loader(input)
analysis = analyst(data) # выход одного = вход следующего
result = writer(analysis)
# ВО ВСЕХ ТРЁХ: фиксированная цепочка, выход N → вход N+1, без координатора
Обрати внимание на третий вариант: Pipeline настолько прост, что для него не нужен фреймворк вовсе — хватит последовательных вызовов. Это лишний аргумент в его пользу: самая простая координация, какая бывает.
Плюсы, минусы и подводные камни
- предельно просто и предсказуемо
- дёшево — нет лишних вызовов координатора
- легко отлаживать: линейный лог
- каждый этап тестируется отдельно
- нет гибкости: маршрут всегда один
- ошибка раннего этапа «течёт» дальше
- надёжности перемножаются по цепочке
- не выразить ветвления и условия
Главный риск Pipeline — распространение ошибок: если loader выдал мусор, analyst разберёт мусор, а writer красиво оформит мусор. И чем длиннее цепочка, тем ниже общая надёжность (надёжности этапов перемножаются — мы считали это в уроке про накладные расходы). Лечится контрактами выхода (чёткий expected_output) и проверками между этапами — например, вставкой агента-валидатора.
Контракты между этапами
Pipeline держится на чётких интерфейсах между агентами: выход этапа N должен точно соответствовать тому, что ожидает этап N+1. Это прямое применение «контрактов» из урока про разделение ответственности: расплывчатый выход одного звена ломает следующее.
Поэтому в Pipeline особенно важны явные expected_output (CrewAI), структурированные данные между шагами и, для длинных цепочек, проверки на стыках. Хороший приём — добавить в конвейер этап-валидатор: loader → validate → analyst, который не пускает мусор дальше. Это уже намёк на гибридные схемы.
Pipeline и Supervisor — не взаимоисключающие. Часто прямые участки делают конвейером, а точки, где нужен выбор маршрута, отдают супервайзеру. Или внутри одного этапа Pipeline запускают целую Supervisor-команду (как Flow запускает Crew). Реальные системы — это композиция паттернов, а не один на всё.
Когда брать Pipeline
- Порядок этапов известен и фиксирован: загрузка → обработка → вывод, без вариантов.
- Каждый этап зависит от предыдущего: линейная цепочка зависимостей (A→B→C).
- Важны простота, цена и предсказуемость: нет нужды платить за координатора.
- Контент- и data-пайплайны: ETL, генерация отчётов, обработка документов — классика Pipeline.
А не бери Pipeline, если маршрут зависит от результата (нужно ветвление → Supervisor или Flow) или если этапы независимы и могут идти параллельно (→ параллелизм/fan-out). Pipeline — про строгую линейную последовательность.
Типичные ошибки
Если следующий этап зависит от результата (одобрено/нет), линейная цепочка не подойдёт. Это территория Supervisor или Flow с условиями.
Расплывчатый выход одного агента ломает следующий. Задавай явный формат/состав выхода каждого этапа (expected_output, структурированные данные).
Ошибка раннего этапа течёт до конца, а надёжность падает с длиной. Вставляй валидацию на стыках или ограничивай число звеньев.
Для простой цепочки тяжёлый мультиагентный фреймворк — оверкилл. Иногда Pipeline — это просто три функции, вызванные по очереди.
Шпаргалка
ПАТТЕРН: цепочка агентов, выход N → вход N+1, порядок ФИКСИРОВАН
топология «линия» · НЕТ координатора · координация зашита в структуру
PIPELINE vs SUPERVISOR:
Pipeline — линия, порядок известен, дёшево, предсказуемо, БЕЗ центра
Supervisor — звезда, порядок в рантайме, гибко, дороже, С центром
РЕАЛИЗАЦИИ:
CrewAI — process=Process.sequential (+ context)
LangGraph — линейный граф (цепочка add_edge)
Python — просто вызовы по очереди (фреймворк не нужен!)
✅ просто · дёшево · предсказуемо · легко тестировать поэтапно
❌ нет ветвлений · ошибки ТЕКУТ по цепочке · надёжности перемножаются
КЛЮЧ — КОНТРАКТЫ: выход N == ожидаемый вход N+1
длинная цепочка → проверки на стыках (этап-валидатор)
КОГДА: порядок известен/фиксирован · линейные зависимости · ETL/контент
НЕ НАДО: маршрут зависит от результата → Supervisor/Flow;
этапы независимы → параллелизм
ПАТТЕРНЫ КОМБИНИРУЮТСЯ: прямые участки — Pipeline, развилки — Supervisor
Практическое задание
Собери и испытай конвейер:
Задание: контент-пайплайн
- Построй цепочку из 3 агентов (например,
loader → analyst → writer) на любом инструменте: CrewAI sequential, линейный граф LangGraph или просто три вызова в Python. - Для каждого этапа задай чёткий контракт выхода. Проверь, что выход одного действительно подходит как вход следующего.
- Намеренно «испорти» выход первого этапа и проследи, как ошибка дойдёт до финала — это иллюстрация распространения ошибок.
- Добавь между этапами агента-валидатора, который ловит мусор и не пускает дальше. Сравни надёжность с цепочкой без проверок.
- Прикинь надёжность: если каждый этап верен в 90%, какова надёжность всей цепочки из 4 звеньев? Что это говорит о длине Pipeline?
- Со звёздочкой: придумай точку, где маршрут зависит от результата, и покажи, что чистый Pipeline её не выражает — нужен Supervisor/Flow. Сделай гибрид: Pipeline с одной развилкой через супервайзера.
Что дальше
Pipeline и Supervisor — это централизованная координация: либо структура, либо дирижёр задают порядок. Но есть и децентрализованный подход, где агенты сами передают управление друг другу по контексту. Это паттерн Swarm — следующий урок.