Workflow orchestration
После главы вы сможете решить, где control flow должен оставаться детерминированным, а где модели действительно нужен выбор следующего шага.
Надёжная система гибридна
LLM не обязана решать authentication, rate limits, ledger invariants или queue delivery. Agent loop полезен внутри ограниченного участка, где path зависит от языка и новых observations.
Основные patterns
Sequential
Шаг B зависит от validated output A. Просто наблюдать и retry, но latency складывается.
Routing
Classifier/rule/model выбирает один специализированный path. Нужны fallback и eval routing confusion, иначе ошибочный первый выбор скрыто определит весь результат.
Parallel fan-out/fan-in
Подходит независимым reads, нескольким graders или поиску по независимым источникам. Не запускайте параллельно конфликтующие writes без coordination и idempotency.
Evaluator–optimizer
Один шаг создаёт candidate, другой проверяет против rubric, цикл ограничен budget. Полезно, когда feedback конкретен; бесполезно, если evaluator повторяет вкус generator.
Planner–executor
Plan помогает декомпозиции, но не является authority или гарантией. Executor проверяет каждое действие по текущему state; после новых facts plan version обновляется явно.
Human gate
Run сохраняет exact pending operation и ждёт approve/edit/reject. После resume модель не должна заново угадывать, что одобрил человек.
Динамический agent или workflow?
| Признак | Workflow | Bounded agent |
|---|---|---|
| Ветки известны | Да | Не полностью |
| Цена ошибки | Высокая | Допустима внутри guardrails |
| Feedback machine-readable | Обычно | Обязательно желательно |
| Нужна exploration | Мало | Много |
| Нужен audit | Просто | Требует event vocabulary |
| Latency/cost | Предсказуемее | Более вариативны |
Если agent всегда вызывает tools в одном порядке, закрепите порядок кодом. Если workflow разрастается тысячами brittle intent branches, bounded agent может упростить semantic routing.
Framework choice
| Подход | Выигрыш | Цена | Плохой выбор |
|---|---|---|---|
| Plain code loop | Прозрачно, легко учить | Сами timers/storage/retry | Long-running production |
| Graph/state-machine library | Явные узлы/ветки | Framework state semantics | 2–3 простых шага |
| Durable workflow engine | Timers, workers, replay | Determinism/deployment overhead | Short synchronous chat |
| Queue + custom workers | Полный контроль | Много инфраструктурного кода | Команда без ops capacity |
Названия вроде LangGraph и Temporal относятся к implementation choices. Публичные контракты курса — ModelPort, StateStore, PolicyEngine, RunEvent — не названы в честь provider/framework.
Parallelism и consistency
Перед fan-out определите:
- независимы ли inputs;
- какой shared state читается;
- может ли один branch сделать side effect;
- как отменить остальные после достаточного ответа;
- как агрегировать partial failures;
- есть ли per-branch и total budget.
Parallel model calls увеличивают test-time compute и могут повысить качество на некоторых задачах, но также стоимость. Проверяйте gain на eval set, не добавляйте voting по эстетике.
Planning state
Хороший plan хранит:
- версию и goal;
- шаги/зависимости;
- evidence, на котором основан;
- выполненные outcomes;
- invalidated assumptions;
- условие re-plan.
Плохой plan — длинный assistant text, который невозможно сопоставить events и postconditions.
Helios и реальный аналог
Запрос «почему груз задержан?» идёт bounded agent: нужно исследовать order, customs и carrier. Refund идёт fixed workflow: calculate eligibility → preview → approval → idempotent commit. В telehealth triage safety routing остаётся policy workflow, а conversational clarification может использовать model.
Multi-agent — escalation, не default
Отдельный agent оправдан, если есть хотя бы одно:
- независимый context/tool boundary;
- параллельное исследование с измеримым ускорением;
- отдельная security/tenant authority;
- специализация, доказанная evals.
Иначе появляются handoff loss, duplicate work, conflicting writes, больше tokens и сложнее causality. Начните с одного loop и обычных functions.
Лаборатория
Сравните минимальный AgentRuntime и DurableExecution:
npm run test:course:pattern -- "bounded loop|approval"
Нарисуйте Helios refund как deterministic workflow. Отметьте единственный участок, где model choice действительно полезен.
Failure modes
- Agent управляет KYC/ledger invariant.
- Router не имеет fallback и confidence/abstain.
- Parallel branches делают конфликтующие writes.
- Planner меняет согласованный scope.
- Human gate хранит только «approved=true» без exact operation.
- Framework checkpoint ошибочно считают domain idempotency.
- Multi-agent введён до single-agent eval baseline.
Self-check
- Какие ветки можно выразить обычным кодом?
- Какой feedback делает динамический выбор полезным?
- Где durable wait и resume?
- Какие операции нельзя parallelize?
- Как план связывается с events?
- Как eval доказывает необходимость agent/multi-agent complexity?
Источник
Provider guidance, проверено 2026-08-30: patterns workflow/agent и рекомендация начинать с простого решения описаны в Anthropic Building effective agents. Используйте как каталог patterns, не как framework standard.