Перейти до основного вмісту
OpenAI

Вступна частина

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

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


Сценарій використання 1: розуміння коду

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

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

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

Історії від наших команд

«Коли я виправляю помилку, я використовую режим запитань, щоб побачити, де ще в кодовій базі може виникати та сама проблема.»
Інженер з продуктивності, системи пошуку
Спробуйте використовувати Codex для розуміння коду за допомогою цих прикладів запитів:
  • Де в цьому репозиторії реалізована логіка автентифікації?

  • Резюмуй, як запити проходять через цей сервіс від точки входу до відповіді.

  • Які модулі взаємодіють з [вставте назву модуля] і як обробляються збої?

Сценарій використання 2: рефакторинг та міграції

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

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

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

Історії від наших команд

«Codex замінив кожен застарілий getUserById() на наш новий шаблон сервісу та відкрив pull request (PR). За лічені хвилини він зробив те, що в нас зайняло б години.»
Інженер з розробки бекенду, веб-версія ChatGPT
Спробуйте використовувати Codex для рефакторингу та міграцій за допомогою цих прикладів запитів:
  • Розділи цей файл на окремі модулі за призначенням і створіть тести для кожного з них.

  • Переведи весь доступ до бази даних, що використовує callback, на async/await.

Сценарій використання 3: оптимізація продуктивності

Codex використовується для виявлення та усунення вузьких місць у продуктивності.

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

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

Історії від наших команд

«Я використовую Codex, щоб виявляти повторювані затратні виклики до бази даних. Він чудово справляється з тим, щоб виявляти неефективні маршрути та створювати чернетки пакетних запитів, які я згодом можу налаштувати.»
Інженер з інфраструктури, забезпечення надійності API
Спробуйте використовувати Codex для оптимізації продуктивності за допомогою цих прикладів запитів:
  • Оптимізуй цей цикл для ефективнішого використання пам’яті та поясни, чому твій варіант працює швидше.

  • Знайди повторювані ресурсомісткі операції в цьому обробнику запитів і запропонуй можливості для кешування.

  • Запропонуй швидший спосіб виконання пакетних запитів до БД у цій функції.

Сценарій використання 4: покращення тестового покриття

Codex допомагає інженерам швидше писати тести — особливо там, де покриття обмежене або повністю відсутнє.

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

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

Історії від наших команд

«Я спрямовую Codex на модулі з низьким тестовим покриттям на ніч і вранці отримую готові до запуску PR із модульними тестами.»
Фронтенд-інженер, ChatGPT Desktop
Спробуйте використовувати Codex для оптимізації продуктивності за допомогою цих прикладів запитів:
  • Напиши модульні тести для цієї функції, включно з крайніми випадками та сценаріями відмов.

  • (IconBullet:ArrowRight)Згенеруй тест на основі властивостей для цього інструмента сортування.

  • Розшир цей тестовий файл, щоб охопити пропущені сценарії, пов’язані з null-значеннями у вхідних даних і некоректними станами.

Сценарій використання 5: підвищення швидкості розробки

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

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

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

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

«Я цілий день був на зустрічах і все одно об’єднав 4 пул-реквести (PR), бо Codex працював у фоновому режимі.»
Інженер із розробки продукту, ChatGPT Enterprise
Спробуйте використовувати Codex, щоб підвищити швидкість розробки за допомогою прикладів запитів:
  • Створи новий маршрут API для POST /events із базовою перевіркою та веденням журналу.

  • Створи хук телеметрії для відстеження успіху чи невдачі нового процесу адаптації, використовуючи цей шаблон (вставте приклад вашого коду телеметрії).

  • Створи заготовку реалізації на основі цієї специфікації: [вставте специфікацію або відгук про продукт].

Сценарій використання 6: залишатися в потоці

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

«Якщо я помічаю швидке виправлення, то запускаю завдання в Codex замість того, щоб перемикатися між гілками, а його PR переглядаю, коли маю час.»
Інженер з розробки бекенду, ChatGPT API
Спробуйте Codex, щоб працювати ефективніше з цими прикладами запитів:

Сценарій використання 7: дослідження та генерація ідей

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

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

«Codex допомагає мені розв’язати проблему холодного старту: я вставляю специфікацію та документацію, а він генерує код або нагадує про те, що я пропустив.»
Інженер продукту, ChatGPT Desktop
Спробуйте використовувати Codex для дослідження та створення ідей за допомогою цих прикладів запитів:
  • Як би це працювало, якби система була керованою подіями замість моделі запит/відповідь?

  • Знайди всі модулі, які вручну створюють SQL-рядки замість використання нашого конструктора запитів.

  • Перепиши це у більш функціональному стилі, уникаючи мутацій і побічних ефектів.


Рекомендації

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

Почніть із режиму запитань

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

Ітеративне вдосконалення середовища розробки Codex

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

Структуруйте свій запит так, наче пишете GitHub Issue

Codex краще реагує, коли запит відтворює те, як ви б описали зміну в PR або issue. Це означає, що слід включати, зокрема, шляхи до файлів, назви компонентів, дифи та фрагменти документації, коли це доречно. Формулювання промптів із шаблонами на кшталт «Реалізуй це так само, як у [module X]» покращує результати.

Використовуйте чергу Codex як зручний список завдань

Запускайте завдання для фіксації дотичних ідей, часткової роботи або випадкових виправлень. Не обов’язково створювати повноцінний PR за один раз. Codex добре підходить як проміжний простір, до якого можна повернутися, коли знову зможете зосередитися.

Використовуйте AGENTS.md, щоб надавати сталий контекст

Підтримуйте актуальність файлу AGENTS.md, щоб Codex працював ефективніше у вашому репозиторії для різних запитів. Ці файли зазвичай містять правила іменування, бізнес-логіку, відомі особливості або залежності, які Codex не може визначити лише з коду. Дізнайтеся більше про структурування файлу AGENTS.md у документації.

Використовуйте «Best of N», щоб покращити результати

Функція Best-of-N дає змогу одночасно створити кілька відповідей для одного завдання, щоб швидко розглянути різні варіанти розв’язання та вибрати найкращий. Для складніших завдань ви можете переглянути кілька ітерацій і об’єднати частини різних відповідей, щоб отримати більш якісний результат.


Наші перспективи

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

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

Хочете впровадити ШІ у ваш бізнес?

Дізнайтеся, як ми допомагаємо компаніям створювати масштабовані та відповідальні стратегії роботи з ШІ.