Патерн Code-Execution Agent: безпечний запуск коду

Як агент запускає код у sandbox, щоб надійно рахувати, перевіряти гіпотези й автоматизувати задачі з guardrails для production.
На цій сторінці
  1. Суть патерна
  2. Проблема
  3. Рішення
  4. Як працює
  5. У коді це виглядає так
  6. Як це виглядає під час виконання
  7. Коли підходить — і коли ні
  8. Підходить
  9. Не підходить
  10. Чим відрізняється від Guarded-Policy
  11. Коли використовувати Code-Execution (vs інші патерни)
  12. Як комбінувати з іншими патернами
  13. Коротко
  14. Переваги та Недоліки
  15. FAQ
  16. Що далі

Суть патерна

Code-Execution Agent - це патерн, у якому агент не лише міркує текстом, а й запускає згенерований код у контрольованому середовищі, отримує фактичний результат і працює з ним далі.

Коли потрібен: коли відповідь треба обчислити або перевірити запуском коду, а не просто згенерувати текстом.


Агент:

  • Generate: генерує короткий код під задачу
  • Run: виконує його в sandbox
  • Observe: отримує реальний результат
  • Explain: повертає результат із поясненням

Патерн Code-Execution Agent: безпечний запуск коду

Проблема

Уяви, що ти просиш:

"Порахуй середню конверсію з цього CSV."

Агент пише скрипт і каже: "Середня конверсія - 3.84%".

Але без контрольованого середовища ти не бачиш:

  • що саме виконувалось
  • які файли читались
  • чи були спроби мережевих викликів
  • скільки ресурсів спожив код

У виконанні коду важлива не лише логіка коду, а й межі середовища, в якому цей код запускається.

У цьому й проблема: результат залежить одночасно від коду і середовища виконання, тому "просто запустити" небезпечно й непрозоро.

Рішення

Code-Execution Agent запускає код тільки через контрольований шар виконання.

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

Ключовий принцип: Модель може написати код, але запуск дозволений лише в sandbox і після перевірки політики.

Базові обмеження:

  • sandbox runtime
  • обмежений доступ до файлів
  • без мережі
  • ліміти CPU/RAM/часу

Керований цикл:

  1. Планування: визначити мінімальний скрипт для задачі
  2. Генерація: згенерувати код
  3. Перевірка політики: перевірити безпеку й дозволені операції
  4. Запуск в ізоляції: виконати код у sandbox
  5. Перевірка результату: перевірити коректність і ризики результату

Якщо перевірка політики або результату не пройдена, виконання зупиняється або ескалується.

Це захищає від ситуацій, коли агент може:

  • читати чутливі файли
  • відправляти дані назовні
  • зависати на довгих циклах
  • виконувати небезпечні операції

Надійне виконання коду - це не "просто запуск", а запуск, який runtime-policy технічно не дає обійти.

Як працює

Diagram

Ключовий елемент - sandbox.

Зазвичай він обмежує:

  • файлову систему: доступ лише до робочої директорії
  • мережу: часто повністю вимкнена
  • ресурси: CPU/RAM/time quotas
  • середовище виконання: дозволені бібліотеки та системні виклики
Опис повного флоу: Plan → Generate Code → Policy Check → Execution Layer → Sandbox Run → Validate → Return

Планування
Агент визначає, що саме треба обчислити і який формат результату очікується.

Генерація коду
Модель генерує мінімальний код під конкретний крок, без зайвого обсягу.

Перевірка політики
Згенерований код проходить policy-engine: дозволені бібліотеки, тип обчислень і допустимий рівень ресурсоємності.

Шар виконання
Система готує контрольоване виконання: середовище, ліміти та правила доступу.

Запуск у sandbox
Код виконується в ізоляції з жорсткими лімітами.

Валідація
Система перевіряє формат результату, помилки, політики безпеки і відповідність очікуваній схемі.

Повернення результату
Користувач отримує валідну відповідь або контрольовану зупинку/ескалацію.

У коді це виглядає так

PYTHON
code = agent.generate_code(goal, constraints={
    "language": "python",
    "no_network": True,
    "max_seconds": 5,
})

exec_result = execution_layer.run_code(
    code=code,
    policy="sandboxed_python",
)

if not exec_result.success:
    return fallback_or_stop(exec_result.error)

validated = validate_output(exec_result.stdout, schema=expected_schema)
if not validated.ok:
    return stop_with_reason(validated.reason)

return format_answer(validated.data)

Головне правило: ніколи не виконувати згенерований код поза sandbox та policy-контролем.

Як це виглядає під час виконання

TEXT
Goal: порахувати конверсію по CSV-звіту

Generate Code:
- читання sales.csv
- обчислення conversion_rate = paid / leads
- вивід таблиці по днях

Sandbox Run:
- timeout: 5s
- memory: 256MB
- network: disabled

