Preskočiť na hlavný obsah
OpenAI

Úvod

Codex sa denne používa v mnohých technických tímoch v OpenAI, ako sú bezpečnosť, produktové inžinierstvo, frontendové inžinierstvo, API, infraštruktúra a výkonnostné inžinierstvo. Tímy ho používajú na urýchlenie rôznych inžinierskych úloh – od pochopenia zložitých systémov a refaktorizácie veľkých kódových základní až po dodávanie nových funkcií a riešenie incidentov v krátkych termínoch.

Na základe rozhovorov s inžiniermi OpenAI a interných údajov o používaní sme zostavili prípady použitia a osvedčené postupy, ktoré ukazujú, ako Codex pomáha našim tímom pracovať rýchlejšie, zlepšovať kvalitu práce a zvládať komplexnosť vo veľkom rozsahu.


1. prípad použitia: Pochopenie kódu

Codex rýchlo pomáha našim tímom zorientovať sa v neznámych častiach kódového základu pri onboardingu, ladení alebo vyšetrovaní incidentu.

Naš tímy často používajú Codex na vyhľadanie základnej logiky funkcie, zmapovanie vzťahov medzi službami alebo modulmi a sledovanie toku údajov v systéme. Pomáha tiež odhaliť architektonické vzory alebo chýbajúce časti dokumentácie, ktorých vytvorenie by si inak vyžadovalo značné manuálne úsilie.

Počas reakcie na incidenty pomáha Codex inžinierom rýchlo sa zorientovať v nových oblastiach tým, že odhaľuje interakcie medzi komponentmi a sleduje, ako sa chybové stavy šíria v systémoch.

Príbehy z našich tímov

„Keď opravujem chybu, používam režim kladenia otázok, aby som zistil, kde inde v kódovej základni by sa mohol objaviť rovnaký problém.“
Inžinier výkonu, systémy na získavanie informácií
Skús používať Codex na porozumenie kódu s týmito ukážkami príkazov:
  • Kde je v tomto repozitári implementovaná autentifikačná logika?

  • Zhrň to, ako požiadavky prechádzajú touto službou od vstupného bodu po odpoveď.

  • Ktoré moduly interagujú s [vlož názov modulu] a ako sa riešia zlyhania?

2. prípad použitia: Refaktoring a migrácie

Codex sa bežne používa na vykonávanie zmien, ktoré zahŕňajú viacero súborov alebo balíkov. Napríklad keď inžinieri aktualizujú API, menia spôsob implementácie vzoru alebo prechádzajú na novú závislosť, Codex uľahčuje konzistentné zavádzanie zmien.

Je to obzvlášť užitočné, keď je potrebné vykonať tú istú aktualizáciu vo viacerých súboroch alebo keď si aktualizácia vyžaduje znalosť štruktúry a závislostí, ktoré sa nedajú ľahko zachytiť pomocou regexu alebo funkcie hľadať a nahradiť.

Používajú ho aj na čistenie kódu rozdeľovaním nadmerne veľkých modulov, nahrádzaním starých vzorov modernými alebo prípravou kódu na lepšiu testovateľnosť.

Historky z našich tímov

„Codex nahradil všetky staršie volania getUserById( ) naším novým servisným vzorom a otvoril PR.“ Za pár minút Codex zvládol to, čo by inak trvalo hodiny.“
Backendový inžinier pre ChatGPT web
Skús použiť Codex na refaktoring a migrácie s týmito ukážkami príkazov:
  • Rozdeľ tento súbor na samostatné moduly podľa zodpovedností a vygeneruj testy pre každý z nich.

  • Preveď všetok prístup k databáze založený na callbackoch na async/await.

3. prípad použitia: Optimalizácia výkonu

Codex sa používa na identifikáciu a riešenie problémov s výkonom.

Počas ladenia alebo úsilia o zvýšenie spoľahlivosti inžinieri zadajú Codexu príkaz, aby analyzoval pomalé alebo pamäťovo náročné časti kódu, ako sú neefektívne slučky, redundantné operácie alebo nákladné dotazy, a navrhol optimalizované alternatívy, čo často vedie k výraznému zlepšeniu efektívnosti a spoľahlivosti.

Codex sa používa aj na zlepšenie zdravia kódu tým, že identifikuje rizikové alebo zastarané vzory, ktoré sú stále aktívne používané. Naše tímy sa naň spoliehajú, aby znižoval dlhodobý technický dlh a proaktívne predchádzal regresiám.

Príbehy z našich tímov

„Používam Codex na vyhľadávanie opakovaných nákladných volaní databázy. Skvele identifikuje kritické miesta a navrhuje dávkové dotazy, ktoré môžem neskôr upraviť.“
Infraštruktúrny inžinier, spoľahlivosť API
Skús použiť Codex na optimalizáciu výkonu s týmito ukážkami príkazov:
  • Optimalizuj tento cyklus pre pamäťovú efektivitu a vysvetli, prečo je tvoja verzia rýchlejšia.

  • Nájdi opakované náročné operácie v tejto obslužnej rutine požiadavky a navrhni možnosti ukladania do vyrovnávacej pamäte.

  • Navrhni rýchlejší spôsob, ako v tejto funkcii dávkovo spracovať databázové dotazy.

