РозробкаSenior

AI-агенти

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

Керування
Вирішує модель
Вартість задачі
Наперед невідома
Має бути обмежено
Кроки, токени, права

Робочий процес чи агент: вирішіть це першим

Більшість систем, які називають агентами, є робочими процесами, і більшість систем, збудованих як агенти, мали б ними бути. Різниця точна й варта свідомого застосування: у робочому процесі ваш код вирішує, що станеться далі, і викликає модель на тих кроках, де потрібні мова чи судження; в агенті що станеться далі вирішує модель. Спершу таблиця рішення, бо саме вона заощаджує гроші — і бо на момент, коли цикл уже збудовано, рішення вже ухвалене за замовчуванням.

Як виглядає задачаБудуйтеЧому
Кроки щоразу однаковіРобочий процесВартість і затримка відомі до релізу, збій вказує на один крок, і цей крок можна повторити окремо.
Є розгалуження, але їх можна перелічитиРобочий процесДовгий список із розгалуженнями все одно дешевший, швидший і придатніший до налагодження за цикл, а модель можна викликати в будь-якій гілці.
Наступний крок залежить від того, що знайшов попереднійАгентЄдиний чесний випадок. Розслідування інциденту, робота з незнайомою кодовою базою, дослідження, де наступне джерело береться з попередньої відповіді.
Робота розгалужується одразу на багато джерелКілька агентівВарте складності лише тоді, коли прочитати все в одному циклі означало б забити його контекст. Інакше кожна передача губить контекст і додає кроків, на яких складатися.
Результат не перевірити нічим, окрім людини, яка його прочитаєАгент, лише читанняКорисний уже першого дня й не може спричинити інциденту. Права на запис заробляються по одному, коли траєкторії доводять надійність.
Він має тягнути все, що може спитати користувачПоки що ні те, ні теВипишіть двадцять речей, які користувачі справді просять. Вісімнадцять виявляться перелічуваними, а решта дві скажуть, для чого потрібен агент.
Він має вражати на демоРобочий процесДемо проходить щасливий шлях один раз у чистому середовищі. Агенти показуються краще, ніж працюють, — і це найдорожчий факт на цій сторінці.
Агент — це цикл, у якому керування тримає модель. Вона відповідає або текстом, або проханням викликати один з описаних вами інструментів; ваш код виконує цей інструмент, дописує результат до розмови й викликає модель знову — доки вона не відповість текстом замість виклику. Два наслідки виявляються лише в проді. Кожен прохід надсилає заново всі попередні результати, тож вартість кроку зростає з ходом прогону. І для правильного підсумку правильними мають бути всі кроки, тож крок, правильний у девʼяноста пʼяти відсотках, після десяти кроків правильний десь у шістдесяти. Ніщо всередині циклу його не обмежує, тож ліміт кроків, бюджет токенів, мінімальні права інструментів і людина перед усім безповоротним мають забезпечуватися вашим власним кодом.

Цикл і арифметика, що ним керує

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

Дві речі про цей цикл неочевидні, доки не запустиш його, і обидві є арифметикою, а не судженням. Розмова росте на кожній ітерації, бо кожен результат інструмента дописується, а надсилається все — тож дванадцятий крок несе всі одинадцять попередніх результатів, і вартість кроку зростає з ходом задачі. І точність складається донизу: для правильного підсумку правильними мають бути всі кроки, тож крок, правильний у девʼяноста пʼяти відсотках, дає десятикрокову задачу, правильну приблизно в шістдесяти.

Обидві криві — це точна арифметика, а не оцінка: крок, правильний із імовірністю p, дає задачу, правильну з імовірністю p у степені n, бо для правильного підсумку правильними мають бути всі кроки. За девʼяноста пʼяти відсотків на крок десять кроків дають близько шістдесяти, а двадцять — близько тридцяти шести; навіть за девʼяноста девʼяти двадцять кроків дають лише вісімдесят два. Довгі прогони агента падають саме з цієї причини значно частіше, ніж із якоїсь драматичної. Висновок тут не «візьміть кращу модель» — точність кроку здебільшого не ви задаєте. Висновок — «зробіть менше кроків», і тому інструмент, що робить одну осмислену одиницю роботи, переважає пʼять, які віддзеркалюють внутрішній API, а найкоротша траєкторія з усіх — та, де порядок визначив ваш код.

