OpenAI відкриває завісу над Codex

Компанія OpenAI розкриває секрети роботи своїх агентів для програмування

OpenAI відкриває завісу над Codex

Компанія OpenAI здивувала своєю прозорою політикою, опублікувавши детальний технічний розбір того, як працює її агент кодування Codex CLI. У статті, автором якої став інженер OpenAI Майкл Болін, представлено одне з найчіткіших на сьогодні уявлень про те, як ШІ-агент промислового рівня координує роботу великих мовних моделей та інструментів, а також вхідні дані користувача для виконання реальних завдань із розробки програмного забезпечення.

В основі Codex лежить те, що OpenAI називає agent loop – повторюваний цикл, у якому по черзі відбуваються інференс моделі та дії ШІ інструментів. Кожен цикл починається з того, що Codex формує промпт зі структурованих вхідних даних: системних інструкцій, обмежень розробника, повідомлень користувача, контексту середовища та доступних інструментів – і надсилає цей запит до Responses API для обробки.

Вихідні дані моделі можуть мати одну з двох форм. Або система генерує повідомлення асистента для користувача, або формує запит на виклик інструмента, наприклад, виконання команди shell, читання файлу чи виклик утиліти планування або пошуку. Якщо запитано виклик інструмента, Codex виконує його локально (в межах визначеної “пісочниці” (sandbox)), додає результат до промпта й знову звертається до моделі. Цей цикл триває доти, доки модель не згенерує фінальне повідомлення асистента, яке сигналізує про завершення ходу розмови.

Хоча такий високорівневий підхід є поширеним для багатьох AI-агентів, документація OpenAI вирізняється своєю деталізацією. Болін докладно пояснює, як промпти збираються з окремих елементів, як ролі (система, розробник, користувач, асистент) визначають пріоритети, і як навіть дрібні рішення, наприклад, порядок інструментів у списку, можуть суттєво впливати на продуктивність.

Одним із найпомітніших архітектурних рішень є модель взаємодії stateless. Замість використання серверної пам’яті розмов через необов’язковий параметр previous_response_id, Codex надсилає всю історію діалогу з кожним запитом. Такий підхід спрощує інфраструктуру й дозволяє підтримувати режим Zero Data Retention (ZDR) для клієнтів, яким потрібні суворі гарантії конфіденційності.

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

Втім, це накладає жорсткі обмеження на систему. Зміна інструментів посеред розмови, перемикання моделей, модифікація дозволів пісочниці або навіть зміна порядку визначення інструментів можуть спричинити промахи кешу й різке падіння продуктивності. Болін зазначає, що рання підтримка інструментів Model Context Protocol (MCP) виявила саме таку вразливість, змусивши команду ретельно переглянути підхід до динамічних оновлень інструментів.

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

Для вирішення цієї проблеми Codex використовує автоматичне стиснення діалогу (compaction). Коли кількість токенів перевищує заданий поріг, Codex замінює повну історію діалогу стислим представленням, створеним за допомогою спеціалізованої кінцевої точки API – /responses/compact. Важливо, що цей стислий контекст містить зашифроване корисне навантаження, яке зберігає приховане розуміння моделі попередніх взаємодій. Це дозволяє їй продовжувати логічні міркування без доступу до повної необробленої історії.

Ранні версії Codex вимагали від користувачів запускати стиснення вручну; сьогодні цей процес автоматичний і майже непомітний – важливе покращення зручності використання, оскільки агенти беруть на себе все триваліші та складніші завдання.

Історично компанія OpenAI неохоче публікувала глибокі технічні деталі про флагманські продукти на кшталт ChatGPT. Проте Codex став винятком. У результаті маємо рідкісний і відвертий опис компромісів, пов’язаних зі створенням справжнього ШІ-агента: продуктивність проти приватності, гнучкість проти ефективності кешування, автономність проти безпеки. Болін не уникає згадок про баги, неефективні рішення чи пройдені важкою працею уроки, звертаючи увагу, що сучасні ШІ-агенти потужні, але далеко не казкові.

Поза межами самого Codex ця публікація слугує своєрідною інструкцією для всіх, хто будує агентів поверх сучасних API великих мовних моделей. Вона висвітлює нові найкращі практики (stateless design, prefix-stable prompts, explicit context management), які швидко стають галузевими стандартами.