Переход к основному контенту
OpenAI

Введение

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

На основе интервью с инженерами OpenAI и внутренних данных об использовании мы собрали сценарии использования и лучшие практики, которые показывают, как Codex помогает нашим командам работать быстрее, повышать качество работы и управлять сложностью в масштабе.


Сценарий использования 1: понимание кода

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

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

При реагировании на инциденты Codex помогает инженерам быстро осваивать новые области, выявляя взаимодействия между компонентами и отслеживая, как состояния отказа распространяются по системам.

Истории от наших команд

«Когда я исправляю ошибку, я использую режим Ask, чтобы увидеть, где ещё в кодовой базе может возникать та же проблема»
Инженер по производительности, системы поиска
Попробуйте использовать Codex для понимания кода с этими примерами подсказок:
  • Где в этом репозитории реализована логика аутентификации?

  • Кратко опиши, как запросы проходят через этот сервис от точки входа до ответа.

  • Какие модули взаимодействуют с [укажите название модуля] и как обрабатываются отказы?

Сценарий использования 2: рефакторинг и миграции

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

Это особенно полезно, когда одно и то же изменение нужно внести в десятки файлов или когда изменение требует понимания структуры и зависимостей, которые нелегко выявить с помощью regex или поиска и замены.

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

Истории от наших команд

«Codex заменил все устаревшие getUserById() на наш новый сервисный шаблон и открыл PR. За считанные минуты он сделал то, на что у нас ушли бы часы.»
Бэкенд-инженер, веб-версия ChatGPT
Попробуйте использовать Codex для рефакторинга и миграций с этими образцами запросов:
  • Раздели этот файл на отдельные модули по зонам ответственности и создай тесты для каждого из них.

  • Переведи весь доступ к базе данных, основанный на callback-функциях, на async/await.

Сценарий использования 3: оптимизация производительности

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

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

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

Истории от наших команд

«Я использую Codex, чтобы искать повторяющиеся ресурсоёмкие вызовы к БД. Он отлично справляется с тем, чтобы выявлять узкие места и составлять пакетные запросы, которые я потом могу настроить.»
Инженер по инфраструктуре (надёжность API)
Попробуйте использовать Codex для оптимизации производительности. Вот несколько примеров промптов:
  • Оптимизируй этот цикл для более эффективного использования памяти и объясни, почему твой вариант работает быстрее.

  • Найди повторяющиеся ресурсоёмкие операции в этом обработчике запросов и предложи возможности для кэширования.

  • Предложи более быстрый способ выполнять пакетные запросы к БД в этой функции.

Сценарий использования 4: улучшение тестового покрытия

Codex помогает инженерам быстрее писать тесты — особенно там, где покрытие ограничено или полностью отсутствует.

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

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

Истории от наших команд

«Я на ночь нацеливаю Codex на модули с низким покрытием тестами, а утром получаю готовые к запуску pull-реквесты с модульными тестами».
Фронтенд-инженер, ChatGPT Desktop
Попробуйте использовать Codex для оптимизации производительности. Вот несколько примеров промптов:
  • Напиши модульные тесты для этой функции, включая крайние случаи и сценарии отказа.

  • Сгенерируй тест на основе свойств для этой утилиты сортировки.

  • Дополни этот тестовый файл, чтобы охватить недостающие сценарии, связанные со значениями null и некорректными состояниями.

Сценарий использования 5: ускорение разработки

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

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

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

Его также используют, чтобы превращать отзывы о продукте в стартовый код. Инженеры часто вставляют запрос пользователя или спецификацию, и Codex создаёт черновик, к которому можно вернуться позже и доработать.

«Я весь день был на встречах и всё равно объединил 4 PR, потому что Codex работал в фоновом режиме».
Инженер по продукту, ChatGPT Enterprise
Попробуйте использовать Codex, чтобы повысить скорость разработки с помощью этих примеров запросов:
  • Создай шаблон нового маршрута API для POST /events с базовой проверкой и логированием.

  • Создай хук телеметрии для отслеживания успешного или неуспешного завершения нового сценария адаптации, используя этот шаблон [вставьте пример вашего кода телеметрии].

  • Создай заглушку реализации на основе этой спецификации: [вставьте спецификацию или отзыв о продукте].

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

Codex помогает нашим инженерам сохранять продуктивность, даже когда их график раздроблен и полон отвлекающих факторов.
Он используется, чтобы фиксировать незавершённую работу, превращать заметки в рабочие прототипы или выделять исследовательские задачи, к которым можно вернуться позже. Это упрощает приостановку и возобновление работы без потери контекста, особенно когда они дежурят или у них много встреч.

«Если я замечаю быстрое исправление на ходу, то запускаю задачу в Codex вместо того, чтобы переключаться между ветками, а его PR проверяю, когда появляется время.»
Backend-разработчик, API ChatGPT
Попробуйте использовать Codex, чтобы оставаться в потоке с этими примерами запросов:

Сценарий использования 7: исследование и генерация идей

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

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

«Codex помогает мне решать проблему холодного старта — я вставляю спецификацию и документацию, а он создаёт каркас кода или показывает, что я упустил».
Инженер по продукту, ChatGPT Desktop
Попробуйте использовать Codex для изучения и генерации идей с помощью этих примеров промпт:
  • Как бы это работало, если бы система была событийно-ориентированной, а не построенной по модели «запрос/ответ»?

  • Найди все модули, которые вручную формируют SQL-строки, вместо того чтобы использовать наш конструктор запросов.

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


Рекомендации

Codex лучше всего работает, когда ему предоставляют структуру, контекст и пространство для итераций. Вот некоторые из привычек, которые команды OpenAI вырабатывают, чтобы стабильно извлекать из этого пользу в повседневной работе.

Начните с режима вопросов

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

Итеративное улучшение среды разработки Codex

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

Оформите ваш промпт так, как если бы вы писали задачу в GitHub

Codex лучше отвечает, когда запросы формулируются так, как вы бы описали изменение в PR или issue. Это означает, что следует включать пути к файлам, названия компонентов, различия и фрагменты документации, когда это уместно. Формулирование запросов по шаблонам вроде «Реализуй это так же, как это сделано в [module X]» улучшает результаты.

Используйте очередь задач Codex как легковесный бэклог

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

Используйте AGENTS.md, чтобы предоставить постоянный контекст

Поддерживайте файл AGENTS.md, чтобы помочь Codex работать более эффективно в вашем репозитории с различными запросами. Эти файлы обычно включают соглашения об именовании, бизнес-логику, известные особенности или зависимости, которые Codex не может определить только из кода. Узнайте больше о структуре вашего файла AGENTS.md в документации.

Используйте «Best of N» для улучшения результатов

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


Планы на будущее

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

Мы воодушевлены открывающимися возможностями — по мере того как наши модели становятся лучше, а Codex всё глубже интегрируется в наши рабочие процессы, мы с нетерпением ждём возможности открыть ещё более мощные способы разработки ПО с его помощью. Мы будем продолжать делиться тем, что узнаём в процессе.

Хотите внедрить ИИ в ваш бизнес?

Узнайте, как мы помогаем компаниям разрабатывать масштабируемые и ответственные стратегии в области ИИ.