Přeskoč na hlavní obsah
OpenAI

Jak OpenAI používá Codex

Úvod

Codex se denně používá v celé řadě našich technických týmů v OpenAI, jako jsou bezpečnost, produktové inženýrství, frontend, API, infrastruktura a výkonnostní vývoj. Týmy jej používají k urychlení celé řady vývojářských úkolů, od porozumění komplexním systémům a refaktorování rozsáhlých kódových základen až po nasazování nových funkcí a řešení incidentů v těsných termínech.

Na základě rozhovorů s inženýry OpenAI a interních dat jsme sestavili příklady použití a osvědčené postupy, které ukazují, jak Codex pomáhá týmům pracovat rychleji, zlepšovat kvalitu práce a zvládat ve velkém měřítku složité problémy.


Scénář 1: porozumění kódu

Codex pomáhá našim týmům rychle se zorientovat v neznámých částech kódové základny při zavádění, ladění nebo vyšetřování incidentu.

Často používají Codex k nalezení základní logiky funkce, zmapování vztahů mezi službami nebo moduly a sledování toku dat systémem. Pomáhá také odhalit vzory architektury nebo chybějící části dokumentace, jejichž vytvoření by jinak vyžadovalo značné manuální úsilí.

Při řešení incidentů pomáhá Codex vývojářům rychle se zorientovat v nových oblastech tím, že odhaluje interakce mezi komponentami a sleduje, jak se chybové stavy šíří napříč systémy.

Historky od našich týmů

„Když opravuji chybu, používám režim Ask, abych zjistil, kde jinde v kódové základně by se mohl stejný problém objevit.“
Výkonnostní vývojář, systémy pro vyhledávání
Zkus používat Codex pro porozumění kódu s těmito ukázkovými prompty:
  • Kde je v tomto úložišti implementována autentizační logika?

  • Shrň, jak požadavky procházejí touto službou od vstupního bodu až po odpověď.

  • Které moduly komunikují s modulem [vložte název modulu] a jak se řeší selhání?

Scénář 2: Refaktoring a migrace

Codex se běžně používá k provádění změn, které zasahují do více souborů nebo balíčků. Například když vývojáři aktualizují API, mění způsob implementace vzoru nebo přecházejí na novou závislost, Codex usnadňuje konzistentní provádění změn.

Je to užitečné zvláště v případech, když je potřeba provést stejnou aktualizaci v desítkách souborů, nebo když aktualizace vyžaduje porozumění struktuře a závislostem, které nelze snadno zachytit pomocí regexu nebo funkce najdi a nahraď.

Používá se také pro čištění kódu: rozdělování nadměrných modulů, nahrazování zastaralých vzorů moderními nebo přípravu kódu na lepší testovatelnost.

Historky od našich týmů

„Codex nahradil všechna zastaralá volání getUserById( ) naším novým servisním vzorem a vytvořil pul request. Zvládl během několika minut to, co by jinak trvalo hodiny.“
Backendový vývojář, ChatGPT Web
Vyzkoušej Codex na refaktoring a migrace s těmito ukázkovými prompty:
  • Rozděl tento soubor do samostatných modulů podle oblastí odpovědnosti a pro každý z nich vygeneruj testy.

  • Převeď veškerý přístup k databázi založený na zpětných voláních na async/await.

Scénář 3: optimalizace výkonu

Codex slouží k identifikaci a řešení výkonnostních úzkých míst.

Při ladění výkonu nebo zvyšování spolehlivosti vývojáři předávají prompty Codexu, aby analyzoval pomalé nebo paměťově náročné části kódu, jako jsou neefektivní smyčky, redundantní operace nebo nákladné dotazy, a navrhl optimalizované alternativy. To často vede k výraznému zlepšení efektivity a spolehlivosti.

Codex ti pomáhá udržovat dobrý stav kódu: odhaluje rizikové nebo zastaralé vzorce, které se pořád aktivně používají. Naše týmy se na Codex spoléhají, aby dlouhodobě snižovaly technický dluh a včas předcházely regresím.

Historky od našich týmů

„Používám Codex k vyhledávání opakovaných nákladných volání databáze. Skvěle si vede při identifikaci kritických míst v kódu a navrhování dávkových dotazů, které pak můžu doladit.“
Vývojář infrastruktury, spolehlivost API
Vyzkoušej Codex pro optimalizaci výkonu pomocí těchto ukázkových promptů:
  • Optimalizuj tuto smyčku s ohledem na efektivní využití paměti a vysvětli, proč je tvá verze rychlejší.

  • Najdi opakované náročné operace v tomto obslužném modulu požadavků a navrhni možnosti ukládání do mezipaměti.

  • Navrhni rychlejší způsob, jak v této funkci dávkovat databázové dotazy.

