Понеділок, 20 Квітня, 2026

Як Cloudflare вчить AI-агентів писати й запускати JavaScript

У світі AI-агентів зараз формується новий підхід до інтеграції з реальними системами. Замість того, щоб змушувати великі мовні моделі (LLM) викликати десятки й сотні JSON-інструментів, інженери починають дозволяти їм писати й виконувати код. Одним із найпослідовніших експериментаторів у цьому напрямку став Sunil Pai — розробник AI-агентів у Cloudflare та автор open source-інструмента для реального часу Partykit. На конференції AI Engineer він розповів про «Code Mode» — підхід, у якому LLM генерує виконуваний JavaScript, що працює поруч із API Cloudflare, і таким чином радикально спрощує архітектуру агентів та зменшує витрати токенів.

Code Mode: Let the Code do the Talking - Sunil Pai, Cloudflare

Коли tool calling ламається: масштаб як головний ворог

Tool calling — стандартний спосіб, яким сьогодні більшість AI-агентів взаємодіє з зовнішніми сервісами. Модель отримує опис інструментів у вигляді JSON-схем, а потім у відповідях повертає структуровані виклики цих інструментів. Поки інструментів небагато, це працює прийнятно. Проблеми починаються, коли агенту потрібно бачити реальний ландшафт корпоративної інфраструктури.

Типовий сучасний AI-стек у компанії включає інтеграції з Google-сервісами, Jira, внутрішніми wiki, CRM, системами моніторингу, білінгу, кастомним бекендом. Кожен із цих сервісів може мати десятки або сотні окремих дій, які розробники перетворюють на окремі «tools». У результаті в контекст LLM доводиться «запихати» сотні описів інструментів.

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

У невеликих сценаріях, де агенту потрібно викликати один-два інструменти, це ще терпимо. Але коли мова йде про складні робочі процеси, які торкаються десятків API, традиційний tool calling починає «ламатися» як за продуктивністю, так і за керованістю.

Cloudflare зіткнувся з цією проблемою в особливо концентрованому вигляді. Публічний API компанії — це приблизно 2 600 endpoint’ів. Якщо наївно перетворити кожен endpoint на окремий інструмент для LLM, доведеться передати в перший виклик моделі опис усієї цієї поверхні. За оцінками інженерів, це близько 1,2–1,5 мільйона токенів лише на стартову інструкцію. Для більшості практичних систем це просто неприйнятно — як з точки зору вартості, так і з точки зору затримок.

На цьому тлі стає зрозуміло, чому в Cloudflare почали шукати радикально інший підхід.

Code Mode: замість тисячі інструментів — один JavaScript

Ідея Code Mode в Cloudflare виглядає на диво простою: замість того, щоб змушувати LLM повертати JSON-виклики інструментів, їй пропонують написати програму. Зазвичай це JavaScript, який запускається в контрольованому середовищі поруч із API.

У такій моделі LLM отримує опис середовища, в якому буде виконуватися код, і завдання, яке потрібно вирішити. Далі замість серії «запит — tool call — відповідь — наступний tool call» модель генерує один фрагмент коду, який інкапсулює всю логіку: послідовність викликів API, обробку помилок, цикли, паралельні запити, роботу зі станом.

Цей підхід використовує те, на чому LLM уже добре навчені. Моделі тренувалися на гігантських масивах коду, вони вміють писати синтаксично коректні програми, користуватися типами, дотримуватися контрактів API. На відміну від JSON-описів інструментів, які потрібно спеціально конструювати й підтримувати, код — це природна мова для опису складних послідовностей дій.

Ключова перевага Code Mode полягає в тому, що вся складність переноситься з рівня діалогу з моделлю на рівень виконання коду. Замість десятка раундів взаємодії з LLM система робить один виклик, отримує програму, запускає її в середовищі, де вже є всі потрібні примітиви для роботи з API, і чекає результату.

Це не просто косметична зміна формату. Код дає моделі те, чого бракує традиційному tool calling: повноцінні програмні конструкції. У Code Mode агент може використовувати цикли для пагінації, зберігати проміжний стан між викликами, будувати складні послідовності дій, паралелізувати запити до різних endpoint’ів. Усе це — в одному фрагменті JavaScript, який виконується як звичайна програма.

