Како OpenAI го користи Codex
Codex се користи секојдневно во бројни технички тимови во OpenAI, како што се тимовите за безбедност, инженеринг на производи, frontend, API, инфраструктура и инженеринг на перформанси. Тимовите го користат за да забрзаат низа инженерски задачи, од разбирање на сложени системи и рефакторирање на големи бази на кодови до испорака на нови функции и решавање на инциденти во кратки рокови.
Врз основа на интервјуа со инженери од OpenAI и интерни податоци за користење, составивме случаи на употреба и најдобри практики што истакнуваат како Codex им помага на нашите тимови да работат побрзо, да го подобрат квалитетот на работата и да управуваат со сложеноста во голем обем.
Codex им помага на нашите тимови брзо да се снајдат во непознати делови од базата на кодови при воведување, отстранување грешки или истражување инцидент.
Тие често го користат Codex за да ја пронајдат основната логика на некоја функција, да ги мапираат врските меѓу сервисите или модулите и да го следат текот на податоците низ системот. Исто така помага да се откријат архитектонски обрасци или делови од документацијата што недостигаат, за кои инаку би бил потребен значителен рачен напор за да се создадат.
За време на реагирање при инциденти, Codex им помага на инженерите брзо да навлезат во нови области така што ги истакнува интеракциите меѓу компонентите или следи како состојбите на откажување се шират низ системите.
Приказни од нашите тимови
„Кога поправам грешка, го користам режимот Прашај за да видам каде на друго место во кодната база може да се појави истиот проблем“
Каде е имплементирана логиката за автентикација во ова складиште?
Резимирај како барањата течат низ оваа услуга, од влезната точка до одговорот.
Кои модули интерагираат со [insert module name] и како се обработуваат неуспесите?
Codex најчесто се користи за правење промени кои опфаќаат повеќе датотеки или пакети. На пример, кога инженерите ажурираат API, го менуваат начинот на кој е имплементиран одреден шаблон или мигрираат кон нова зависност, Codex го олеснува доследното применување на промените.
Особено е корисно кога истото ажурирање треба да се направи во десетици датотеки, или кога ажурирањето бара разбирање на структурата и зависностите што не можат лесно да се опфатат со регуларни изрази или со пребарување и замена.
Го користат и за средување на кодот: разделување на предимензионирани модули, замена на старите обрасци со современи или подготовка на кодот за полесно тестирање.
Приказни од нашите тимови
„Codex ја замени секоја застарена `getUserById( )` со нашиот нов шаблон за услуга и го отвори PR. За неколку минути направи нешто што би одземало часови.
Подели ја оваа датотека на посебни модули според нивната функција и генерирај тестови за секој од нив.
Претвори го целиот пристап до базата на податоци базиран на callback во async/await.
Codex се користи за идентификација и решавање на тесните грла во перформансите.
За време на подесување или напори за подобрување на доверливоста, инженерите му даваат промпт на Codex да анализира бавни или мемориски интензивни патеки во кодот, како што се неефикасни циклуси, непотреби операции или скапи пребарувања, и да предложи оптимизирани алтернативи, што често резултира со значајни подобрувања во ефикасноста и доверливоста.
Codex исто така се користи за поддршка на здравје на кодот преку идентификување ризични или застарени шаблони што сè уште активно се користат. Нашите тимови се потпираат на него за да помогнат во намалувањето на долгорочниот технички долг и проактивно да спречат регресии.
Приказни од нашите тимови
„Го користам Codex за да откривам повторени скапи повици до базата на податоци. Одлично се снаоѓа во означување на критичните патеки и изготвување групирани барања што подоцна можам да ги прилагодам.“
Оптимизирај го овој циклус за мемориска ефикасност и објасни зошто твојата верзија е побрза.
Пронајди повторени скапи операции во овој обработувач на барања и предложи можности за кеширање.
Предложи побрз начин за сериско извршување на барања во базата на податоци во оваа функција.
Codex им помага на инженерите побрзо да пишуваат тестови - особено таму каде што покриеноста е слаба или целосно недостасува.
Кога работат на поправање грешка или рефакторирање, инженерите често бараат од Codex да предложи тестови што ги опфаќаат екстремните случаи или веројатните патеки на неуспех. За нов код, може да генерира единични или интеграциони тестови врз основа на потписот на функцијата и околната логика.
Codex е особено корисен за идентификување на гранични услови, како што се празни влезови, максимална должина или невообичаени, но валидни состојби, кои често се пропуштаат во почетните тестови.
Приказни од нашите тимови
„Го насочувам Codex кон модули со ниска покриеност преку ноќ и се будам со извршливи барања за повлекување со единични тестови.“
Напиши единични тестови за оваа функција, вклучувајќи гранични случаи и патеки на неуспех.
Генерирај тест базиран на својства за оваа алатка за сортирање.
Прошири ја оваа тест-датотека за да ги опфати сценаријата што недостасуваат околу null-влезови и невалидни состојби.
Codex им помага на тимовите да работат побрзо со забрзување на почетокот и крајот на развојниот циклус.
Кога започнуваат со нова функција, инженерите го користат за поставување шаблонски код – генерирање папки, модули и API-шаблони за брзо да добијат извршлив код без рачно да го поврзуваат секој дел.
Како што проектите се приближуваат до издание, Codex помага да се исполнат кратките рокови преземајќи помали, но суштински задачи како сортирање грешки, пополнување на последните празнини во имплементацијата и генерирање скрипти за воведување, телеметриски куки или конфигурациски датотеки.
Се користи и за да се претворат повратните информации за производот во почетен код. Инженерите често вметнуваат корисничко барање или спецификација и му дозволуваат на Codex да генерира груб нацрт на кој подоцна можат да му се навратат и да го доработат.
„Бев на состаноци цел ден и сепак споив четири барања за повлекување (PR) затоа што Codex работеше во позадина.“
Креирај нова API рута за POST /events со основна валидација и евиденција.
Генерирај hook за телеметрија за следење на успехот/неуспехот на новиот тек на воведување, користејќи го овој шаблон [внеси пример од вашиот код за телеметрија].
Креирај скелетна имплементација врз основа на оваа спецификација: [вметни спецификација или повратни информации за производот].
Codex им помага на нашите инженери да бидат продуктивни кога нивните распореди се фрагментирани и исполнети со прекини.
Се користи за зачувување на недовршена работа, претворање на белешки во функционални прототипови или издвојување на истражувачки задачи на кои може повторно да се навратите подоцна. Ова го олеснува паузирањето и продолжувањето на работата без губење на контекстот, особено кога се дежурни или имаат многу состаноци.
„Ако забележам брза корекција во движење, пуштам задача во Codex наместо да менувам гранки и го прегледувам барањеto за повлекување кога ќе имам време.“
Codex е исто така корисен за отворена работа, како што се пронаоѓање алтернативни решенија или потврдување на дизајнерски одлуки. Можете да побарате со промпт различни начини за решавање проблем, да истражувате непознати шеми или да ги тестирате претпоставките под притисок. Ова помага да ги истакне компромисите, да ги прошири можностите за дизајн и да ги изостри изборите за имплементација.
Исто така се користи за идентификување на поврзани грешки. Со оглед на познат проблем или застарен метод, Codex може да идентификува слични обрасци на други места во кодот, што го олеснува откривањето на регресии или довршувањето на работата за чистење.
„Codex ми помага да го решам проблемот со студен старт - вметнувам спецификација и документација, а тој генерира почетна структура на код или ми покажува што сум заборавил.“
Како би функционирало ова ако системот беше настански управуван, наместо во модел барање-одговор?
Пронајдi ги сите модули што рачно градат SQL-низи наместо да ја користат нашата алатка за градење барања.
Преработi го ова во пофункционален стил и избегнувај мутации и несакани ефекти.
Codex најдобро функционира кога има структура, контекст и простор за итерација. Еве некои од навиките што тимовите на OpenAI ги развиваат за да извлечат постојана вредност од тоа во секојдневната работа.
За големи промени, започнете со користење на промпт од Codex за план за имплементација во режимот Прашај, кој потоа служи како влез за следните промпти кога ќе преминете во режимот Code. Овој двочекорен тек го одржува Codex стабилен и помага да се избегнат грешки во неговите резултати. Codex најдобро функционира со добро дефинирани задачи што вам или на некој од вашите соработници ќе ви одземат околу еден час за завршување или неколку стотици линии код за имплементација. Како што моделите се подобруваат, очекувајте обемот на задачите што може да ги преземе да се зголемува.
Поставувањето на скрипта за стартување, променливи на околината и пристап до интернет значително ја намалува стапката на грешки на Codex. Додека извршувате задачи, барајте грешки при градењето што можат да се коригираат во конфигурацијата на околината на Codex. Ова може да бара неколку итерации, но на долг рок обезбедува значителни добивки во ефикасноста.
Codex подобро реагира кога промптите наликуваат на тоа како би опишале промена во PR или прашање. Тоа значи вклучување патеки на датотеки, имиња на компоненти, разлики и фрагменти од документација кога е соодветно. Користењето промпти со обрасци како „Имплементирај го ова на истиот начин како што е направено во [модул X]“ ги подобрува резултатите.
Пуштете задачи за да забележите споредни идеи, делумно завршена работа или попатни поправки. Нема притисок да генерирате целосно PR барање одеднаш. Codex добро функционира како привремен простор на кој можте да се вратите кога повторно ќе се фокусирате.
Одржувајте ја датотеката AGENTS.md за да му помогнете на Codex да работи поефикасно во вашиот репозиториум преку промпт. Овие датотеки обично содржат конвенции за именување, деловна логика, познати специфичности или зависности што Codex не може да ги заклучи само од кодот. Дознајте повеќе за тоа како да ја структурирате вашата AGENTS.md датотека во документацијата.
Функцијата Best-of-N (избор на најдобриот од N одговори) ви овозможува истовремено да генерирате повеќе одговори за една задача, брзо да разгледате повеќе решенија и да го изберете најдоброто. За посложени задачи, можете да прегледате неколку верзии и да комбинирате делови од различни одговори за да добиете поквалитетен резултат.
Codex сè уште е во истражувачки преглед, но веќе има вистинско влијание врз начинот на кој создаваме, помагајќи ни да се движиме побрзо, да пишуваме подобар код и да преземаме работа што инаку никогаш не би била ставена меѓу приоритетите.
Возбудени сме за потенцијалот што претстои - како што нашите модели стануваат подобри и Codex се интегрира подлабоко во нашите работни процеси, со нетрпение очекуваме да отклучиме уште помоќни начини за развој на софтвер со него. Ќе продолжиме да споделуваме што учиме по пат.


