інженерна нотатка / Agentic Engineering

Застосунок, який став зайвим

Software 3.0: від Chat Completions до керованих агентів — і нової ролі інженера

Освітня стаття про шлях від Chat Completions через Responses API та Agents SDK до керованих агентів і про зміну відповідальності інженера.

Коротко

  • Кожен новий шар API зміщує межу між кодом застосунку та можливостями платформи.
  • Агент і керований harness не знімають відповідальність за інструменти, дані та результат.
  • Практика Software 3.0 поєднує делегування з вимірюваними умовами успіху.

Software 3.0: від Chat Completions до керованих агентів — і нової ролі інженера

Освітня стаття для студентів і розробників Перевірено станом на 12 вересня 2026 року.

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

Навігація

1. Історія MenuGen · 2. Еволюція інтерфейсів · 3. Chat Completions · 4. Responses API · 5. Agents SDK · 6. Новий Agents API · 7. Одне завдання — чотири архітектури · 8. Інші приклади · 9. Чого вчитися інженеру · 10. Практичне завдання · Джерела

1. Карпаті створив застосунок. А потім побачив, як він зникає

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

У квітні 2025 року Андрій Карпаті описав, як створив для цього завдання MenuGen, майже повністю доручивши написання застосунку інструментам AI. Це був експеримент із vibe coding: людина задає бажану поведінку, а моделі створюють звичайний вебзастосунок. [1]

Через рік в опублікованому ним огляді виступу на Sequoia Ascent з’явилася радикальніша думка. Початкова система розпізнавала назви страв, генерувала зображення та складала інтерфейс. Але мультимодальній моделі можна просто передати фотографію й попросити додати зображення страв безпосередньо на неї. Значна частина проміжного застосунку стає непотрібною. [2]

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

Це різні зміни. Перша змінює спосіб виробництва програм. Друга — межу між програмою та моделлю.

Що означає Software 3.0

У схемі Карпаті Software 1.0 — це поведінка, записана у звичайному коді; Software 2.0 — поведінка, отримана внаслідок навчання й закладена у вагах нейромережі; Software 3.0 — програмування через інструкції та контекст, які інтерпретує модель. Це не три взаємовиключні світи: вони можуть співіснувати в одній системі. [2]

Для інженера різницю зручно виразити так:

ПідхідЩо задає розробникДе визначається поведінка
Звичайний алгоритмПослідовність дій та умовиУ написаному коді
Модель, яку навчаютьДані, мету навчання, архітектуруУ навчених параметрах
Програмування через модельМету, контекст, інструменти, обмеженняУ роботі моделі над поточним завданням

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

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

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

2. Від API до агентного середовища: як змінювалася межа відповідальності

З інженерного погляду цю історію зручно читати як послідовне розширення межі делегування: Chat Completions → Responses API → Agents SDK → Agents API. З кожним кроком розробник отримує можливість передавати платформі дедалі більшу частину роботи — спочатку генерування відповіді, потім роботу з інструментами та станом, далі агентний цикл, а тепер і значну частину середовища виконання. Водночас окремі елементи стеку розвивалися паралельно й можуть використовуватися разом.

Історія почалася ще до Chat Completions. У червні 2020 року OpenAI оголосила закриту бета-версію API з моделями GPT-3: на вхід подавався текст, а на виході отримували його продовження або перетворення. Уже тоді поведінку моделі можна було спрямовувати інструкціями та прикладами. [3]

Наступна важлива дата — 11 березня 2025 року, коли OpenAI одночасно представила Responses API та Agents SDK. Це добре показує характер еволюції: Responses розвивав інтерфейс безпосередньої роботи з моделями й інструментами, а SDK додавав вищий програмний шар для організації агентної роботи. [6]