Як стиснути 1,5 мільйона токенів до тисячі: два інструменти замість 2 600

Найяскравіший приклад того, як Code Mode змінює масштабованість, — експеримент Cloudflare з власним API. Замість того, щоб експонувати для моделі тисячі окремих інструментів, команда побудувала API для агентів, який складається лише з двох «tool’ів»: search і execute.

Обидва ці інструменти працюють не з окремими endpoint’ами, а з кодом. Вони приймають на вхід рядок JavaScript, який виконується в спеціальному середовищі.

У випадку search вхідною змінною для цього коду є повний OpenAPI JSON-специфікація всього API Cloudflare. Модель отримує можливість написати функцію, яка переглядає цю специфікацію, фільтрує, шукає потрібні маршрути, аналізує параметри. Іншими словами, замість того, щоб заздалегідь розписувати кожен endpoint як окремий інструмент, Cloudflare просто дає агенту програмний доступ до «карти» всього API.

Після того як search знаходить релевантні endpoint’и, у гру вступає execute. Цей інструмент повертає функції, які можна викликати проти знайдених endpoint’ів. Модель знову ж таки генерує JavaScript, який використовує ці функції для виконання конкретних дій: отримання списків, створення ресурсів, оновлення налаштувань.

У результаті опис усієї поверхні API, який у наївній схемі займав би 1,2–1,5 мільйона токенів, вдалося стиснути приблизно до 1 000 токенів. Це скорочення на порядку 99,9%. Замість гігантського JSON-опису тисяч інструментів агент бачить лише два: search і execute, плюс короткий опис того, як ними користуватися.

Це не просто економія. Така архітектура змінює спосіб, у який агент «мислить» про API. Замість статичного переліку можливостей він отримує динамічний простір, який можна досліджувати кодом. Модель сама вирішує, які endpoint’и їй потрібні, як їх знайти в OpenAPI-специфікації, як побудувати поверх них програму.

DDoS як приклад: один запуск замість восьми раундів

Щоб зрозуміти практичний ефект Code Mode, варто подивитися на типовий сценарій використання Cloudflare — захист від DDoS-атак. Уявімо, що сайт клієнта зазнає масованої атаки, трафік падає, паніка, глибока ніч, до акаунт-менеджера не додзвонитися. Користувачеві потрібно одне: «Знайти всі IP-адреси, які нас атакують, і заблокувати їх».

У традиційній моделі з MCP-сервером і tool calling агенту довелося б виконати низку послідовних кроків: отримати метрики, знайти підозрілу активність, витягнути списки IP, створити правила блокування, застосувати їх. Кожен крок — окремий tool call, окремий раунд взаємодії з LLM. Навіть не враховуючи проблему 1,2 мільйона токенів на опис усіх endpoint’ів, це перетворюється на приблизно вісім раундів запитів до моделі.

У Code Mode сценарій виглядає інакше. Агент отримує завдання у вигляді природної мови, після чого генерує один JavaScript-файл, який:

аналізує доступні через API метрики трафіку,
знаходить IP-адреси, що відповідають патерну атаки,
формує правила блокування,
застосовує їх через відповідні endpoint’и.

Цей код запускається безпосередньо поруч із API Cloudflare. Немає необхідності повертатися до моделі після кожного кроку, немає багатократних раундів tool calling. Уся логіка виконується «в один постріл», у межах одного запуску програми.

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

«Міфічний сервер»: як агент сам знаходить потрібний endpoint

Ще один показовий приклад — демо, яке в Cloudflare називають «mythical server». У ньому агенту дають завдання: «список моїх Workers». Для демонстрації йому надають лише read-only доступ.

Агент не отримує наперед список усіх можливих endpoint’ів. Замість цього він використовує search, щоб знайти в OpenAPI-специфікації Cloudflare API всі маршрути, які відповідають запиту «list workers» або подібним формулюванням. Це робиться через згенерований JavaScript, який переглядає JSON-опис API, фільтрує його за ключовими словами, параметрами, схемами.

