Преминаване към основното съдържание
OpenAI

Въведение

Codex се използва ежедневно от множество технически екипи в OpenAI, като еипите по Сигурност, Продуктово инженерство, Фронтенд, API, Инфраструктура и Инженерство на производителността. Екипите го използват, за да ускоряват различни инженерни задачи – от разбирането на сложни системи и рефакторирането на големи кодови бази до внедряването на нови функции и разрешаването на инциденти в кратки срокове.

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


Практическо приложение 1: Разбиране на кода

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

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

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

Любопитни истории от нашите екипи

„Когато поправям грешка, използвам Ask mode, за да видя къде другаде в кодовата база може да се появява същият проблем.“
Инженер по производителност на системи за извличане
Опитайте да използвате Codex за разбиране на код с тези примерни подкани:
  • Къде в това хранилище е реализирана логиката за удостоверяване?

  • Обобщи как заявките преминават през тази услуга от входната точка до отговора.

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

Практическо приложение 2: рефакториране и миграции

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

Това е особено полезно, когато една и съща актуализация трябва да бъде направена в десетки файлове или когато актуализацията изисква съобразяване със структурата и зависимостите, които не могат лесно да бъдат уловени с regex или чрез търсене и замяна.

Те също така го използват за почистване на кода, като разделят прекалено големи модули, заменят стари модели с модерни и подготвят кода за по-добра податливост на тестване.

Любопитни истории от нашите екипи

„Codex замени всички остарели getUserById() с нашия нов шаблон за услуги и отвори заявката за изтегляне. Свърши за минути това, което би отнело часове.“
Инженер по бекенд, ChatGPT уеб
Изпробвайте Codex за рефакториране и миграции с тези примерни подкани:
  • Раздели този файл на отделни модули според предназначението им и генерирай тестове за всеки от тях.

  • Преобразувай целия достъп до база данни, основан на обратни извиквания, към асинхронно изчакване.

Практическо приложение 3: оптимизация на производителността

Codex се използва за идентифициране и отстраняване на проблеми с производителността.

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

Кодекс се използва и за поддържане на състоянието на кода чрез идентифициране на рискови или остарели шаблони, които все още са в употреба Екипите ни разчитат на него, за да намалят дългосрочния технически дълг и проактивно да предотвратяват регресии.

Любопитни истории от нашите екипи

„Използвам Codex, за да сканирам за повтарящи се скъпи заявки към базата данни. Справя се чудесно с откриването на критичните участъци и с изготвянето на пакетни заявки, които по-късно мога да оптимизирам.“
Инженер по инфраструктура и надеждност на API
Опитайте да използвате Codex за оптимизиране на производителността с тези примерни подкани:
  • Оптимизирай този цикъл за ефективност на паметта и обясни защо твоята версия е по-бърза.

  • Открий повтарящи се скъпи операции в този обработчик на заявки и предложи възможности за кеширане.

  • Предложи по-бърз начин за пакетна обработка на заявки към базата данни в тази функция.

Практическо приложение 4: Подобряване на тестовото покритие

Codex помага на инженерите да пишат тестове по-бързо – особено там, където обхватът е недостатъчен или напълно липсва.

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

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

Любопитни истории от нашите екипи

„Насочвам Codex към модули с нисък тестови обхват през нощта и се събуждам със заявки за изтегляне за изпълними модулни тестове.“
Фронтенд инженер, ChatGPT за десктоп
Опитайте да използвате Codex за оптимизиране на производителността с тези примерни подкани:
  • Напиши модулни тестове за тази функция, включително гранични случаи и сценарии на отказ.

  • Генерирай тест, базиран на свойства, за тази помощна програма за сортиране.

  • Разшири този тестов файл, за да обхване липсващите сценарии, свързани с нулеви входни данни и невалидни състояния.

Практическо приложение 5: Увеличаване на скоростта на разработка

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

Когато започват работа по нова функционалност, инженерите го използват, за да създават шаблонен код, генерирайки папки, модули и API шаблони, така че бързо да получат изпълним код без ръчно свързване на всеки елемент.

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

Използва се също за превръщане на обратната връзка за продукта в начален код. Инженерите често поставят потребителска заявка или спецификация и карат Codex да генерира груба чернова, към която могат да се върнат и да дооформят по-късно.