ДатаПодіяЩо корисно запам’ятати
11 червня 2020Анонс першої бета-версії OpenAI APIВзаємодія з моделлю через текст і приклади. [3]
1 березня 2023Публічний запуск ChatGPT APIРозмова як послідовність повідомлень. [4]
13 червня 2023Function callingМодель може запросити виклик описаної функції. [5]
11 березня 2025Responses API та Agents SDKНовий інтерфейс роботи з моделями й окрема бібліотека агентної оркестрації. [6]
21 травня 2025Розширення ResponsesЗокрема MCP, генерування зображень, Code Interpreter і фонові завдання. [7]
10 вересня 2026Публічна бета-версія Agents APIКерований OpenAI механізм виконання агентних завдань на основі Codex. [15]

Ранні інтерфейси при цьому не обов’язково зникають одразу після появи нових. Chat Completions і далі підтримується, хоча для нових проєктів OpenAI рекомендує Responses. Натомість окрему гілку Assistants API було виведено з експлуатації 26 серпня 2026 року. [8]

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

3. Chat Completions: модель усередині нашого конвеєра

Базова ідея Chat Completions проста: застосунок передає повідомлення з ролями й отримує відповідь моделі. Розробник організовує історію розмови та подальшу поведінку своєї програми. Це вже зручніше за вільне продовження тексту: діалог стає явною структурою інтерфейсу. [4] [8]

Наступним важливим кроком став function calling. Застосунок описує доступні функції, а модель може повернути назву функції та аргументи. Але пропозиція викликати функцію ще не означає її виконання: реальну дію виконує програма розробника, після чого передає результат назад моделі. [5]

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

У такій архітектурі ці обов’язки покладено на застосунок. Розробник будує цикл керування: запит до моделі, розбір відповіді, виконання інструмента, додавання результату до історії, наступний запит. І окремо вирішує, коли зупинитися.

Агента можна побудувати й на Chat Completions. Агентність визначається не назвою endpoint, а тим, чи доручаємо ми моделі обирати наступні дії. Просто значну частину механізму виконання доводиться збирати навколо неї.

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

4. Responses API: відповідь стає процесом

Responses змінив не лише назву методу. Замість орієнтації на чергове повідомлення інтерфейс дозволяє працювати з типізованими елементами результату: повідомленнями, викликами інструментів, їхніми результатами та іншими об’єктами. Застосунку не потрібно вдавати, що все, що відбувається, — це просто текст чергової репліки. [8]

На старті Responses отримав вбудовані інструменти пошуку в інтернеті, пошуку у файлах і взаємодії з комп’ютером. Пізніше з’явилися додаткові можливості, зокрема віддалені MCP-сервери, генерування зображень і Code Interpreter. Частина дій виконується на боці платформи, а не через самостійно написаний інтеграційний код. [6] [7]

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

Менше ручного керування історією

У Responses можна пов’язувати звернення через previous_response_id або використовувати Conversations для зберігання стану розмови. Але збережена історія не дорівнює нескінченному контексту й не робить обробку попередніх повідомлень безкоштовною. Потрібно розрізняти зберігання даних, те, що модель бачить у конкретному виклику, і вартість обробки цього контексту. [10]

Поява фонового режиму також важлива: тривалий виклик не зобов’язаний вкладатися в час існування одного відкритого HTTP-з’єднання. Водночас фонова відповідь моделі — ще не повний життєвий цикл бізнес-процесу з усіма його зовнішніми діями. [7]

Responses також продовжує еволюціонувати

Станом на вересень 2026 року Responses уже включає серверне ущільнення контексту — compaction — і бета-можливість координації субагентів для підтримуваних моделей. Це важливо для розуміння еволюції: нові рівні платформи не обнуляють попередні, а зміщують межу між тим, що розробник збирає самостійно, і тим, що отримує як готовий механізм. [11] [12]

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

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

5. Agents SDK: не писати цикл керування заново

Наступний рівень — Agents SDK, бібліотека, яку розробник включає у свій застосунок. Якщо Responses розширює безпосередню взаємодію з моделлю та інструментами, то SDK допомагає зібрати з цих можливостей надійний агентний процес і не писати весь цикл керування самостійно.

В OpenAI Agents SDK розробник описує агентів, інструкції та інструменти. Runner організовує цикл звернень до моделі й виконання дій. У бібліотеці є передавання керування між агентами, виклик агента як інструмента, перевірки вхідних і вихідних даних, керування сесіями, трасування та механізми участі людини. Є інтеграції з MCP, а також можливості для голосових агентів і агентів, що працюють у sandbox. [13]