4. prípad použitia: Zlepšenie pokrytia testov

Codex pomáha inžinierom písať testy rýchlejšie – najmä tam, kde je pokrytie slabé alebo úplne chýba.

Pri práci na oprave chyby alebo refaktoringu sa inžinieri často obracajú na Codex, aby navrhol testy, ktoré pokryjú hraničné prípady alebo pravdepodobné cesty k zlyhaniu. Pri novom kóde dokáže generovať unit testy alebo integračné testy na základe signatúry funkcie a okolitej logiky.

Codex je obzvlášť užitočný pri identifikácii hraničných podmienok, ako sú prázdne vstupy, maximálna dĺžka alebo nezvyčajné, ale platné stavy, ktoré sa často prehliadajú pri počiatočných testoch.

Príbehy z našich tímov

„Codex cez noc nasmerujem na moduly s nízkym pokrytím testami a ráno sa zobudím na spustiteľné PR s jednotkovými testami.“
Frontendový inžinier, ChatGPT pre počítač
Skús použiť Codex na optimalizáciu výkonu s týmito ukážkami príkazov:
  • Napíš jednotkové testy pre túto funkciu vrátane hraničných prípadov a scenárov zlyhania.

  • Vytvor test založený na vlastnostiach pre tento nástroj na triedenie.

  • Rozšír tento testovací súbor, aby pokrýval chýbajúce scenáre pre vstupy s hodnotou null a neplatné stavy.

5. prípad použitia: Zvyšovanie rýchlosti vývoja

Codex pomáha tímom napredovať rýchlejšie tým, že zrýchľuje začiatok aj záver vývojového cyklu.

Pri spúšťaní novej funkcie ho inžinieri používajú na vytvorenie základnej štruktúry a šablónového kódu – generovanie priečinkov, modulov a API stubov, aby rýchlo získali spustiteľný kód bez ručného prepájania každej časti.

Keď sa projekty blížia k vydaniu, Codex pomáha dodržať napäté termíny tým, že preberá menšie, ale nevyhnutné úlohy, ako je triedenie chýb, dopĺňanie posledných medzier v implementácii a generovanie rollout skriptov, telemetrických háčikov alebo konfiguračných súborov.

Používa sa aj na premenu spätnej väzby k produktu na základný kód. Inžinieri často vložia požiadavku používateľa alebo špecifikáciu a nechajú Codex vygenerovať hrubý návrh, ku ktorému sa môžu neskôr vrátiť a ďalej ho upraviť.

„Celý deň som bol na stretnutiach a aj tak som zlúčil 4 PR, pretože Codex pracoval na pozadí.“
Produktový inžinier, ChatGPT Enterprise
Skús použiť Codex na zrýchlenie vývoja pomocou týchto ukážok príkazov:
  • Vytvor základ novej trasy API pre POST /events so základným overovaním a protokolovaním.

  • Vygeneruj telemetrický háčik na sledovanie úspechu alebo zlyhania nového onboardingového procesu pomocou tejto šablóny [vlož príklad svojho telemetrického kódu].

  • Vytvor kostrovú implementáciu na základe tejto špecifikácie: [vlož špecifikáciu alebo spätnú väzbu produktu].

6. prípad použitia: Udržiavať plynulosť

Codex pomáha našim inžinierom zostať produktívnymi, keď je ich pracovný čas roztrieštený a plný prerušení.
Používa sa na zachytenie nedokončenej práce, premenu poznámok na funkčné prototypy alebo vytvorenie prieskumných úloh, ku ktorým sa dá neskôr vrátiť. To uľahčuje pozastavenie a obnovenie práce bez straty kontextu, najmä keď sú na pohotovosti alebo majú veľa stretnutí.

„Ak si všimnem rýchlu opravu, spustím úlohu v Codexe namiesto prepínania vetiev a skontrolujem PR, keď mám čas.“
Backendový inžinier, ChatGPT API
Skús použiť Codex na to, aby si zostal/-a v rytme, s týmito ukážkami príkazov:

7. prípad použitia: Skúmanie a tvorba nápadov

Codex je užitočný aj na otvorenú prácu, ako je hľadanie alternatívnych riešení alebo overovanie dizajnových rozhodnutí. Môžeš zadať príkaz na rôzne spôsoby riešenia problému, preskúmať neznáme vzory alebo otestovať predpoklady v praxi. To pomáha objasniť kompromisy, rozšíriť možnosti návrhu a spresniť rozhodnutia o implementácii.

Používa sa aj na identifikáciu súvisiacich chýb. Ak ide o známy problém alebo zastaranú metódu, Codex dokáže identifikovať podobné vzory aj inde v kóde, čo uľahčuje odhaľovanie regresií alebo dokončenie čistenia kódu.