Příklad použití 4: Zlepšení pokrytí testů

Codex pomáhá vývojářům rychleji vytvářet testy. Hlavně tam, kde je pokrytí slabé nebo úplně chybí.

Při opravě chyby nebo refaktoringu často inženýři žádají Codex, aby navrhl testy pokrývající mezní případy nebo pravděpodobné chybné procesy. Pro nový kód dokáže generovat jednotkové nebo integrační testy podle signatury funkce a okolní logiky.

Codex je obzvlášť užitečný při identifikaci mezních podmínek, jako jsou prázdné vstupy, maximální délka nebo neobvyklé, ale platné stavy, které se často přehlížejí v počátečních testech.

Historky od našich týmů

„Přes noc nasměruju Codex na moduly s nízkým pokrytím a ráno se probudím a čekají na mě spustitelné pull requesty s unit testy.“
Frontendový vývojář, ChatGPT Desktop
Vyzkoušej Codex pro optimalizaci výkonu pomocí těchto ukázkových promptů:
  • Napiš pro tuto funkci jednotkové testy, včetně okrajových případů a scénářů selhání.

  • Vytvořit test vlastností pro tuto řadicí utilitu.

  • Rozšiř tento testovací soubor tak, aby zahrnoval chybějící scénáře týkající se nulových vstupů a neplatných stavů.

Scénář 5: Zvyšování rychlosti vývoje

Codex pomáhá týmům pracovat rychleji tím, že urychluje jak začátek, tak konec vývojového cyklu.

Při zavádění nové funkce ho vývojáři používají k vytvoření základního kódu (generování složek, modulů a API stubů), aby rychle získali spustitelný kód, aniž by museli každou část ručně propojovat.

S blížícím se vydáním projektů pomáhá Codex dodržovat krátké termíny tím, že se zabývá menšími, ale zásadními úkoly, jako je třídění chyb, vyplňování implementačních mezer v poslední fázi a generování skriptů pro nasazení, telemetrických hooků nebo konfiguračních souborů.

Používá se také k přeměně zpětné vazby k produktu na počáteční kód. Vývojáři často vloží uživatelský požadavek nebo specifikaci a nechají Codex vygenerovat hrubý návrh, ke kterému se mohou později vrátit a dále ho upravit.

„Byl jsem celý den na schůzkách a přesto jsem sloučil 4 pull requesty, protože Codex pracoval na pozadí.“
Produktový vývojář, ChatGPT Enterprise
Vyzkoušej Codex pro zvýšení rychlosti vývoje pomocí těchto ukázkových promptů:
  • Vytvoř novou trasu API pro POST/events se základním ověřením a protokolováním.

  • Vytvoř telemetrický hook pro sledování úspěšnosti nebo neúspěšnosti nového onboardingového procesu pomocí této šablony [vložte příklad svého telemetrického kódu].

  • Vytvořte implementaci stubu na základě této specifikace: [vlož specifikaci nebo zpětnou vazbu k produktu].

Scénář 6: Udržení plynulého pracovního tempa

Codex pomáhá našim vývojářům, aby zůstali produktivní, i když je jejich pracovní rozvrh roztříštěný a plný vyrušení.
Používá se k zachycení nedokončené práce, přeměně poznámek na funkční prototypy nebo k vytvoření průzkumných úkolů, ke kterým se lze později vrátit. To jim usnadňuje přerušení práce a její opětovné zahájení bez ztráty kontextu, zejména když jsou na pohotovosti nebo mají hodně schůzek.

„Pokud najdu nějakou opravu, která se dá snadno najít, spustím úlohu v Codexu místo výměny větví a její pull requesty si prohlédnu, až budu mít čas.“
Backendový vývojář, ChatGPT Web
Vyzkoušej Codex pro udržení tempa pomocí těchto ukázkových promptů:

Případ použití 7: Průzkum a generování nápadů

Codex je také užitečný pro otevřené úkoly, jako je hledání alternativních řešení nebo ověřování rozhodnutí při navrhování. Pomocí promptu můžeš hledat různé způsoby řešení problému, zkoumat neznámé vzorce nebo testovat předpoklady pod tlakem. To pomáhá odhalit kompromisy, rozšířit možnosti návrhů a zpřesnit volby implementace.