Різниця між двома способами делегування суттєва. Агент як інструмент виконує підзавдання й повертає результат провідному агенту. Handoff передає іншому агенту керування поточною роботою. Це не просто дві назви для «покликати ще одну модель». [13]

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

Ключова межа: SDK працює всередині вашого застосунку. Бібліотека допомагає організувати виконання, але розгортання, інтеграція з вашим сховищем та експлуатаційна архітектура залишаються вашим завданням. OpenAI надає SDK для Python і TypeScript. [14]

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

6. Agents API: тепер керованим сервісом стає сам агент

10 вересня 2026 року OpenAI представила Agents API у публічній бета-версії. Його центральна ідея — надати розробникам керований механізм виконання, що лежить в основі Codex, разом з інфраструктурою тривалої роботи. У документації цей механізм називається harness. [15]

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

6.1. Одиниця роботи — сесія, що зберігається

В Agents API розробник задає агента — модель, інструкції та доступні інструменти — і запускає сесію з конкретним завданням. У ній зберігаються налаштування, ходи роботи й елементи взаємодії. За поступом можна спостерігати через події; роботу — продовжувати та спрямовувати додатковими повідомленнями. [16]

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

Наприклад: «Розбери матеріали проєкту й підготуй огляд». Потім: «Зосередься на розбіжностях у бюджеті». Після результату: «Додай додаток із вихідними розрахунками». Ми проєктуємо вже не одноразове генерування, а керовану роботу над завданням.

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

6.2. Механізм виконання та робоче середовище розділені

OpenAI керує harness. А environment, середовище виконання команд і роботи з файлами, може бути розміщене в OpenAI, у власній інфраструктурі або в підтримуваного провайдера. Для деяких завдань sandbox узагалі не потрібен: достатньо підключених інструментів. Сервер застосунку, як і раніше, відповідає за користувачів, інтеграції та власні обробники функцій. [17]

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

У керованому sandbox доступні робочі файли, запуск коду та підготовка оточення. Середовище має життєвий цикл і може завершити роботу; його не можна сприймати як постійний сервер застосунку. Навіть статус завершеного ходу не доводить, що кожен викликаний інструмент відпрацював успішно. [18]

Практичний наслідок: «агент закінчив» і «завдання прийнято» мають бути двома різними станами вашої системи.

6.3. Результатом може бути артефакт, а не повідомлення

Агенту можна доручити не лише пояснити результат, а й створити файл. У керованому середовищі файли з /workspace/outputs публікуються як артефакти завершеного ходу. Їх можна отримати й після завершення самого середовища. Для власних середовищ отримання файлів організовується інакше; автоматична публікація не поширюється на них сама собою. [19]

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

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

6.4. Інструменти не зникають — змінюється спосіб їх координації

Важлива можливість — programmatic tool calling. Модель може описати послідовність звернень до інструментів невеликим кодом JavaScript: виконати незалежні запити паралельно, відфільтрувати результати, об’єднати їх і лише тоді повернути потрібну інформацію в контекст. Це зменшує потребу передавати моделі весь проміжний масив даних. Такий механізм є і в Responses; в Agents API його ввімкнено за замовчуванням. [20]

Це не те саме, що повноцінне середовище Linux: для такої координації використовується ізольоване виконання у V8 з доступом до дозволених інструментів, а не довільний Node.js із файловою системою та пакетами. [20]

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

І ще одне обмеження: власні функції, як і раніше, виконує ваш застосунок або worker. Harness запитує дію, обробник її виконує, результат повертається в сесію. Підключення sandbox саме собою не перетворює довільну backend-функцію на керований сервіс. [21]

6.5. Субагенти допомагають розпаралелювати роботу, але не замінюють архітектуру

