Як OpenAI використовує Codex
Codex щодня використовується у численних технічних командах OpenAI, таких як безпека, розробка продуктів, фронтенд, API, інфраструктура та інженерія продуктивності. Команди використовують Codex для прискорення виконання різноманітних інженерних завдань: розуміння складних систем, рефакторингу великих кодових баз, випуску нових функцій та усунення інцидентів у стислі терміни.
Спираючись на інтерв’ю з інженерами OpenAI та внутрішні дані про використання, ми зібрали сценарії використання та найкращі практики, які демонструють, як Codex допомагає нашим командам працювати швидше, підвищувати якість роботи та керувати складністю в масштабі.
Codex допомагає нашим командам швидко освоювати незнайомі частини кодової бази під час адаптації, налагодження або розслідування інцидентів.
Вони часто використовують Codex, щоб знайти основну логіку функції, визначити взаємозв’язки між сервісами чи модулями та простежити потік даних у системі. Він також допомагає виявляти патерни архітектури або відсутні частини документації, які інакше довелося б створювати зі значними ручними зусиллями.
Під час реагування на інциденти Codex допомагає фахівцям швидко входити в курс нових сфер, виявляючи взаємодії між компонентами або простежуючи, як стани відмов поширюються між системами.
Історії від наших команд
«Коли я виправляю помилку, я використовую режим запитань, щоб побачити, де ще в кодовій базі може виникати та сама проблема.»
Де в цьому репозиторії реалізована логіка автентифікації?
Резюмуй, як запити проходять через цей сервіс від точки входу до відповіді.
Які модулі взаємодіють з [вставте назву модуля] і як обробляються збої?
Codex зазвичай використовують для внесення змін, які охоплюють кілька файлів або пакетів. Наприклад, коли розробники оновлюють API, змінюють спосіб реалізації шаблону або переходять на нову залежність, Codex дозволяє легко та послідовно вносити зміни.
Це особливо корисно, коли потрібно внести однакове оновлення в десятки файлів або коли оновлення вимагає врахування структури та залежностей, які важко виявити за допомогою регулярних виразів чи функції пошуку й заміни.
Команди також використовують його для очищення коду: поділу великих модулів, заміни застарілих шаблонів сучасними або підготовки коду до кращого тестування.
Історії від наших команд
«Codex замінив кожен застарілий getUserById() на наш новий шаблон сервісу та відкрив pull request (PR). За лічені хвилини він зробив те, що в нас зайняло б години.»
Розділи цей файл на окремі модулі за призначенням і створіть тести для кожного з них.
Переведи весь доступ до бази даних, що використовує callback, на async/await.
Codex використовується для виявлення та усунення вузьких місць у продуктивності.
Під час налаштування або підвищення надійності інженери звертаються до Codex із запитом на аналіз повільних або ресурсомістких шляхів виконання коду, таких як неефективні цикли, надлишкові операції чи витратні запити, і пропонування оптимізованих альтернатив, що часто призводить до значного підвищення ефективності та надійності.
Codex також використовується для підтримки здоров’я коду шляхом виявлення ризикованих або застарілих шаблонів, які все ще активно використовуються. Наші команди покладаються на нього, щоб допомогти зменшити довгостроковий технічний борг і активно запобігати регресіям.
Історії від наших команд
«Я використовую Codex, щоб виявляти повторювані затратні виклики до бази даних. Він чудово справляється з тим, щоб виявляти неефективні маршрути та створювати чернетки пакетних запитів, які я згодом можу налаштувати.»
Оптимізуй цей цикл для ефективнішого використання пам’яті та поясни, чому твій варіант працює швидше.
Знайди повторювані ресурсомісткі операції в цьому обробнику запитів і запропонуй можливості для кешування.
Запропонуй швидший спосіб виконання пакетних запитів до БД у цій функції.
Codex допомагає інженерам швидше писати тести — особливо там, де покриття обмежене або повністю відсутнє.
Працюючи над виправленням помилки або рефакторингом, інженери часто просять Codex запропонувати тести, що охоплюють крайні випадки або ймовірні сценарії збоїв. Для нового коду він може генерувати модульні або інтеграційні тести на основі сигнатури функції та навколишньої логіки.
Codex особливо корисний для виявлення граничних умов, як-от порожнє введення, максимальна кількість символів або незвичні, але допустимі стани, які часто не враховують під час початкових тестів.
Історії від наших команд
«Я спрямовую Codex на модулі з низьким тестовим покриттям на ніч і вранці отримую готові до запуску PR із модульними тестами.»
Напиши модульні тести для цієї функції, включно з крайніми випадками та сценаріями відмов.
(IconBullet:ArrowRight)Згенеруй тест на основі властивостей для цього інструмента сортування.
Розшир цей тестовий файл, щоб охопити пропущені сценарії, пов’язані з null-значеннями у вхідних даних і некоректними станами.
Codex допомагає командам працювати швидше, прискорюючи як початок, так і завершення циклу розробки.
Розпочинаючи роботу над новою функцією, інженери використовують це для створення шаблонного коду й базової структури — генерування папок, модулів і заготовок API, щоб швидко отримати працездатний код без потреби вручну з’єднувати кожну частину.
Коли проєкти наближаються до релізу, Codex допомагає вкластися в стислі терміни, виконуючи менші, але важливі завдання, як-от класифікація багів, усунення останніх прогалин у реалізації та створення скриптів для розгортання, хуків телеметрії або конфігураційних файлів.
Також це використовується для перетворення відгуків про продукт на початковий код. Інженери часто вставляють запит користувача або специфікацію й доручають Codex створити чернетку, до якої можна повернутися й доопрацювати пізніше.
«Я цілий день був на зустрічах і все одно об’єднав 4 пул-реквести (PR), бо Codex працював у фоновому режимі.»
Створи новий маршрут API для POST /events із базовою перевіркою та веденням журналу.
Створи хук телеметрії для відстеження успіху чи невдачі нового процесу адаптації, використовуючи цей шаблон (вставте приклад вашого коду телеметрії).
Створи заготовку реалізації на основі цієї специфікації: [вставте специфікацію або відгук про продукт].
Codex допомагає нашим інженерам залишатися продуктивними, коли їхній робочий графік уривчастий і фрагментований.
Його використовують, щоб зафіксувати незавершену роботу, перетворити нотатки на робочі прототипи або створити окремі дослідницькі завдання, до яких можна буде повернутися пізніше. Це полегшує призупинення й відновлення роботи без втрати контексту, особливо коли вони перебувають на чергуванні або мають багато зустрічей.
«Якщо я помічаю швидке виправлення, то запускаю завдання в Codex замість того, щоб перемикатися між гілками, а його PR переглядаю, коли маю час.»
Codex також корисний для відкритих завдань, таких як пошук альтернативних рішень або перевірка дизайнерських рішень. Ви можете подати запит на різні способи розв’язання проблеми, дослідити незнайомі закономірності або ретельно перевірити припущення. Це допомагає виявляти компроміси, розширювати варіанти дизайну та уточнювати вибір реалізації.
Його також використовують для виявлення пов’язаних помилок. З огляду на відому проблему або застарілий метод, Codex може виявити подібні шаблони в інших частинах коду, полегшуючи виявлення регресій або завершення робіт з очищення.
«Codex допомагає мені розв’язати проблему холодного старту: я вставляю специфікацію та документацію, а він генерує код або нагадує про те, що я пропустив.»
Як би це працювало, якби система була керованою подіями замість моделі запит/відповідь?
Знайди всі модулі, які вручну створюють SQL-рядки замість використання нашого конструктора запитів.
Перепиши це у більш функціональному стилі, уникаючи мутацій і побічних ефектів.
Codex працює найкраще, коли йому надають структуру, контекст і можливість для ітерацій. Ось деякі звички, які команди OpenAI розвивають, щоб стабільно отримувати користь у повсякденній роботі.
Для великих змін почніть із того, що попросіть Codex скласти план реалізації в режимі запитань, який потім стане вхідними даними для наступних запитів, коли ви переключитеся в режим написання коду. Цей двоетапний процес допомагає Codex залишатися точним і уникати помилок у результатах. Codex найкраще працює з чітко визначеними завданнями, які можна виконати за годину або реалізувати за кілька сотень рядків коду. У міру вдосконалення моделей очікуйте збільшення масштабу завдань, які вони можуть виконувати.
Налаштування скрипту запуску, змінних середовища та доступу до інтернету значно знижує частоту помилок Codex. Під час виконання завдань звертайте увагу на помилки збірки, які можна виправити в конфігурації середовища Codex. Для цього може знадобитися кілька ітерацій, але в довгостроковій перспективі це дасть значний приріст ефективності.
Codex краще реагує, коли запит відтворює те, як ви б описали зміну в PR або issue. Це означає, що слід включати, зокрема, шляхи до файлів, назви компонентів, дифи та фрагменти документації, коли це доречно. Формулювання промптів із шаблонами на кшталт «Реалізуй це так само, як у [module X]» покращує результати.
Запускайте завдання для фіксації дотичних ідей, часткової роботи або випадкових виправлень. Не обов’язково створювати повноцінний PR за один раз. Codex добре підходить як проміжний простір, до якого можна повернутися, коли знову зможете зосередитися.
Підтримуйте актуальність файлу AGENTS.md, щоб Codex працював ефективніше у вашому репозиторії для різних запитів. Ці файли зазвичай містять правила іменування, бізнес-логіку, відомі особливості або залежності, які Codex не може визначити лише з коду. Дізнайтеся більше про структурування файлу AGENTS.md у документації.
Функція Best-of-N дає змогу одночасно створити кілька відповідей для одного завдання, щоб швидко розглянути різні варіанти розв’язання та вибрати найкращий. Для складніших завдань ви можете переглянути кілька ітерацій і об’єднати частини різних відповідей, щоб отримати більш якісний результат.
Codex усе ще перебуває на етапі попереднього ознайомлення, але вже реально впливає на те, як ми створюємо продукти, допомагаючи нам рухатися швидше, писати якісніший код і братися за завдання, які інакше ніколи не стали б пріоритетними.
Ми з захопленням дивимося на потенціал, що чекає попереду, — у міру того, як наші моделі стають кращими, а Codex дедалі глибше інтегрується в наші робочі процеси, ми з нетерпінням чекаємо на можливість відкривати ще потужніші способи розробки програмного забезпечення з його допомогою. Ми й надалі ділитимемося тим, що дізнаємося на цьому шляху.