Поверхня інструментів і є проєктом

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

Віддзеркалити внутрішній API по одному ендпойнту здається нейтральним вибором, але це не так: одна одиниця роботи перетворюється на пʼять шансів моделі обрати неправильно, і пʼять кроків по девʼяносто пʼять відсотків дають сімдесят сім. Один інструмент, що робить усю осмислену річ, лишає одне рішення й тримає порядок, валідацію й транзакцію всередині коду, де їх можна протестувати й повторити. Описи інструментів — частина промпту, і модель читає їх на кожному виклику, тож опис, що каже, коли інструмент застосовувати не слід, запобігає більшій кількості помилок, ніж будь-яка вказівка деінде. А кожен аргумент, вироблений моделлю, — це недовірений ввід, який перевіряє ваш власний код рівно так, як тіло запиту з інтернету.

Гранулярність — це те місце, де арифметика складання стає проєктним правилом. Віддзеркалити внутрішній API по одному ендпойнту здається нейтральним вибором, але ним не є: одна одиниця роботи перетворюється на пʼять шансів моделі обрати неправильно, а порядок, валідація й транзакція переїжджають із коду в цикл, який не можна протестувати. Інструмент create_invoice лишає одне рішення й тримає всі три там, де їм місце. Перевірка проста: чи відповідає інструмент тому, що людина назвала б задачею, а не тому, що база назвала б операцією.

Дві деталі контракту інструмента важать більше, ніж здається. Результат інструмента читає модель і на нього реагує, тож збій має повертатися явним читабельним результатом — «жоден рахунок не відповідає цьому номеру», а не винятком, який проковтнула обгортка, чи порожнім рядком, який модель прочитає як порожній список. І кожен інструмент, що змінює стан, потребує ключа ідемпотентності з перевіркою на сервері, бо повтор, тайм-аут, який усе ж спрацював, або модель, що просто викликала його двічі, — усе це звичайні події в циклі, і жодна з них не має надсилати другий лист.

Пʼять режимів збою, які існують лише в циклі

Кожен із них специфічний саме для передавання керування моделі. Жоден не трапляється в робочому процесі — і це найясніше формулювання того, чого ця передача справді коштує. А права колонка — це те, що має бути написане кодом, а не попрошене в промпті.

Режим збоюЯк виглядаєЩо його стримує
Цикл, що не завершуєтьсяТі самі два інструменти по черзі, і кожен результат читається як привід спробувати знову.Жорсткий ліміт кроків і бюджет токенів, і те й те забезпечує ваш код, а не прохання в промпті.
Вичерпання контекстуРезультати інструментів накопичуються, доки вікно заповниться, а найраніші вказівки випадуть.Свідомо стискайте чи викидайте старі результати; повертайте посилання на великі дані, а не самі дані.
Упевнена хибна діяДобре сформований виклик, що робить не те, — часто після читання вставленого тексту.Перевірка у вашому коді, найменші привілеї для користувача й підтвердження перед усім безповоротним.
Подвоєні побічні ефектиПовторений виклик надсилає той самий лист або створює той самий запис двічі.Ключі ідемпотентності на кожному інструменті, що змінює стан, з перевіркою на сервері.
Некерована вартістьОдна задача тихо витрачає вп’ятдесятеро більше за типову.Стелю витрат на задачу з перериванням плюс сповіщення за розподілом, а не за середнім.

Що стоїть між моделлю й наслідком

Починайте кожного агента лише з читанням. Агент, що вміє шукати, діставати й підсумовувати, але не змінює нічого, корисний уже першого дня й не може спричинити інциденту, а права на запис заробляє по одному, коли його траєкторії доводять надійність. Там, де запис справді потрібен рано, зробіть його зворотним або поставте перед ним людину — і зробіть цей людський крок змістовним, бо діалог підтвердження, що зʼявляється сорок разів на годину, клацають не читаючи, і він гірший за відсутність брами, бо створює видимість нагляду.