Провідний агент може доручати незалежні частини завдання субагентам. Кожен має власний контекст, а провідний координує результати. Це корисно для досліджень, аналізу різних документів та інших робіт, які можна розділити. Але в Agents API агенти однієї сесії використовують спільне файлове середовище. Різні контексти не створюють ізоляції доступу до файлів. [22]

Звідси звичайні інженерні запитання: хто є власником підсумкового файлу? Де лежать проміжні результати? Що станеться, якщо два виконавці одночасно виправлять один документ?

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

6.6. Спостережуваність потрібна раніше за красиве демо

В Agents API доступні історія подій, відомості про виклики інструментів, витрати токенів і роботу субагентів; траси можна переглядати в інтерфейсі платформи. Але на дату перевірки публічна бета-версія не надає API для отримання трас і зовнішніх експортерів трасування. Це реальне обмеження для інтеграції з власною системою спостережуваності. [23]

Інженерний висновок простий: до міграції потрібно перевірити не лише якість фінального тексту. Чи зможете ви пояснити клієнту, чому завдання зупинилося? Відновити вихідні документи й налаштування? Порахувати вартість невдалих спроб? Установити, яка дія потребувала підтвердження?

За заявою OpenAI, окремої надбавки за сам Agents API немає: оплачуються використані ресурси — токени, інструменти та відповідні обчислювальні середовища. Однак відсутність окремої плати за інтерфейс не означає дешевого процесу: тривалі сесії та паралельні виконавці також витрачають бюджет. [15] [16]

6.7. Головна новизна — не «ще одна розумна функція»

Найважливіший зсув я бачу в іншому: поліпшення моделей тепер можуть постачатися разом із поліпшеннями їхнього виконавчого механізму. OpenAI прямо описує розвиток harness разом із моделями як частину пропозиції Agents API. [15]

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

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

7. Одне завдання — чотири архітектури

Візьмімо умовний навчальний проєкт. Потрібно прочитати документи й таблиці, знайти суперечності, перевірити суми та підготувати звіт із джерелами. Це запропонований сценарій, а не заява про проведене тут випробування API.

ПідхідЩо організовує застосунокЩо делегується
Chat CompletionsІсторію, цикл викликів, запуск функцій, зупинку, складання результатуІнтерпретація завдання та вибір наступної дії в межах створеної виконавчої оболонки
Responses APIВласний процес і зовнішні обробники; обирає вбудовані можливостіВідповіді моделі, підключені інструменти та доступні керовані операції
Agents SDKРозгортання, інтеграції, зберігання та правила продуктуГотовий бібліотечний цикл агента, делегування й супутні механізми
Agents APIКонтекст завдання, доступи, власні функції, приймання та інтеграцію результатуКерований harness Codex, сесія та узгоджені з конфігурацією механізми виконання

Таблиця показує саме еволюцію межі відповідальності. Responses, SDK та Agents API можуть співіснувати в одному технологічному стеку, але кожен наступний рівень дозволяє передати платформі більший фрагмент механізму виконання завдання. [24]

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

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

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

При цьому остання фраза не є технічним захистом. Заборона надсилання має забезпечуватися відсутністю відповідних прав або обов’язковим підтвердженням дії. Промпт пояснює правила; система дозволів забезпечує дотримання меж.

8. Три приклади, які розширюють історію ресторанного меню

База знань, яку агент підтримує як редактор

У патерні LLM Wiki Карпаті пропонує перетворювати вихідні матеріали на постійно оновлювану базу знань у Markdown. Агент не просто відповідає на запитання за знайденими фрагментами, а створює сторінки сутностей, зв’язки, огляди й нотатки про суперечності. У схемі розділено оригінали, створювану wiki та інструкції щодо її структури. [25]

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

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

Дослідницький цикл замість єдиної команди «оптимізуй»

В autoresearch Карпаті агент отримує обмежене експериментальне середовище: змінює код навчання, проводить короткий експеримент, оцінює результат за заданою метрикою та зберігає або відхиляє зміну. Людина задає напрям через program.md; вимірювання результату та дозволену область змін відокремлено одне від одного. [26]