„Codex mi pomáha riešiť problém so studeným štartom – vložím špecifikáciu a dokumentáciu, a vygeneruje kostru kódu alebo mi ukáže, na čo som zabudol.“
Produktový inžinier, ChatGPT pre desktop
Skús použiť Codex na objavovanie a generovanie nápadov pomocou týchto ukážkových príkazov:
  • Ako by to fungovalo, keby bol systém riadený udalosťami namiesto modelu požiadavka/odpoveď?

  • Nájdi všetky moduly, ktoré manuálne vytvárajú reťazce SQL namiesto používania nášho nástroja na tvorbu dopytov.

  • Prepíš to do funkcionálnejšieho štýlu, vyhni sa mutáciám a vedľajším účinkom.


Osvedčené postupy

Codex funguje najlepšie, keď má k dispozícii štruktúru, kontext a priestor na iteráciu. Tu sú niektoré z návykov, ktoré si tímy OpenAI osvojujú, aby z neho pri každodennej práci získavali konzistentnú hodnotu.

Začni s režimom kladenia otázok

Pri veľkých zmenách začni tým, že zadáš Codexu príkaz na vytvorenie plánu implementácie pomocou režimu Ask mode, ktorý sa potom stane vstupom pre následné príkazy, keď prepneš do režimu Code Mode. Tento dvojkrokový postup udržiava Codex v línii a pomáha ti vyhnúť sa chybám vo výstupoch. Codex funguje najlepšie pri jasne vymedzených úlohách, ktoré by ti alebo kolegovi z tímu trvali približne hodinu alebo by si vyžiadali niekoľko stoviek riadkov kódu. Ako sa modely zlepšujú, očakávaj, že rozsah úloh, ktoré dokážu zvládnuť, sa bude zväčšovať.

Postupne zlepšujeme vývojové prostredie Codex

Nastavenie spúšťacieho skriptu, premenných prostredia a prístupu na internet výrazne znižuje chybovosť Codex. Pri spúšťaní úloh hľadaj chyby zostavenia, ktoré možno opraviť v konfigurácii prostredia Codex. Môže to vyžadovať niekoľko iterácií, ale z dlhodobého hľadiska to prináša výrazné zvýšenie efektívnosti.

Štruktúruj svoj príkaz tak, akoby si písal GitHub problém

Codex reaguje lepšie, keď príkazy odzrkadľujú spôsob, akým by ste opísali zmenu v PR alebo probléme. To znamená zahrnúť cesty k súborom, názvy komponentov, diffy a úryvky z dokumentácie podľa potreby. Zadávanie príkazov so vzorcami, ako napríklad „Implementuj to rovnakým spôsobom, ako je to urobené v [module X]“, zlepšuje výsledky.

Použi front úloh Codex ako ľahký backlog

Spúšťaj úlohy na zaznamenanie vedľajších nápadov, rozpracovanej práce alebo drobných opráv. Nie je potrebné vygenerovať celý PR naraz. Codex funguje dobre ako prechodné miesto, ku ktorému sa môžeš vrátiť, keď sa budeš môcť znova sústrediť.

Použi AGENTS.md na poskytnutie trvalého kontextu

Udržiavaj súbor AGENTS.md, aby Codex fungoval vo tvojom repozitári efektívnejšie naprieč príkazmi. Tieto súbory zvyčajne obsahujú konvencie pomenovania, obchodnú logiku, známe špecifiká alebo závislosti, ktoré Codex nedokáže odvodiť len zo samotného kódu. Zisti viac o štruktúrovaní súboru AGENTS.md v dokumentácii.

Využi „Best of N“ na zlepšenie výstupu

Funkcia Best-of-N umožňuje súčasne vygenerovať viacero odpovedí pre jednu úlohu, aby si mohol rýchlo preskúmať viacero riešení a vybrať to najlepšie. Pri zložitejších úlohách môžeš preskúmať niekoľko iterácií a skombinovať časti rôznych odpovedí, aby si dosiahol lepší výsledok.


Pohľad do budúcnosti

Codex je stále vo výskumnej ukážke, no už teraz má skutočný vplyv na spôsob, akým vyvíjame, pomáha nám postupovať rýchlejšie, písať lepší kód a púšťať sa do práce, ktorá by inak nikdy nedostala prioritu.

Tešíme sa z potenciálu, ktorý je pred nami. Popri tom, ako sa naše modely zlepšujú a Codex sa čoraz viac integruje do našich pracovných postupov, sa tešíme, že s jeho pomocou objavíme ešte výkonnejšie spôsoby vývoja softvéru. Budeme sa naďalej deliť o to, čo sa počas tejto cesty naučíme.

Chcete zaviesť umelú inteligenciu do svojho podnikania?

Zistite, ako pomáhame spoločnostiam vytvárať škálovateľné a zodpovedné stratégie umelej inteligencie.