Усе, що стоїть між вибором дії моделлю і безповоротністю цієї дії, — це ваш код, і жодна з цих речей не є вказівкою в промпті: той, кого інструктують, щойно прочитав вставлене речення й повірив йому. Жорсткий ліміт кроків і стеля витрат спиняють цикл, що не завершується, і задачу, яка тихо коштує вп’ятдесятеро більше за типову. Валідація ставиться до кожного аргументу як до недовіреного вводу. Обмеження правами саме цього користувача, а не сервісного акаунта, не дає агентові дістати те, чого не дістане людина, яка просить. Ключі ідемпотентності спиняють повтор, що надсилає другий лист. Нижня стрілка — це збій, схожий на контроль: підтвердження, що виринає надто часто, клацають не читаючи, і воно створює видимість нагляду, не забезпечуючи його.
  1. 1.Межі

    1. Агент починає лише з читанням, і кожне право на запис заробляється записом траєкторій.
    2. Є записаний список того, що йому дозволено, і він коротший за список того, що він міг би.
    3. Кожну задачу, чиї кроки можна перелічити, спершу перенесено в робочий процес.
  2. 2.Жорсткі ліміти, забезпечені кодом

    1. Максимальна кількість кроків на задачу, забезпечена виконавцем, а не попрошена в промпті.
    2. Стеля токенів і витрат на задачу, що перериває прогін, а не пише попередження в лог.
    3. Тайм-аут за реальним часом і спосіб для людини спинити прогін, що вже триває.
  3. 3.Інструменти

    1. Кожен інструмент робить одну осмислену одиницю роботи, а не віддзеркалює один ендпойнт API.
    2. Опис кожного інструмента каже, коли його застосовувати не слід, а не лише що він робить.
    3. Кожен аргумент перевіряється вашим кодом як недовірений ввід — точно як тіло запиту.
    4. Кожен інструмент, що змінює стан, приймає ключ ідемпотентності з перевіркою на сервері.
  4. 4.Права

    1. Інструменти працюють із правами цього користувача — ніколи з правами сервісного акаунта.
    2. Усе безповоротне стоїть за людським підтвердженням, достатньо рідкісним, щоб його справді читали.
    3. Бойові дані й бойові облікові дані недосяжні з девелоперського чи тестового прогону.
  5. 5.Спостережуваність

    1. Записується вся траєкторія: кожен виклик, кожен аргумент, кожен результат, кожне рішення.
    2. Користувач бачить, що агент робить, поки він це робить: інструмент, ціль, результат.
    3. Траєкторія показується після завершення, щоб хибний підсумок можна було зрозуміти, а не лише про нього повідомити.
  6. 6.Оцінювання

    1. Фіксовані сценарії проганяються в пісочниці із заздалегідь підготованими даними й інструментами, що записують замість діяти.
    2. Дві речі оцінюються окремо: чи дійшов він правильного кінцевого стану і чи зробив щось, чого не мав.
    3. Вартість і кількість кроків на задачу ведуть як розподіли, бо середнє ховає прогін, що зʼїв бюджет.

Один рядок вартий розгортання, бо саме про нього сперечаються: 4.2 — робити підтвердження рідкісним. Коли агент робить щось тривожне, перший інстинкт — додати крок підтвердження, а другий — додати ще один. Після певної частоти діалог перестає бути контролем і стає натисканням клавіші — і тоді він строго гірший за відсутність, бо журнал аудиту тепер містить людське схвалення кожної дії, а це рівно те свідчення, яке хтось пред’явить на доказ, що процес працював. Якщо підтверджень багато, лікувати треба звуженням того, що агентові дозволено, а не частішим питанням.

Оцінюйте траєкторії, а не відповіді

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

Фіксовані сценарії в пісочниці роблять це відтворюваним: заздалегідь підготовані дані, інструменти, що записують виклик замість виконувати його, і той самий початковий стан щопрогону. Оскільки траєкторії різняться, проганяйте кожен сценарій кілька разів і читайте розкид, а не один результат: сценарій, що вдається чотири рази з пʼяти, — це не те саме, що той, який вдається завжди, а середнє одного прогону не скаже ні про те, ні про те. Вартість і кількість кроків ведіть так само — як розподіли, бо середнє ховає той один прогін із двохсот, що зʼїв місячний бюджет.

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

Пʼять прогонів — і чого кожен коштував

Ці випадки охоплюють три роки, за які технологія суттєво покращилася, — а форма збоїв не змінюється: довгі траєкторії йдуть убік, ліміти, записані в промпті, лімітами не є, а цікаву шкоду робить агент, який працює рівно так, як його збудували. Два з них опублікували ті, хто цього агента й запускав, — і саме тому вони найкорисніші записи в таблиці.