Slouží také k identifikaci souvisejících chyb. Pokud se jedná o známý problém nebo zastaralou metodu, může Codex identifikovat podobné vzorce i jinde v kódu, což usnadňuje zachycení regresí nebo dokončení práce na čištění kódu.

„Codex mi pomáhá vyřešit problém se studeným startem – vložím specifikaci a dokumentaci a on mi vytvoří scaffold kód nebo mi ukáže, co jsem zapomněl.“
Produktový inženýr, ChatGPT Desktop
Vyzkoušej Codex ke zkoumání a hledání nápadů pomocí těchto ukázkových promptů:
  • Jak by to fungovalo, kdyby byl systém řízený místo modelu požadavek–odpověď událostmi?

  • Najdi všechny moduly, které ručně sestavují řetězce SQL místo používání našeho nástroje pro vytváření dotazů.

  • Přepiš to do funkčnějšího stylu a vyhni se mutacím a vedlejším účinkům.


Osvědčené postupy

Codex funguje nejlépe, když má strukturu, kontext a prostor pro iteraci. Tady jsou některé z návyků, které si týmy OpenAI osvojují, aby z něj při každodenní práci získávaly stálý přínos.

Začni s režimem Ask

U rozsáhlých změn začněte tím, že požádáte Codex o plán implementace pomocí režimu Ask, který se pak stane vstupem pro navazující prompty při přepnutí do režimu programování. Tento dvoukrokový postup udržuje Codex při zemi a pomáhá předcházet chybám ve výstupech. Codex funguje nejlépe s dobře vymezenými úkoly, jejichž dokončení by tobě nebo některému z tvých kolegů zabralo přibližně hodinu, nebo jejichž implementace by vyžadovala několik stovek řádků kódu. Jak se modely zlepšují, lze očekávat, že rozsah úkolů, které mohou převzít, poroste.

Iterativně vylepšuj vývojové prostředí Codex

Nastavení spouštěcího skriptu, proměnných prostředí a přístupu k internetu výrazně snižuje chybovost Codex. Při spouštění úloh hledej chyby sestavení, které můžeš opravit v konfiguraci prostředí Codex. Může to chtít pár iterací, ale z dlouhodobého hlediska to přinese výrazné zvýšení efektivity.

Strukturuj svůj prompt, jako kdybys psal GitHub Issue

Codex reaguje lépe, když prompt odpovídá tomu, jak bys popsal změnu v pull requestu nebo problému. Znamená to zahrnout cesty k souborům, názvy komponent, diffy a úryvky z dokumentace, pokud je to relevantní. Zadávání promptů stylem „Implementuj to stejným způsobem, jako je to provedeno v [modulu X]“ zlepšuje výsledky.

Používej frontu úkolů Codex jako jednoduchý seznam úkolů

Spouštěj úkoly, abys zachytil vedlejší nápady, rozpracovanou práci nebo drobné opravy. Není potřeba vytvořit celý pull request najednou. Codex funguje dobře jako odkládací místo, ke kterému se můžeš vrátit, až se zase budeš soustředit.

Používej AGENTS.md k zajištění trvalého kontextu

Udržuj soubor AGENTS.md, aby Codex mohl ve tvém úložišti fungovat efektivněji s různými prompty. Tyto soubory obvykle zahrnují konvence pojmenování, obchodní logiku, známé zvláštnosti nebo závislosti, které Codex nedokáže odvodit pouze z kódu. Více informací o strukturování souboru AGENTS.md najdeš v dokumentaci.

Využij funkci „Best of N“ ke zlepšení výstupů

Funkce Best-of-N umožňuje současně vygenerovat více odpovědí pro jeden úkol, aby šlo rychle prozkoumat více řešení a vybrat to nejlepší. U složitějších úkolů můžeš projít několik iterací a zkombinovat části různých odpovědí pro lepší výsledek.


Budoucnost

Codex je stále ve fázi výzkumného náhledu, ale už má skutečný dopad na to, jak vyvíjíme: pomáhá nám postupovat rychleji, psát lepší kód a pouštět se do práce, která by jinak nikdy nebyla prioritou.

Jsme nadšeni z potenciálu, který se nám nabízí – s tím, jak se naše modely budou zlepšovat a Codex bude hlouběji integrován do našich pracovních postupů, se těšíme na otevření ještě výkonnějších způsobů vyvíjení softwaru. Budeme dál průběžně sdílet to, co se naučíme.

Máte zájem zavést AI do své firmy?

Zjistěte, jak pomáháme společnostem vytvářet škálovatelné a zodpovědné strategie AI.