Показове перенесення ідеї — опублікований Тобіасом Лютке PR для Shopify Liquid. За описом автора, після приблизно 120 експериментів сумарний час parse/render у конкретному бенчмарку зменшився із 7 469 до 3 534 мікросекунд — приблизно на 53%; успішно проходили 974 модульні тести. Це дані автора PR для зазначеного вимірювання, а не незалежна гарантія прискорення будь-якого застосунку на Liquid. [27]

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

Перевірка документів із зупинкою перед рішенням

В офіційному демонстраційному проєкті OpenAI Document Review використовуються спеціалізовані перевірки рахунків і договорів, файлове середовище та інструкції. Результати збираються в структуровані матеріали, а рішення, що потребують схвалення, залишаються за людиною. Це приклад застосунку, а не доказ безпомилкової юридичної чи фінансової експертизи. [28]

Тут Software 3.0 корисний не тому, що «людина більше не потрібна». Модель бере на себе варіативну роботу зі змістом, а система зберігає явну межу між аналізом і дією.

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

9. Чого тепер має вчитися інженер

Починати не з конвеєра, а з результату

Звичне перше запитання: «Які модулі та функції знадобляться?» Тепер корисно спочатку запитати: «Який результат потрібен людині та які його властивості потрібно підтвердити?»

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

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

Учитися задавати контекст і проєктувати інструменти

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

Інструмент також повинен мати зрозумілий контракт. Що він повертає? Які помилки можливі? Чи змінює дані? Чи можна безпечно повторити запит? Хто перевіряє права? Ці запитання залишаються навіть тоді, коли виклик обирає модель.

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

Робити перевірку частиною розробки

OpenAI рекомендує будувати оцінювання навколо конкретної мети, репрезентативного набору прикладів і вимірюваних критеріїв, повторювати його після змін та звіряти автоматичні оцінки з людськими. Суб’єктивне «начебто працює» прямо названо поганою практикою. [29]

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

Корисна власна метрика — вартість одного прийнятого результату: усі витрати на запуск, повторні спроби та виправлення, поділені на кількість результатів, що пройшли приймання. Дешевий виклик, після якого все доводиться переробляти, може виявитися дорогим рішенням.

І не варто плутати проходження перевірки JSON-схеми з істинністю змісту. Синтаксично коректна сума може бути неправильною, а гарно оформлене посилання — вести не до того доказу.

Вивчати безпеку як побудову системи

Документація Agents API попереджає: виконуваний код може отримати доступ до наявних у середовищі файлів, облікових даних і мережі. Необхідно обмежувати повноваження, ізолювати робочі навантаження та контролювати мережевий доступ. [30]

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

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

Розвиватися разом із платформами, але не ставати заручником анонсів

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

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

Переносність не обов’язково починається з універсального фреймворку на тисячу рядків. Часто достатньо відокремити бізнес-правила від адаптера постачальника, зберігати вихідні дані у власних форматах і не змішувати ідентифікатори сесій платформи з ідентичністю користувачів продукту.

Зберігати стару архітектуру лише тому, що ми її вже знаємо, — погана інженерія. Переписувати її лише тому, що з’явився новий API, — теж.

10. Практика, яка справді навчає Software 3.0

Замість завдання «зробіть чатбота з AI» я запропонував би студентам дослідження того самого завдання на різних рівнях виконання.

Нехай це буде звіт за набором документів. Підготуйте, наприклад, 20–30 навчальних кейсів: звичайні матеріали, пропущені значення, суперечливі версії, неправильні суми й документи з провокаційними інструкціями. Кількість кейсів — стартовий навчальний масштаб, а не універсальна норма якості.

Спочатку реалізуйте мінімальну версію через Responses із явно видимим циклом керування. Потім — через Agents SDK. Після цього — через Agents API, якщо він доступний у навчальному середовищі. Невелику версію на Chat Completions можна залишити історичною точкою порівняння.

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

Здавати слід три пов’язані артефакти: робочий прототип, таблицю порівняльних результатів і розбір невдач. У розборі пояснити, що зникло з власного коду, що залишилося, де стало складніше спостерігати за процесом і який рівень виявився виправданим.

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

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

