Суть патерна
Task Decomposition — це патерн, який дозволяє агенту розбити складну задачу на менші підзадачі перед виконанням.
Коли потрібен: коли складну задачу неможливо надійно виконати одним кроком і її треба розбити на підзадачі.
Замість того, щоб вирішувати все одразу, він:
- аналізує задачу
- визначає кроки
- виконує їх по черзі
Кожен крок — окрема підзадача.

Проблема
Уяви, що агент отримує задачу:
"Підготуй щомісячний звіт з продажів."
На практиці це не один крок, а послідовність підзадач:
- зібрати дані
- очистити та перевірити їх
- порахувати метрики
- сформувати висновок
Без явного плану складна задача швидко стає непрозорою: кроки губляться, а логіка ламається.
Якщо агент намагається зробити все "одним проходом", зазвичай з'являється хаос:
- пропущені проміжні кроки
- неправильний порядок виконання
- змішання планування і виконання
- слабка контрольованість помилок
У цьому й проблема: без структури складну задачу легко виконати нестабільно і з помилками.
Рішення
Task Decomposition додає окремий етап планування перед виконанням.
Аналогія: це як збирати меблі за інструкцією. Без інструкції легко переплутати порядок або пропустити деталь. З інструкцією кожен крок прозорий, а помилку легше знайти.
Ключовий принцип: Спочатку план, потім дії: саме це робить процес керованим.
Щоб агент не перескакував одразу до фінальної відповіді, decomposition-policy фіксує:
- які підзадачі обов'язкові
- у якому порядку їх виконувати
- коли потрібно робити
re-plan
Керований процес виглядає так (як і на схемі):
- Ціль: уточнити ціль і обмеження
- План: розбити задачу на підзадачі та залежності
- Виконання кроків (Step 1..N / Execute): виконувати підзадачі за планом
- Об'єднання результатів: зібрати результати кроків в одне ціле
- Готово: сформувати фінальний результат
Проміжна фіксація результатів відбувається всередині етапу виконання.
Task Decomposition допомагає:
- підвищити передбачуваність
- не втрачати важливі етапи
- локалізувати помилки на конкретному кроці
- отримувати стабільніший результат у довгих задачах
Працює найкраще, якщо:
- є чіткі межі кроків і залежності
- у кожного кроку є критерій завершення
- задані правила re-plan при зміні умов
- етап виконання не обходить затверджений план
Навіть якщо модель "хоче" одразу дати фінальну відповідь, decomposition-policy повертає процес до структурованих кроків.
Як працює
Task Decomposition не виконує кроки сам.
Він лише визначає, які підзадачі потрібно виконати, а кожна з них може виконуватись через окремий ReAct цикл.
Тобто агент спочатку складає план, а потім зазвичай вирішує підзадачі послідовно, крок за кроком.
Опис повного флоу: Plan → Execute
Планування
Агент визначає, які кроки потрібні для виконання задачі.
Виконання
Система виконує кожен крок на основі плану агента, часто через окремий ReAct цикл, і після цього об'єднує результат.
У коді це виглядає так
steps = plan(goal)
for step_no, step in enumerate(steps, start=1):
result = execute(step, context=context) # кожен крок бачить результат попередніх
if not result.ok:
return stop_or_replan(step_no=step_no, reason=result.error)
context.append(result.data)
return build_final_output(context)
Агент розбиває задачу на підзадачі і виконує їх по черзі.
Як це виглядає під час виконання
Goal: підготувати щомісячний звіт з продажів
Plan:
1. зібрати дані про продажі
2. очистити дані
3. порахувати ключові метрики
4. побудувати графіки
5. написати висновок
Execute step 1: система викликає fetch_sales_data(month)
Observe: отримано сирі дані
Між кроками: raw_data стає входом для очищення
Execute step 2: система викликає clean_sales_data(raw_data)
Observe: дані очищено та перевірено
Між кроками: clean_data стає входом для розрахунку метрик
Execute step 3: система викликає calculate_metrics(clean_data)
Observe: метрики пораховано
Execute step 4: система викликає build_charts(metrics)
Observe: графіки побудовано
Execute step 5: система формує підсумок
Observe: фінальний звіт готовий
Stop: після фінального кроку цикл завершується
Кожен крок виконується окремо, а проміжний результат стає входом для наступного етапу.
Повний приклад Task Decomposition агента
Коли підходить — і коли ні
Підходить
| Ситуація | Чому Task Decomposition підходить | |
|---|---|---|
| ✅ | Задача має кілька етапів | Патерн ділить велику ціль на зрозумілі підзадачі, які можна виконувати по черзі. |
| ✅ | Важливий порядок дій | План фіксує послідовність кроків і зменшує ризик пропустити критичний етап. |
| ✅ | Результат залежить від проміжних кроків | Кожна підзадача має власний результат, який стає входом для наступної. |
Не підходить
| Ситуація | Чому Task Decomposition не підходить | |
|---|---|---|
| ❌ | Задача проста | Декомпозиція додає зайві кроки там, де можна вирішити задачу напряму. |
| ❌ | Потрібна швидка відповідь | Побудова та виконання плану збільшує затримку порівняно з одноразовим виконанням. |
| ❌ | План неможливо скласти наперед | Якщо структура задачі постійно змінюється, жорсткий план швидко втрачає актуальність. |
Бо план може бути неточним або зайвим.
Коли використовувати Task Decomposition (vs інші патерни)
Використовуйте Task Decomposition, коли треба спочатку розбити велику ціль на менші виконувані підзадачі.
Короткий тест:
- якщо потрібно "спершу розкласти складну задачу на підзадачі" -> Task Decomposition
- якщо потрібно "після кожного кроку вирішувати, що робити далі" -> ReAct Agent
Порівняння з іншими патернами та приклади
Швидка шпаргалка:
| Якщо задача виглядає так... | Використовуйте |
|---|---|
| Після кожного кроку треба вирішити, що робити далі | ReAct Agent |
| Спочатку треба розбити велику ціль на менші виконувані задачі | Task Decomposition Agent |
| Потрібно запускати код, перевіряти результати і безпечно ітерувати | Code Execution Agent |
| Потрібно досліджувати дані та повертати висновки на основі аналізу | Data Analysis Agent |
| Потрібне дослідження з кількох джерел зі структурованими доказами | Research Agent |
Приклади:
ReAct: "Знайди причину падіння API: перевір логи -> подивись помилки -> запусти наступну перевірку за результатом".
Task Decomposition: "Підготуй запуск нового тарифу: розбий задачу на підзадачі для контенту, техніки, QA і підтримки".
Code Execution: "Порахуй retention за 12 місяців у Python і перевір коректність формул на реальних даних".
Data Analysis: "Проаналізуй CSV із продажами: знайди тренди, аномалії та дай короткі висновки".
Research: "Збери дані про 5 конкурентів із кількох джерел і зроби порівняльне резюме".
Як комбінувати з іншими патернами
- Task Decomposition + ReAct - кожна підзадача виконується покроково, щоб легше контролювати помилки.
- Task Decomposition + Routing - для кожної підзадачі автоматично обирається найвідповідніший виконавець.
- Task Decomposition + Orchestrator - Orchestrator керує залежностями і паралельністю, щоб план виконувався без блокувань.
Чим відрізняється від ReAct
| ReAct | Task Decomposition | |
|---|---|---|
| Що вирішує | Що зробити далі | Які кроки потрібні |
| Рівень | Виконання | Планування |
| Як працює | Виконує один крок | Ділить задачу на підзадачі |
| Використовує | Інструменти для виконання | ReAct цикли для виконання підзадач |
ReAct допомагає виконати крок.
Task Decomposition визначає, які кроки взагалі потрібно виконати.
Коротко
Task Decomposition Agent:
- Аналізує задачу
- Розбиває її на кроки
- Виконує по черзі
Переваги та Недоліки
Переваги
ділить велику задачу на зрозумілі кроки
простіше оцінити строки та ризики
легше делегувати й тестувати підзадачі
зменшує хаос у виконанні
Недоліки
декомпозиція теж потребує часу
план може вийти занадто деталізованим
якщо стартовий план хибний, далі буде важче
FAQ
Q: Чи завжди потрібен план?
A: Ні. Для простих задач це може бути зайвим.
Q: Чи може агент змінити план?
A: Так. Якщо під час виконання з'являються нові дані або один з кроків не спрацьовує, агент може переглянути початковий план: додати нові підзадачі, змінити порядок або скласти новий план перед наступними діями.
Q: Чи працює декомпозиція задач без ReAct?
A: Так. Планування підзадач може виконуватись окремо, наприклад якщо кожен крок має фіксований процес. Але у складніших задачах кожна підзадача часто виконується через цикл ReAct.
Що далі
Task Decomposition дозволяє розбити задачу на кроки.
Але що робити, якщо потрібно обрати між кількома агентами?