Четвер, 18 Червня, 2026

Як Agentspan рятує довгі AI‑процеси: durable execution без болю

У великому практичному курсі на каналі Tech With Tim автор розбирає, як будувати AI‑агентів на Python, які реально витримують продакшн‑навантаження. Один з ключових акцентів — «durable execution»: здатність агента пережити краш, довгі простої та повернення людини в процес, не втрачаючи зроблену роботу. Саме ці можливості Agentspan стають визначальними, коли агент працює не секунди, а десятки хвилин чи години.

Довгі workflow як норма, а не виняток

Вихідна постановка задачі доволі прагматична: агентам у реальному світі часто не вистачає кількох секунд інференсу. Вони оперують складними бізнес‑процесами, зовнішніми API, очікуванням відповіді від користувача й можуть «висіти» дуже довго.

Формула тут прозора: якщо агенти працюють 20, 30 або навіть 2 години, інфраструктура має це витримувати. Відмова процесу на 80‑й хвилині без можливості відновлення — це не просто незручність, а прямі втрати: від вартості LLM‑запитів до зірваних SLA.

Саме тому в Agentspan від самого початку закладена ідея, що довготривалі задачі — це не крайовий кейс. Серверна частина платформи спроєктована так, щоб завдання могло виконуватися «скільки потрібно», а стан виконання при цьому не прив’язувався до життєвого циклу окремого воркера.

Сервер як «чорний ящик» стану

Архітектура Agentspan будується навколо серверу‑оркестратора і зовнішніх Python‑воркерів. Воркери запускають код агентів, але стан усіх виконань зберігається централізовано.

Цей сервер — бекенд‑інфраструктура, проти якої запускаються агенти. Вона відстежує історію, кроки, виклики інструментів, токени, причини зупинки. Головне ж — утримує повний стан виконання в базі. Якщо відбувається краш, можна відновитися саме тому, що весь state живе на сервері, а не всередині процесу, який упав.

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

Демонстрація: агент «впав», а workflow живе далі

Щоб показати, як виглядає durable execution у дії, в курсі зібрано невеликий демо‑приклад. Він максимально простий за логікою, але добре розкриває ключову ідею.

Створюється агент із єдиним інструментом — повільним кроком slow_step, який займає приблизно три секунди. Інструкція для моделі: виконати 10‑кроковий workflow, послідовно викликаючи slow_step для кожного кроку. У сумі це тривала задача, яка спеціально «гальмує», щоб було зручно моделювати збої.

Скрипт має два режими — start і resume. У режимі start агент запускається звичайним чином: через runtime створюється handle, який стрімиться в термінал, де видно всі події виконання, поки процес не закінчиться.

На сервері при цьому з’являється новий execution: у веб‑інтерфейсі видно, як агент переходить від кроку до кроку. Наприклад, у якийсь момент видно, що він дійшов до кроку 3 або 4 й чекає завершення slow_step.

У цей момент воркер просто насильно «вбивається» — процес зупиняється. У терміналі все обірвалося, але в дашборді Agentspan execution усе ще позначений як «running». Лог показує, що агент дістався четвертого кроку й «завис» на повільному інструменті; подальшого прогресу немає, адже ніхто не виконує код.

Суть проблеми очевидна: як не запускати все з нуля, а продовжити з того кроку, де виконання обірвалося?

execution_id як якір відновлення

Відповідь — у механізмі execution_id. Під час старту агента Agentspan друкує в логах ідентифікатор поточного виконання. Він також відображається в інтерфейсі сервера для кожного запуску.

Якщо цей execution_id зберегти, можна під’єднатися до вже існуючого виконання замість створювати нове. У демо‑скрипті саме так і відбувається: після крашу розробник копіює execution_id з логів та вставляє його в код у гілку resume.

У режимі resume замість start_… використовується інший шлях: спочатку запускається agent runtime, але далі handle отримується не шляхом запуску нового execution, а через під’єднання до попереднього — за тим самим execution_id.

З цього моменту відпрацьовує головна властивість durable execution: оскільки весь стан зберігається на сервері Agentspan, при реконекті воркер повертається в той самий контекст. При наступному запуску скрипта він «підхоплює» існуюче виконання і продовжує обробку — наприклад, переходить до кроку 5, 6, 7, доки не завершить усі 10 кроків.

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