Замість висновку

Історія MenuGen цінна не обіцянкою, що завтра зникнуть усі застосунки. Вона показує небезпеку професійної інерції: можна дуже вправно побудувати систему навколо обмеження, якого вже немає.

Software 3.0 не звільняє від розуміння алгоритмів, даних, мереж і безпеки. Навпаки, без цього розуміння складно відрізнити розумне делегування від втрати контролю.

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

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

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

Джерела та подальше читання

Усі посилання клікабельні. Для опису можливостей OpenAI використано офіційні анонси й документацію; зовнішні приклади перевірено за публікаціями авторів і репозиторіями. Характеристики публічної бета-версії наведено станом на 12 вересня 2026 року. Приклади навчальної архітектури та рекомендації щодо завдання — авторський синтез, а не результати власного порівняльного тестування API.

Карпаті та вихідна ідея

1. Andrej Karpathy — Vibe coding MenuGen, 27.04.2025. Початкова історія створення застосунку.

2. Andrej Karpathy — Sequoia Ascent 2026 summary, 30.04.2026. Опублікований автором конспект, підготовлений AI, та відредагована розшифровка; формулювання статті не видаються за дослівні цитати виступу. Відео розмови.

Історія API та Responses

3. OpenAI API, 11.06.2020. Анонс першої бета-версії.

4. Introducing ChatGPT and Whisper APIs, 01.03.2023. Датоване оголошення співробітника OpenAI. Офіційна стаття про запуск.

5. Function calling and other API updates, 13.06.2023. Функції як дії, які запитує модель.

6. New tools for building agents, 11.03.2025. Спільний анонс Responses API та Agents SDK.

7. New tools and features in the Responses API, 21.05.2025. MCP, зображення, Code Interpreter і фонова робота.

8. Migrate to the Responses API. Відмінності інтерфейсів, підтримка Chat Completions і статус Assistants.

9. Using tools. Інструменти та зовнішні інтеграції.

10. Conversation state. Історія, пов’язування відповідей і Conversations.

11. Compaction. Керування довгим контекстом у Responses.

12. Multi-agent orchestration in Responses. Субагенти та обмеження підтримуваних моделей.

Agents SDK і новий Agents API

13. OpenAI Agents SDK — документація Python. Runner, інструменти, handoffs, перевірки та сесії.

14. Agents SDK overview. Варіанти SDK та рівень контролю застосунку.

15. Introducing the Agents API, 10.09.2026. Офіційний анонс публічної бета-версії.

16. Agents API overview. Агенти, сесії, події та оточення.

17. Agents API architecture. Межа між harness, середовищем і сервером застосунку.

18. OpenAI-hosted sandboxes. Можливості та життєвий цикл робочого середовища.

19. Files and artifacts. Публікація й отримання результатів роботи.

20. Programmatic tool calling. Координація інструментів через JavaScript і відмінності API.

21. Function tools. Виконання власних функцій застосунком.

22. Multi-agent sessions. Делегування, окремі контексти та спільний робочий простір.

23. Observability and usage. Події, витрати ресурсів і обмеження трасування бета-версії.

24. Agents — порівняння варіантів виконання. Responses, SDK та API як різні архітектурні варіанти.

Приклади та інженерна перевірка

25. Karpathy — LLM Wiki. База знань, яку підтримує агент.

26. Karpathy — autoresearch. Експериментальне середовище та вимірюваний цикл поліпшень.

27. Shopify Liquid, PR #2056. Первинний звіт автора про оптимізацію parse/render.

28. OpenAI — Document Review demo. Приклад перевірки документів за участю людини.

29. Evaluation best practices. Побудова й повторення оцінювання.

30. Sandbox security. Повноваження, ізоляція та робота із секретами.

LIM

Обмеження та сфера застосування

Стаття відображає можливості публічних бета-версій станом на 12 вересня 2026 року; навчальні приклади є авторським синтезом, а не результатами порівняльного тестування API.

LOG

Історія змін

  1. Перша розширена версія у власному архіві.
  2. Перевірка структури, обмежень і доказових зв’язків.