Loop-агенти проти graph-агентів: як я обираю архітектуру

2026-09-10

Кожен AI-агент - це модель, яка викликає інструменти в певному порядку. Єдине справжнє питання - хто цей порядок визначає. У loop-агента модель вирішує під час виконання. У graph-агента порядок визначаєте ви заздалегідь, а модель заповнює кроки. Більшість суперечок про агентні фреймворки насправді зводяться саме до цього вибору.

Loop-агент - найпростіше, що працює: надсилаєте моделі задачу й список інструментів, виконуєте інструмент, який вона просить, додаєте результат і повторюєте, доки вона не відповість без виклику інструмента. Це патерн ReAct, і саме його з коробки дають tool-use API від OpenAI та Anthropic, Vercel AI SDK і createAgent у LangChain. Він напрочуд здібний: більшість асистентів для коду й дослідницьких агентів працюють саме на такому циклі.

ЗадачаМодель вирішуєЗапуск інструментаВідповідьвиклик інструментарезультатбез виклику інструментаобмеження: ліміт кроків · бюджет токенів · список дозволених інструментів
Loop-агент: модель обирає наступний крок під час виконання і зупиняється, коли відповідає без виклику інструмента.

Його сила - гнучкість: шлях не треба знати заздалегідь, тож відкриті задачі - дослідження, дебаг, «з’ясуй, чому впало це замовлення» - лягають природно. Його слабкість - те саме. Кількість кроків невідома, отже невідомі вартість і час; модель може ходити колами, пропустити перевірку чи викликати інструмент, на який ви не розраховували. Тримати її в рамках допомагають запобіжники навколо циклу: ліміт кроків (stopWhen у Vercel AI SDK), бюджет токенів, список дозволених інструментів і перевірка фінальної відповіді.

Graph-агент перетворює процес на явні вузли й ребра: класифікувати, знайти, написати чернетку, перевірити, спитати людину, записати. Кожен вузол може бути викликом моделі, інструментом чи звичайним кодом, а ребра можуть розгалужуватись або навмисно вертатися назад - «перевірка не пройшла, повернись до чернетки». Стан - це явний об’єкт, який зберігається після кожного вузла. Найвідоміший приклад - LangGraph: у Python і TypeScript він додає чекпоінти, тож виконання може стати на паузу для схвалення людиною і продовжитись через кілька годин рівно з того місця, де зупинилось.

ВхідКласифікаціяПошук документівЗапит до користувачаЧернеткаПеревіркаСхвалення людиноюЗаписданих достатньобракує данихпомилкаконтрольна точка стану
Graph-агент: кроки й розгалуження спроєктовані заздалегідь, а стан зберігається після кожного вузла.

Його сила - контроль. Ви знаєте, які кроки можуть статися, в якому порядку і де людина має схвалити. Кожне виконання можна відстежити вузол за вузлом, вартість обмежена формою графа, а збій на п’ятому кроці не перезапускає кроки з першого по четвертий. Ціна - проєктування наперед і менше свободи: якщо задача не вкладається у ваш граф, агент не зможе зімпровізувати вихід.

Loop-агентGraph-агент

Швидкість першого прототипу

Відкриті задачі

Передбачувані вартість і час

Налагодження й трасування

Схвалення людиною

Довгі процеси й відновлення

Безпечні записи (гроші, персональні дані)

012345
Показати таблицею
КритерійLoop-агентGraph-агент
Швидкість першого прототипу5 / 52 / 5
Відкриті задачі5 / 52 / 5
Передбачувані вартість і час2 / 54 / 5
Налагодження й трасування2 / 55 / 5
Схвалення людиною2 / 55 / 5
Довгі процеси й відновлення1 / 55 / 5
Безпечні записи (гроші, персональні дані)2 / 55 / 5
Loop- і graph-агенти за сімома критеріями, оцінка 1-5 (більше - краще). Моя оцінка з досвіду побудови обох - не бенчмарк.

Якщо поставити їх поруч, вибір - це не «що краще», а «де ваша задача»: між відкритою й повторюваною, між дешевими помилками й дорогими. Цікава деталь: межа розмитіша, ніж у маркетингу. createAgent у LangChain - це цикл, але з версії 1.0 він працює на рантаймі LangGraph: цикл - це просто найменший можливий граф.

Розмір бульбашки показує типову кількість викликів моделі на задачу

Показати списком
  • Один виклик моделі — Один промпт — одна відповідь: максимум передбачуваності, мінімум автономії. (1 виклик моделі)
  • Graph-агент — Кроки й розгалуження спроєктовані наперед; модель працює всередині кожного вузла. (фіксована кількість викликів)
  • Граф із циклом усередині — Фіксований процес з одним відкритим кроком, наприклад дослідженням. (фіксовані кроки + обмежений цикл)
  • Loop-агент — Модель сама обирає кожен наступний крок, доки не завершить роботу. (стільки викликів, скільки вирішить)
Де опиняється кожен підхід: праворуч - більше автономії, вгорі - більше передбачуваності. Концептуальна мапа, не вимірювання.

Моє правило: починати з циклу для досліджень і внутрішніх інструментів, де людина однаково читає результат. Переходити до графа, коли процес повторюється, торкається грошей чи даних клієнтів, потребує схвалення або триває довше за один запит. Найкращі продакшен-системи зазвичай поєднують обидва: граф для бізнес-процесу, а всередині одного вузла - маленький цикл, наприклад крок дослідження, який може кілька разів викликати пошук, перш ніж передати чистий результат наступному, детермінованому вузлу.

Що б ви не обрали, правила однакові: типізовані входи інструментів, жорсткий бюджет, лог кожного кроку і жодного запису в систему обліку без перевірки. У TypeScript чи Python це кілька десятків рядків навколо виклику моделі - і саме вони відрізняють демо від продукту. Якщо у вас є процес, який хочеться віддати агенту, - надішліть кроки так, як їх сьогодні робить ваша команда. Скажу, чи це цикл, граф, чи граф із циклом усередині.

Дайте наступному продукту того, хто лишається.

Готовий стартувати зараз і лишитись. Довготермінові ретейнери, не злив за два тижні. Напишіть - обговоримо проєкт, вимоги і як рухатись далі.

Запитайте про досвід чи послуги