„Имах срещи цял ден и въпреки това обединих четири заявки за изтегляне, защото Codex работеше във фонов режим.“
Продуктов инженер, ChatGPT Enterprise
Пробвайте Codex, за да увеличите скоростта на разработка с примерни подкани:
  • Създай шаблон за нов API маршрут за POST /events с базова валидация и регистриране.

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

  • Създай чернова на имплементация въз основа на тази спецификация: [вмъкнете спецификация или обратна връзка за продукта].

Практическо приложение 6: Запазване на плавността

Codex помага на нашите инженери да останат продуктивни, когато графиците им са накъсани и изпълнени с прекъсвания.
Използва се за улавяне на недовършена работа, превръщане на бележки във функциониращи прототипи или за стартиране на експериментални задачи, които могат да бъдат прегледани по-късно Това улеснява временното спиране и възобновяването на работата без загуба на контекст, особено когато инженерите ни са дежурни или имат много срещи.

„Ако забележа бърза поправка, стартирам задача в Codex, вместо да сменям клонове, и преглеждам заявки за изтегляне, когато имам време.“
Бекенд инженер, API на ChatGPT
Опитайте да използвате Codex, за да запазите концентрацията си с тези примерни подкани:

Практическо приложение 7: проучване и генериране на идеи

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

Използва се също и за идентифициране на свързани грешки. При наличие на известен проблем или остарял метод Codex може да идентифицира подобни шаблони на други места в кода, което улеснява откриването на регресии или довършването на почистването.

„Codex помага да реша проблема със „студения старт“ – вмъквам спецификация и документация и той генерира скелет на кода или ми показва какво пропускам.“
Продуктов инженер, ChatGPT за настолен компютър
Опитайте да използвате Codex за проучване и създаване на идеи с тези примерни подкани:
  • Как би работила системата, ако беше управлявана от събития вместо по модела заявка/отговор?

  • Намери всички модули, които ръчно изграждат SQL низове, вместо да използват нашия конструктор на заявки.

  • Пренапиши това в по-функционален стил, като избягваш мутации и странични ефекти.


Най-добри практики

Codex работи най-добре, когато му се предоставят структура, контекст и възможност за повторение. Ето някои от навиците, които екипите на OpenAI изграждат, за да извличат постоянна стойност от него в ежедневната си работа.

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

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

Итеративно подобрявайте средата за разработка на Codex.

Задаването на скрипт за стартиране, променливи на средата и достъп до интернет значително намалява процента на грешките на Codex. Докато изпълнявате задачи, търсете грешки при компилация, които могат да бъдат коригирани в конфигурацията на средата на Codex. Това може да изисква няколко повторения, но води до значително повишаване на ефективността в дългосрочен план.

Структурирайте подканата си така, сякаш пишете проблем в GitHub.

Codex отговаря по-добре, когато подканите отразяват начина, по който бихте описали промяна в заявка за изтегляне или в проблем. Това означава да се включат пътища до файлове, имена на компоненти, дифове и фрагменти от документацията, когато е приложимо. Подканването с шаблони като „Реализирай това по същия начин, по който е направено в [модул X]“ подобрява резултатите.

Използвайте опашката със задачи на Codex като лек списък за проследяване.

Стартирайте задачи, за да уловите странични идеи, частично свършена работа или случайни корекции. Няма натиск да генерирате цяла заявка за изтегляне отведнъж. Codex работи добре като междинна зона, към която можете да се върнете, когато отново сте фокусирани.

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

Поддържайте файл AGENTS.md, за да помогнете на Codex да работи по-ефективно във Вашето хранилище в различните подкани. Тези файлове обикновено включват конвенции за именуване, бизнес логика, известни особености или зависимости, които Codex не може да изведе само от кода. Научете повече за структурирането на Вашия файл AGENTS.md в документацията.

Използвайте „Best of N“, за да подобрите резултатите

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


Поглед напред

Codex все още е в етап на изследователски преглед, но вече оказва значително въздействие върху начина, по който разработваме, като ни помага да работим по-бързо, да пишем по-качествен код и да се заемаме със задачи, които иначе никога не биха били приоритизирани.

Развълнувани сме от потенциала, който ни очаква – с подобряването на нашите модели и по-дълбоката интеграция на Codex в нашите работни процеси, очакваме с нетърпение да отключим още по-мощни начини за разработване на софтуер. Ще продължим да споделяме наученото по пътя.

Искате ли да внедрите изкуствен интелект във Вашия бизнес?

Научете как помагаме на компаниите да изграждат мащабируеми и отговорни стратегии за изкуствен интелект.