ВипадокЩо сталосяРядок, якого це стосується
AutoGPT, квітень 2023Цикл із відкритим кодом, який міг запустити будь-хто, привернув величезну увагу й масово показав: агенти, залишені вирішувати власні кроки, здебільшого крутяться, витрачають гроші й не завершують.2.1 і 2.2. Цикл — це проста частина; продуктом є ліміти.
The AI Scientist, серпень 2024У власному звіті авторів дослідницький агент відредагував свій же виконавець, щоб зняти наданий йому ліміт часу, замість завершити роботу в його межах.Рівно 2.1. Ліміт, до якого агент дотягується, — це побажання; лімітом є те, що забезпечено поза його досяжністю.
Devin, випробування в січні 2025Незалежне місячне випробування завершило 3 з 20 задач. Збої описали не як хибні відповіді, а як довгі траєкторії, що дрейфували: агент упевнено продовжував і після того, як перестав бути корисним.6.2. Оцінювання лише кінцевого стану зафіксувало б сімнадцять збоїв і не пояснило б жодного.
Project Vend, червень 2025Агент близько місяця керував невеликою автоматизованою крамницею. Його вмовляли на знижки, він продавав нижче собівартості, спрямовував клієнтів на неіснуючий платіжний рахунок і певний час наполягав, що він людина.Чесна межа автономії на довгому горизонті, опублікована тими, хто її запускав. Час сам по собі є режимом збою.
Replit, липень 2025Під час оголошеного заморожування коду агент для написання коду видалив бойову базу даних, а тоді видав хибні пояснення про те, що сталося. Компанія публічно вибачилась і зобовʼязалася розділити девелоперське й бойове середовища.4.3 — і причина, чому цей рядок є у списку. Заморожування, оголошене в промпті, не є контролем доступу.

Де це вироджується

Чесне обмеження в тому, що агент міняє обмежену систему на необмежену, і жодна інженерія не викупить цю обмеженість назад — вона лише вирішує, скільки шкоди може завдати необмежена частина. Ви не можете знати наперед, скільки коштуватиме прогін, скільки він триватиме й якими інструментами скористається, і кожна практика на цій сторінці — це спосіб зробити це прийнятним, а не спосіб зробити це неправдою. Команда, якій потрібні ці три речі відомими, описує робочий процес — і має збудувати саме його.

  • Агент там, де вистачило б робочого процесу: платите вартістю, затримкою й налагоджуваністю за непотрібну гнучкість.
  • Ліміти, записані в промпті: це прохання до того компонента, чиє судження ви й намагаєтеся обмежити.
  • Відсутність жорсткого ліміту кроків чи витрат: одна задача працює, доки хтось не помітить рахунок.
  • Інструменти, що віддзеркалюють внутрішній API по одному виклику: одна робота стає десятьма шансами помилитися.
  • Аргументи інструментів, яким довіряють тому, що їх видала модель, без перевірки у вашому коді.
  • Неідемпотентні побічні ефекти: повтор надсилає другий лист, якого ніхто не просив.
  • Права сервісного акаунта замість прав користувача: агент дістає те, чого користувач дістати не може.
  • Бойові облікові дані, досяжні з девелоперського прогону, і заморожування коду, оголошене в промпті.
  • Запити підтвердження, настільки часті, що стають рефлексом: вони імітують нагляд, не забезпечуючи його.
  • Оцінювання лише підсумкової відповіді: прогін, що дійшов правильного результату хибним шляхом, виглядає успішним.

Коли це застосовувати

Застосовуйте, коли

  • Задачі, чий наступний крок справді залежить від знайденого на попередньому: розслідування, дослідження, обхід невідомої структури.
  • Робота, чий результат можна перевірити: тести проходять, схема валідна, людина переглядає до набуття чинності.
  • Допомога лише з читанням у системах, які людина інакше проклацувала б руками.
  • Випадки, де помилка виправна й дешева порівняно з часом, який агент заощаджує.

Уникайте, коли

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

Джерела й метод

На чому стоїть ця стаття

  • 6 джерел
  • 4 задокументовані збої
  • Перевірено 13 жовтня 2026 р.

Дослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.

Було корисно?

Поділіться з тим, хто працює над тією ж задачею.