Коли агент отримує задачу, він не знає наперед, які кроки приведуть до результату.
Йому не дають інструкцію. Не пояснюють порядок дій.
Він має сам вирішити, що робити далі.
І тут можливі два підходи.
Агент може заздалегідь скласти план із кількох кроків — і рухатися за ним.
Або діяти по ситуації, обираючи наступний крок прямо під час роботи.
Обидва варіанти можуть привести до результату.
Але працюють вони по-різному.
І саме від цього залежить, як агент поводиться, коли щось іде не за планом.
Planning: коли агент думає наперед
У цьому підході агент спочатку намагається зрозуміти, які кроки можуть привести до результату.
Він отримує задачу — і складає приблизний план дій.
Наприклад:
- Знайти потрібні дані
- Обробити їх
- Сформувати звіт
- Надіслати результат
І вже після цього починає виконувати кроки один за одним.
Такий підхід добре працює, коли:
- Задача зрозуміла
- Дані доступні
- І мало шансів, що щось піде не так
Агент не приймає рішення на кожному кроці.
Він рухається за тим, що вирішив наперед.
Reactive: коли агент діє по ситуації
У цьому підході агент не будує план наперед.
Він дивиться на ситуацію — і обирає наступний крок прямо зараз.
Наприклад:
- Спочатку пробує отримати дані
- Якщо не вийшло — шукає інше джерело
- Якщо даних достатньо — переходить до обробки
Тобто він не вирішує весь шлях одразу.
Він рухається крок за кроком, постійно перевіряючи:
"Що змінилося після попередньої дії?"
І на основі цього обирає наступну.
Такий підхід гнучкіший.
Якщо щось не спрацювало — агент не ламається.
Він просто змінює дію.
Чим вони відрізняються на практиці

Planning-підхід намагається знайти шлях наперед.
Reactive-підхід шукає його в процесі.
У першому випадку агент каже:
«Ось що я зроблю, щоб досягти результату».
У другому:
«Я зроблю це — і подивлюсь, що зміниться».
Planning може бути швидшим, якщо все йде за планом.
Але якщо щось пішло не так — план може зламатися.
І агенту доведеться перебудовувати його заново.
Reactive діє повільніше.
Але краще пристосовується до змін.
Він не очікує, що все спрацює з першого разу.
І саме тому часто продовжує рухатися там, де план зупиняється.
| Planning | Reactive | |
|---|---|---|
| Підхід | Шукає шлях наперед | Шукає шлях у процесі |
| Як діє | «Ось що я зроблю» | «Спробую і подивлюсь» |
| Швидкість | Швидше, якщо все працює | Повільніше |
| При помилці | План ламається | Пробує інший варіант |
| Адаптація | Потрібно перебудувати план | Адаптується у процесі |
У коді це виглядає так
Нижче той самий принцип у простому форматі:
Planning спочатку будує план, а Reactive обирає наступний крок після кожного результату.
Спочатку маємо дії (інструменти), які агент може запускати:
def search_docs(state: dict):
return {"notes": "docs-found"}
def call_api(state: dict):
return {"api_data": "fresh-data"}
def write_report(state: dict):
return {"report": "ready"}
TOOLS = {
"search_docs": search_docs,
"call_api": call_api,
"write_report": write_report,
}
def run_action(action: str, state: dict):
return TOOLS[action](state)
1) Planning: спочатку план, потім виконання
Тут агент наперед вирішує весь маршрут:
state = {}
plan = ["search_docs", "call_api", "write_report"]
for action in plan:
result = run_action(action, state)
state.update(result)
# state -> {"notes": "...", "api_data": "...", "report": "ready"}
2) Reactive: крок за кроком по ситуації
Тут агент після кожного кроку дивиться на стан і вирішує, що робити далі:
def choose_next_action(state: dict):
if "notes" not in state:
return "search_docs"
if "api_data" not in state:
return "call_api"
if "report" not in state:
return "write_report"
return None
state = {}
while True:
action = choose_next_action(state)
if action is None:
break
result = run_action(action, state)
state.update(result)
# state -> {"notes": "...", "api_data": "...", "report": "ready"}
У цьому прикладі обидва підходи дають один результат.
Різниця в тому, коли приймається рішення про наступний крок.
Повний приклад реалізації з підключеною LLM
Аналогія з життя
Уяви, що ти їдеш у нове місто.
Можеш:
- Заздалегідь прокласти маршрут
- Або орієнтуватися по ситуації
Planning — це коли ти відкриваєш карту і будуєш шлях до кінця.
Ти знаєш:
- Де повернути
- Де зупинитися
- Як об'їхати міст
І просто рухаєшся за планом.
Але якщо дорогу перекрили — доведеться зупинитися і перебудувати маршрут.
Reactive — це коли ти їдеш без повного плану.
Побачив затор — звернув.
Не знайшов вулицю — обрав іншу.
Ти не знаєш весь шлях наперед.
Але можеш швидко змінювати напрямок, якщо щось пішло не так.
Те саме з агентом.
Він може:
- Або скласти план
- Або реагувати на ситуацію
І обирає підхід залежно від задачі.
Що це означає на практиці
Planning добре працює, коли:
- Задача зрозуміла
- Середовище стабільне
- І мало шансів, що щось зміниться
Reactive — коли:
- Дані можуть бути неповними
- Інструменти іноді не працюють
- Або ситуація змінюється під час роботи
У реальних системах агент часто поєднує обидва підходи.
Він може скласти загальний план — але реагувати, якщо щось іде не за ним.
І саме це визначає, чи він зупиниться після першої помилки — чи знайде інший шлях до результату.
Коротко
Агент може:
- Спланувати кілька кроків наперед (Planning)
- Або обирати дію по ситуації (Reactive)
Planning швидший, якщо все йде за планом.
Reactive гнучкіший, коли щось змінюється.
У реальних задачах агент зазвичай поєднує обидва підходи.
FAQ
Q: Чи планує AI-агент усі кроки наперед?
A: Не завжди. Він може скласти план або обирати наступну дію прямо під час роботи.
Q: Що краще — Planning чи Reactive?
A: Planning швидший у стабільному середовищі, Reactive краще працює, коли ситуація змінюється.
Q: Чи використовує агент лише один підхід?
A: У реальних задачах агент часто поєднує Planning і Reactive залежно від ситуації.
Що далі
Тепер ти знаєш, як агент обирає дії.
Але навіть найкращий підхід не гарантує, що він завжди зробить правильний вибір.
Чому?
Бо агент працює на основі моделі — а модель має свої обмеження.
І саме через них агент:
- Може помилятися
- Пропускати важливе
- Або обирати не той інструмент