Output:
- таблиця з 7 рядків
- середня конверсія: 3.84%

Повний приклад Code-Execution агента

PYPython
TSTypeScript · скоро

Коли підходить — і коли ні

Підходить

СитуаціяЧому Code-Execution підходить
Потрібні реальні обчислення, а не текстові припущенняВиконання коду дає фактичний результат замість здогадок моделі.
Робота з таблицями, файлами, формуламиТут потрібен фактичний запуск кроків, а не лише текстовий опис.
Важлива відтворюваність результатуЗапуск у контрольованому середовищі виконання робить перевірку результатів простішою.
Є sandbox + примусове застосування політикБезпечна інфраструктура дозволяє виконувати код без критичних ризиків.

Не підходить

СитуаціяЧому Code-Execution не підходить
Суто текстова задачаЗапуск коду додає зайву складність без користі.
Немає ізольованого середовища виконанняБез sandbox неможливо безпечно виконувати згенерований код.
Ризик вищий за користьПотенційна шкода не виправдовує підхід виконання у цьому кейсі.

Бо виконання коду додає операційні вимоги: sandbox, ліміти ресурсів, моніторинг і аудит запусків.

Чим відрізняється від Guarded-Policy

Guarded-PolicyCode-Execution
Головний фокусЩо дозволено виконуватиЯк безпечно виконати згенерований код
Ключовий механізмPolicy gateSandbox runtime + output validation
Коли спрацьовуєПеред дієюПід час і після запуску коду
Ризик без патернаНебезпечна дія потрапить у виконанняНенадійні або небезпечні результати виконання

Guarded-Policy вирішує, чи взагалі можна діяти. Code-Execution вирішує, як безпечно і відтворювано виконати кодову дію.

Коли використовувати Code-Execution (vs інші патерни)

Використовуйте Code-Execution, коли агент має запускати код, перевіряти результати і безпечно ітерувати.

Короткий тест:

  • якщо потрібно "виконати код і працювати з фактичним output" -> Code-Execution
  • якщо потрібно "спершу лише розбити велику задачу на підзадачі" -> Task Decomposition 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 конкурентів із кількох джерел і зроби порівняльне резюме".

Як комбінувати з іншими патернами

  • Code-Execution + Guarded-Policy: перед запуском агент перевіряє код за правилами безпеки і блокує небезпечні дії.
  • Code-Execution + Fallback-Recovery: якщо виконання зависло або впало з помилкою, агент переходить на безпечний резервний сценарій.
  • Code-Execution + Supervisor: ризикові запуски агент не виконує сам, а передає на погодження людині.

Коротко

Коротко

Code-Execution Agent:

  • Генерує код під конкретну задачу
  • Виконує його в ізольованому sandbox
  • Валідовує результат перед відповіддю
  • Підвищує точність у задачах з обчисленнями

Переваги та Недоліки

Переваги

дає точніші результати в обчисленнях

результат легко перевірити й повторити

видно, який код і що саме запускалось

зручно працювати з файлами та даними

Недоліки

потрібне ізольоване середовище

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

можливі помилки під час виконання коду

FAQ

Q: Чи можна виконувати код просто на сервері без ізольованого середовища?
A: Для продакшну: ні. Потрібна ізоляція, ліміти ресурсів і контроль дозволених операцій.

Q: Чи гарантує виконання коду правильність результату?
A: Не повністю. Потрібні валідація результату, тести на інваріанти і перевірка політик.

Q: Що робити, якщо код падає під час виконання?
A: Застосовувати обмежене відновлення: retry, резервне середовище виконання або контрольовану зупинку зі stop reason.

Що далі

Code-Execution підхід дозволяє агенту надійно виконувати обчислення.

А як застосувати це для повноцінної аналітики: очистки даних, агрегатів, графіків і висновків?

⏱️ 10 хв читанняОновлено Бер, 2026Складність: ★★★
Практичне продовження

Приклади реалізації патерна

Перейди до реалізації на готових прикладах.

Інтегровано: продакшен-контрольOnceOnly
Додай guardrails до агентів з tool-calling
Зашип цей патерн з governance:
  • Бюджетами (кроки / ліміти витрат)
  • Дозволами на інструменти (allowlist / blocklist)
  • Kill switch та аварійна зупинка
  • Ідемпотентність і dedupe
  • Audit logs та трасування
Інтегрована згадка: OnceOnly — контрольний шар для продакшен агент-систем.
Автор

Цю документацію курують і підтримують інженери, які запускають AI-агентів у продакшені.

Контент створено з допомогою AI, із людською редакторською відповідальністю за точність, ясність і продакшн-релевантність.

Патерни та рекомендації базуються на постмортемах, режимах відмов і операційних інцидентах у розгорнутих системах, зокрема під час розробки та експлуатації governance-інфраструктури для агентів у OnceOnly.