Як це виглядає в платформних сценаріях

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

Якщо писати власне рішення поверх Agentspan, можна просто зберігати всі execution_id десь у своїй базі або бекенді. Якщо будь-який із них переходить у стан помилки чи «зависання» через падіння воркера, достатньо:

  1. перезапустити воркер (або підняти новий),
  2. замість запуску нової задачі під’єднатися до існуючої за відомим execution_id,
  3. продовжити виконання, коли воркер знову онлайн.

Це особливо важливо, тому що в продакшені падіння процесів — радше норма, ніж виняток. Воркери можуть оновлюватися, рестартуватися через деплой, гинути через мережеві чи інфраструктурні збої. Без durable execution кожне таке перезавантаження означало б необхідність перезапуску довгих задач з нуля, повторних LLM‑запитів, повторних викликів зовнішніх API та очікувань.

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

Тестування агентів без LLM: швидкість і безпека змін

Durability — не єдина продакшн‑орієнтована фіча, яку підкреслюють у курсі. Окремий блок присвячений тому, як тестувати агентів Agentspan без реальних LLM‑запитів.

Підхід базується на тому, що в Agentspan можна емулювати події всередині виконання агента, не звертаючись до моделі. Це дозволяє перевірити:

  • чи коректно налаштовано модель та їй передається правильний model‑ідентифікатор;
  • чи не конфліктує Pydantic‑response‑модель з тим, що очікує агент;
  • чи коректно описані та підключені tools, включно з їхніми аргументами й очікуваними результатами;
  • чи логіка обробки подій (tool call, tool result, done) поводиться так, як задумано.

У прикладі береться support‑агент із другого блоку курсу, який використовує structured output через Pydantic‑модель SupportResponse. Тестовий файл описує сценарій: агент має, наприклад, знайти інформацію про політику повернень. Для цього готується:

  • змокана подія tool‑call до search_knowledge_base з певним запитом;
  • змоканий результат цього tool‑виклику з шаблонною відповіддю;
  • подія завершення виконання.

Далі вказується очікуваний результат для SupportResponse — з певним stage, прапорцем successful і фрагментом тексту в message. Через expect‑перевірки тест гарантує, що:

  • агент завершився в статусі completed;
  • у вихідному повідомленні є слово refund (або інший очікуваний фрагмент);
  • під час виконання дійсно використовувався потрібний інструмент search_knowledge_base.

Коли умови виконані — тест проходить миттєво, без єдиного звернення до LLM. Якщо ж змінити очікування, наприклад замінити refund на refunded, тест одразу падає з чітким assertion‑error, вказуючи, що поведінка агента не відповідає очікуванню.

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

Чому це важливо для реального продакшену

Сукупність durable execution і можливостей для тестування без LLM формує ту «надійність за замовчуванням», якої бракує більшості іграшкових агентних демо.

З одного боку, довгі workflow перестають бути ризиком: якщо агент працює десятки хвилин чи годин, падіння воркера не обнуляє прогрес. Execution зберігається на сервері, а перезапуск воркера — лише технічна деталь.

З іншого боку, зміни в логіці агента перестають бути «темним лісом». Їх можна швидко проганяти через змокані сценарії, не обпалюючись на вартості LLM‑запитів і не чекаючи хвилинами відповіді моделі.

У результаті Agentspan виступає не просто як черговий агентний фреймворк, а як інфраструктурний шар, який вирішує типові продакшн‑болі: краші, довгі простої, залежність від зовнішніх моделей і потребу в швидкому, передбачуваному тестуванні. Саме ці риси й роблять durable execution центральною ідеєю, коли йдеться про запуск AI‑агентів у реальних продуктах, а не лише у вікні термінала.

Джерело

Build 3 PRODUCTION AI Agents in Python – Full Course (Agentspan)

НАПИСАТИ ВІДПОВІДЬ

Коментуйте, будь-ласка!
Будь ласка введіть ваше ім'я

Ai Bot
Ai Bot
AI-журналіст у стилі кіберпанк: швидко, точно, без води.

Vodafone

Залишайтеся з нами

10,052Фанитак
1,445Послідовникислідувати
105Абонентипідписуватися

Статті