Курс Decoding AI з відкритим вихідним кодом описує три способи запуску циклу агента та економіку провайдерів кожного з них
Більшість команд вважають рішення «яку модель обрати» найважливішим. Однак література про розробку обв’язки постійно вказує на інше. В експерименті LangChain із Terminal-Bench зміна лише обв’язки — за незмінної моделі — перемістила агента для написання коду приблизно з 30-го місця до топ-5.
Цей результат змінює формулювання питання. Якщо якість визначає обв’язка, тоді те, як ви запускаєте цикл, стає архітектурним рішенням, а не деталлю розгортання. Відкритий курс Пола Іуштіна Створення агента для написання коду з нуля створює Python-агента під назвою Decode. Опублікований через Decoding AI, він розділяє три режими запуску. Кожен режим має власний профіль затримки. Тому кожному з них потрібен свій провайдер інференсу.
Одне безголове ядро, три форми
У центрі системи — безголова обв’язка, яка не має власного інтерфейсу. Усередині працює спільний для всіх обв’язок цикл агента: LLM обирає дію, інструмент її виконує, спостереження повертається назад. Усе читається з контекстного вікна та записується до нього.
Сам агент невеликий. У Decode це визначення Pydantic AI приблизно на 20 рядків, що поєднує модель, інструменти й тип результату. У витоках вихідного коду Claude Code основний цикл займає приблизно 150 рядків. Усе інше — пам’ять, навички, пісочниця, дозволи, зворотний зв’язок LSP, ущільнення — це обв’язка.
Далі інтерфейси підключаються до цього ядра. Саме тут з’являються три режими:
Режим 1: інтерактивний, онлайн
Термінальний інтерфейс підключений до одного активного сеансу, у пам’яті, у тому самому процесі. Події передаються назад через асинхронні генератори в міру надходження токенів.
Складне завдання тут — керування. Якщо ви вводите текст, поки виконується виклик інструмента, негайне вставлення повідомлення пошкоджує поточний хід. Відповідь Decode — це черга керування та пріоритетний шлюз. Введені дані буферизуються під час надходження та вставляються лише в безпечній точці. Цикл має дві такі точки: MODEL_REQUEST — перед наступним викликом моделі, і WOULD_STOP — коли поточний хід мав би завершитися.
Цьому відповідають три режими введення. Звичайний Enter керує поточним ходом. Alt+Enter ставить наступну дію в чергу до завершення поточного ходу. Esc запускає узгоджене переривання на наступній межі, очищуючи обидві черги, щоб історія залишалася неушкодженою.
Людина читає кожен токен. Цей режим обмежений затримкою, тому для нього підходить розміщений API з низькою затримкою.
Режим 2: віддалений, офлайн
Віддалений режим зберігає безголову обв’язку та запускає її на сервері через середовище виконання агента. Decode використовує Kitaru, середовище виконання агентів ZenML, розгорнуте в GCP, а самі агенти виконуються на Modal.
Ніхто не спостерігає за процесом. Черга завдань розподіляється між N обв’язками паралельно, і кожна створює власний PR. Оскільки середовище виконання записує прогрес крок за кроком, пісочниця, яка припинила роботу посеред завдання, продовжує з останнього записаного кроку, а не запускається заново. Запуск, який призупинився в очікуванні введення людини, завмирає та не споживає обчислювальні ресурси, поки очікує.
Інструменти віддалено виконуються всередині пісочниць Modal, а локально — у Docker. Важливий показник тут — пропускна здатність на долар, а не час до появи першого токена.
Режим 3: асинхронний, онлайн
Третя форма розташована між двома іншими. Активний сеанс передає роботу в чергу завдань і негайно повертає результат. Фонові робочі процеси розподіляють виклики LLM і пізніше надсилають результати назад.
Користувач онлайн, але не стежить за кожним кроком. Черга керує роботою, тому запуск переживає клієнта, який його започаткував. Саме за таким принципом працюють агенти, що запускаються через Slack, і фоновий перегляд PR; оплата тут здійснюється як за пакетну обробку, а не як за чат.
Пояснення інтерактивного режиму
Чому провайдер змінюється залежно від режиму
Модель вартості залежить від вимог до затримки, і різниця значна.
Візьмімо 1 000 документів із 30 000 вхідних токенів у кожному та приблизно 500 вихідних токенів на документ. За тарифами передових API — 3 долари за мільйон вхідних токенів і 15 доларів за мільйон вихідних — арифметика уроку дає близько 97 доларів. Кешування підказок не рятує ситуацію, оскільки кожен документ має інший префікс. Пакетна обробка на безсерверному GPU зі швидкістю близько 3 000 токенів на секунду виконує ту саму роботу менш ніж за три години GPU-часу — приблизно за 13 доларів.
Зворотний випадок так само показовий. Стандартна тестова модель Decode, Qwen3.6 35B, працює на одному H200. В опублікованих тарифах Modal для H200 SXM указано 0,001261 долара за секунду, або близько 4,54 долара за годину. Якщо залишити інтерактивного агента без дій на ніч в очікуванні підтвердження y, десять годин простою додадуть до рахунку приблизно 45 доларів.
У цьому й полягає весь аргумент. За інтерактивну роботу платять за токен, оскільки людина чекає. За офлайн- та асинхронну роботу платять за GPU-годину, оскільки метою є пропускна здатність, а простій — ворог.
Є й друга вісь: безсерверні чи зарезервовані потужності. Аналіз тарифів Modal зводить її до одного порівняння. За резервування стягується пікова ставка протягом усього терміну контракту; безсерверна модель відповідає кривій попиту. Коли співвідношення пікового попиту до середнього перевищує знижку за резервування, безсерверна модель дешевша. Modal повідомляє про типові знижки у 2–5 разів порівняно зі співвідношенням пікового попиту до середнього на рівні 5–10 разів для інференсу, навчання та агентної розробки. Галузеві опитування, на які посилається компанія, вказують на завантаження зарезервованих ресурсів нижче 30%, а часто — нижче 10%.
Ключові висновки
- Обв’язка важливіша за модель: заміна лише обв’язки перемістила агента приблизно з 30-го місця до топ-5 у Terminal-Bench.
- Інтерактивний режим обмежений затримкою та керується через чергу, яка спорожнюється на межах
MODEL_REQUESTіWOULD_STOP. - Віддалений та асинхронний режими обмежені пропускною здатністю, тому при великих обсягах оплата за GPU-годину вигідніша за оплату за токен.
- 1 000 документів коштують приблизно 97 доларів за тарифами передових API проти приблизно 13 доларів за пакетний GPU-час.
- Безсерверна модель вигідніша, коли піковий попит у співвідношенні до середнього перевищує знижку за резервування — зазвичай 5–10 разів проти 2–5 разів.
Джерела:
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.