Після того як потрібний endpoint знайдено, агент генерує ще один фрагмент JavaScript, який викликає цей endpoint через execute. У демо це виглядає як один запит до API, який повертає список усіх Workers акаунта. Далі код може, наприклад, пагінувати результати, обробляти помилки, форматувати вивід.

Цікаво, що навіть у цьому простому сценарії видно, як Code Mode використовує повноцінні програмні конструкції. У демонстрації агент намагався реалізувати пагінацію, проходячи по сторінках результатів. Це вже не просто «виклик інструмента», а невелика програма з циклами, умовами, обробкою проміжного стану.

Для розробників це означає, що замість конструювання десятків спеціалізованих інструментів під кожен сценарій, можна дати агенту загальний доступ до API через search і execute, а всю бізнес-логіку делегувати згенерованому коду.

Від інтерфейсів для програмістів до інтерфейсів для всіх

За Code Mode стоїть ширша ідея: LLM перетворюють програмування з привілею розробників на універсальний спосіб взаємодії з системами. Сьогодні, якщо технічній людині потрібно виконати рутинну задачу — наприклад, перейменувати й відсортувати 200 фотографій на робочому столі, — вона відкриє IDE, напише невеликий скрипт, можливо, підключить модель комп’ютерного зору для генерації підписів, і автоматизує все за кілька хвилин.

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

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

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

Чому безпечне виконання коду стає критичною умовою

Дозволити LLM писати й запускати код — означає відкрити двері до потужних, але потенційно небезпечних можливостей. У Cloudflare це добре розуміють, тому Code Mode з самого початку проєктувався разом із ізольованим середовищем виконання.

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

За замовчуванням код не має жодних можливостей, окрім самого факту виконання. Він не може робити мережеві запити, не бачить жодних API, не має доступу до файлової системи чи інших ресурсів. Усі можливості додаються явно, як окремі capability. Якщо агенту потрібно працювати з Cloudflare API, йому видають відповідні функції. Якщо потрібен доступ до зовнішніх сервісів, це також налаштовується окремо.

Для реалізації такого середовища Cloudflare використовує V8 isolates — ізольовані контексти JavaScript-движка V8. Вони стартують дуже швидко й мають за плечима близько десяти років «бойового» загартування в плані безпеки. Цей вибір добре лягає на філософію Code Mode: якщо агент генерує JavaScript, логічно виконувати його в середовищі, яке вже оптимізоване для цього й добре вивчене з точки зору загроз.

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

Усе це робить Code Mode не просто технікою оптимізації токенів, а частиною ширшого тренду на capability-based security в епоху AI-агентів. Якщо модель може писати програми, то завдання інфраструктури — не заборонити їй це, а створити середовище, де ці програми можуть робити лише те, що їм дозволено.

Висновок: Code Mode як новий рівень абстракції для AI-агентів

Перехід від JSON-based tool calling до Code Mode в Cloudflare показує, як швидко змінюється архітектура AI-систем, коли моделі починають сприйматися не як чат-боти, а як універсальні генератори програм. Там, де раніше доводилося будувати сотні інструментів і підтримувати гігантські контексти, тепер достатньо двох entrypoint’ів — search і execute — і можливості писати JavaScript.

Стиснення опису API з 1,2–1,5 мільйона токенів до приблизно тисячі — це не просто інженерний трюк. Це демонстрація того, що LLM можуть працювати з великими системами не через статичні переліки можливостей, а через динамічне дослідження й програмування поверх них. Приклади з DDoS-мітигацією й «міфічним сервером» показують, як один згенерований фрагмент коду може замінити багатокрокові діалоги з агентом.

Водночас Code Mode підкреслює, що майбутнє AI-агентів неможливе без серйозної роботи над середовищами виконання. Harness Cloudflare, побудований на V8 isolates і принципі «нульових можливостей за замовчуванням», — це відповідь на питання, як дозволити моделям писати й запускати код, не жертвуючи безпекою.

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


Джерело

Code Mode: Let the Code do the Talking – Sunil Pai, Cloudflare

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

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

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

Vodafone

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

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

Статті