Workflow-паттерны LLM-систем
Abstract
Workflow задаёт поток выполнения программно. В отличие от агента, его основные переходы известны заранее; модель решает локальные задачи внутри узлов.
Chaining
extract → validate → transform → validate → publishИспользуй, когда задачу можно разложить на фиксированные зависимые шаги. Контракт между узлами лучше задавать схемой, а не свободным текстом. Подробнее: Prompt Chaining.
Routing
input → classifier/router ─┬→ support workflow
├→ billing workflow
└→ fallbackПодходит для различимых классов запросов. Router может быть правилом, небольшой моделью или основной LLM. Измеряй ошибки маршрутизации отдельно от качества downstream-веток.
Parallelization
Независимые ветки выполняются одновременно, затем результаты агрегируются:
- sectioning: разные подзадачи или источники;
- voting: несколько независимых оценок одного объекта.
Параллельность сокращает wall-clock time, но увеличивает расход и требует правил дедупликации, конфликтов и частичных отказов.
Orchestrator–workers
Оркестратор динамически формирует подзадачи, запускает workers и собирает результат. Это полезно, когда число и тип подзадач заранее неизвестны. Если decomposition фиксирована, обычный workflow проще.
Evaluator–optimizer
generator → evaluator → accept
│
└→ feedback → generatorИспользуй, когда критерии можно выразить рубрикой и итерация действительно повышает качество. Ограничивай число циклов и сохраняй лучший результат: evaluator тоже ошибается.
Общие компоненты
- типизированные входы и выходы узлов;
- timeouts, retries и idempotency;
- бюджет calls, tokens, времени и денег;
- state вне истории сообщений;
- trace с версиями prompts, моделей и tools;
- fallback для каждого внешнего компонента;
- end-to-end evals, а не только тесты отдельных prompts.
Workflow или agent
| Признак | Workflow | Agent |
|---|---|---|
| Переходы | заданы кодом | выбираются моделью |
| Предсказуемость | выше | ниже |
| Отладка | проще | требует trajectory traces |
| Лучший сценарий | стабильный процесс | непредсказуемая задача с обратной связью |
Начинай с workflow. Agent loop добавляй, когда невозможно заранее описать полезную траекторию без взрыва правил.