Preskočite na glavni sadržaj
OpenAI

Uvod

Codex se svakodnevno koristi u brojnim tehničkim timovima u OpenAI-u, kao što su sigurnost, produktni inženjering, frontend, API, infrastruktura i inženjering performansi. Timovi ga koriste za ubrzavanje niza inženjerskih zadataka, od razumijevanja složenih sistema i refaktorisanja velikih kodnih baza do isporuke novih funkcionalnosti i rješavanja incidenata u kratkim rokovima.

Na osnovu intervjua s OpenAI inženjerima i podataka o korištenju, sastavili smo primjere upotrebe i najbolje prakse koje pokazuju kako Codex pomaže našim timovima da rade brže, poboljšaju kvalitet rada i upravljaju složenošću na velikoj skali.


Slučaj upotrebe 1: Razumijevanje koda

Codex pomaže našim timovima da se brzo upoznaju s nepoznatim dijelovima baze koda prilikom uvođenja u posao, otklanjanja grešaka ili istraživanja incidenta.

Često koriste Codex da pronađu ključnu logiku funkcionalnosti, mapiraju odnose između servisa ili modula i prate protok podataka kroz sistem. Također pomaže da otkrije arhitektonske uzorke ili nedostajuće dijelove dokumentacije, za koje bi inače trebalo mnogo ručnog rada.

Tokom odgovora na incidente, Codex pomaže inženjerima da se brzo snađu u novim oblastima otkrivanjem interakcija između komponenti ili praćenjem načina na koji se stanja otkaza šire kroz sisteme.

Anegdote naših timova

„Kada ispravim grešku, koristim način rada 'Ask' da provjerim gdje bi se isti problem mogao pojaviti u kodnoj bazi”
Inženjer za performanse, sistemi za dohvat podataka
Isprobaj Codex za razumijevanje koda uz ove primjere upita:
  • Gdje je implementirana logika autentifikacije u ovom repozitoriju?

  • Sažmi kako zahtjevi prolaze kroz ovu uslugu od ulazne tačke do odgovora.

  • Koji moduli su u interakciji s [insert module name] i kako se rukuje kvarovima?

Slučaj upotrebe 2: Refaktorisanje i migracije

Codex se često koristi za unošenje promjena koje obuhvataju više datoteka ili paketa. Na primjer, kada inženjeri ažuriraju API, mijenjaju način na koji se obrazac implementira ili migriraju na novu zavisnost, Codex olakšava dosljednu primjenu promjena.

Posebno je korisno kada isto ažuriranje treba izvršiti u desetinama datoteka, ili kada ažuriranje zahtijeva razumijevanje strukture i zavisnosti koje nije lako obuhvatiti regex-om ili funkcijom pretrage i zamjene.

Također ga koriste za čišćenje koda dijeljenjem prevelikih modula, zamjenom starih obrazaca modernim i pripremom koda za bolju testabilnost.

Anegdote naših timova

„Codex je zamijenio svaki zastarjeli getUserById() našim novim servisnim obrascem i otvorio PR.“ Za nekoliko minuta uradilo je ono za što bi inače trebalo sati.”
Inženjer za pozadinske sisteme, ChatGPT Web
Pokušaj koristiti Codex za refaktorisanje i migracije uz ove primjere uputa:
  • Podijeli ovu datoteku u zasebne module po odgovornostima i generiši testove za svaki od njih.

  • Pretvori sav pristup bazi podataka zasnovan na callbackovima u async/await.

Slučaj upotrebe 3: optimizacija performansi

Codex se koristi za identifikaciju i rješavanje uskih grla u performansama.

Tokom optimizacije ili rada na poboljšanju pouzdanosti, inženjeri upućuju upit Codexu da analizira spore ili memorijski zahtjevne putanje koda, kao što su neefikasne petlje, redundantne operacije ili skupi upiti, te da predloži optimizirane alternative, što često rezultira značajnim poboljšanjima efikasnosti i pouzdanosti.

Codex se koristi i za održavanje zdravlja koda prepoznavanjem rizičnih ili zastarjelih obrazaca koji su još uvijek u upotrebi. Naši timovi oslanjaju se na njega kako bi smanjili dugoročni tehnički dug i proaktivno spriječili regresije.

Anegdote naših timova

„Koristim Codex za skeniranje kako bih pronašao ponovljene skupe DB pozive.“ „Odlično prepoznaje kritične putanje i sastavlja grupisane upite koje kasnije mogu prilagoditi.“
Inženjer infrastrukture, pouzdanost API-ja
Pokušajte koristiti Codex za optimizaciju performansi uz ove primjere upita:
  • Optimizirajte ovu petlju za memorijsku učinkovitost i objasnite zašto je vaša verzija brža.

  • Pronađi ponovljene skupe operacije u ovom handleru zahtjeva i predloži opcije za keširanje.

  • Predloži brži način za grupne DB upite u ovoj funkciji.

Slučaj upotrebe 4: Poboljšanje pokrivenosti testiranjem

Codex pomaže inženjerima da brže pišu testove — posebno tamo gdje je pokrivenost slaba ili potpuno nedostaje.

Kada radiš na ispravci greške ili refaktorisanju, možeš tražiti od Codex da predloži testove koji obuhvataju rubne slučajeve ili vjerovatne putanje otkaza. Za novi kod, možeš generirati jedinične ili integracione testove na osnovu potpisa funkcije i okolne logike.

Codex je posebno koristan za prepoznavanje graničnih uvjeta, poput praznih unosa, maksimalne dužine ili neuobičajenih, ali valjanih stanja koja se često zanemare u početnim testovima.

Anegdote naših timova

„Usmjerim Codex na module s niskom pokrivenošću testovima preko noći, a ujutro me dočekaju izvršivi PR-ovi s jediničnim testovima.“
Frontend inženjer, ChatGPT Desktop
Pokušajte koristiti Codex za optimizaciju performansi uz ove primjere upita:
  • Napiši jedinične testove za ovu funkciju, uključujući rubne slučajeve i puteve neuspjeha.

  • Generiši test baziran na svojstvima za ovaj alat za sortiranje.

  • Proširi ovu testnu datoteku kako bi obuhvatila scenarije koji nedostaju za null unose i nevažeća stanja.

Slučaj upotrebe 5: povećanje brzine razvoja

Codex pomaže timovima da ubrzaju rad ubrzavanjem početka i završetka razvojnog ciklusa.

Pri pokretanju nove funkcionalnosti, inženjeri ga koriste za izradu početnog šablonskog koda — generiranje foldera, modula i API stubova kako bi brzo dobili izvršiv kod bez ručnog povezivanja svakog dijela.

Kako se projekti približavaju izdanju, Codex pomaže u ispunjavanju kratkih rokova preuzimanjem manjih, ali ključnih zadataka, poput razvrstavanja grešaka, popunjavanja posljednjih praznina u implementaciji i generiranja skripti za uvođenje, telemetrijskih kuka ili konfiguracijskih datoteka.

Također se koristi za pretvaranje povratnih informacija o proizvodu u početni kod. Inženjeri često zalijepe korisnički zahtjev ili specifikaciju i prepuste Codexu da generira grubi nacrt kojem se kasnije mogu vratiti i doraditi.

“Bio sam na sastancima cijeli dan i ipak spojio 4 PR-ova jer je Codex radio u pozadini.”
Inženjer proizvoda, ChatGPT Enterprise
Pokušaj koristiti Codex za povećanje brzine razvoja uz ove primjere upita:
  • Postavi novu API rutu za POST /events s osnovnom validacijom i evidentiranjem.

  • Generiši telemetrijski hook za praćenje uspjeha/neuspjeha novog toka pristupanja, koristeći ovaj predložak [unesi primjer svog telemetrijskog koda].

  • Kreiraj osnovnu implementaciju na osnovu ove specifikacije: [unesi specifikaciju ili povratne informacije o proizvodu].

Slučaj upotrebe 6: Ostati u toku

Codex pomaže našim inženjerima da ostanu produktivni kada su njihovi rasporedi fragmentirani i puni prekida.
Koristi se za bilježenje nedovršenih zadataka, pretvaranje bilješki u funkcionalne prototipe ili izdvajanje istraživačkih zadataka kojima se kasnije može vratiti. To olakšava pauziranje i nastavak rada bez gubitka konteksta, posebno kada su na dežurstvu ili imaju mnogo sastanaka.

„Ako uočim usputnu ispravku, pokrenem Codex zadatak umjesto da mijenjam grane i pregledam njegov PR kad budem slobodan.“
Pozadinski inženjer, ChatGPT API
Probaj koristiti Codex da ostaneš u toku uz ove primjere upit:

Slučaj upotrebe 7: istraživanje i ideacija

Codex je također koristan za otvorene zadatke, poput pronalaženja alternativnih rješenja ili potvrđivanja dizajnerskih odluka. Možete dati upit za različite načine rješavanja problema, istraživati nepoznate obrasce ili testirati pretpostavke. Ovo pomaže da se istaknu kompromisi, prošire mogućnosti dizajna i preciziraju izbori implementacije.

Također se koristi za prepoznavanje povezanih grešaka. S obzirom na poznat problem ili zastarjelu metodu, Codex može prepoznati slične obrasce na drugim mjestima u kodu, što olakšava uočavanje regresija ili dovršavanje čišćenja koda.

„Codex mi pomaže da riješim problem hladnog starta — zalijepim specifikaciju i dokumentaciju, a on generiše osnovu koda ili mi pokaže šta sam zaboravio.“
Produktni inženjer, ChatGPT Desktop
Pokušaj koristiti Codex za istraživanje i osmišljavanje ideja uz ove primjere upita:
  • Kako bi ovo funkcionisalo ako bi sistem bio vođen događajima umjesto zahtjevima/odgovorima?

  • Pronađi sve module koji ručno grade SQL nizove umjesto da koriste naš graditelj upita.

  • Prepiši ovo u funkcionalnijem stilu, izbjegavaj mutacije i nuspojave.


Najbolje prakse

Codex najbolje radi kada mu se daju struktura, kontekst i prostor za iteraciju. Evo nekih navika koje OpenAI timovi razvijaju kako bi od toga dobijali dosljednu vrijednost u svakodnevnom radu.

Počni s načinom rada Ask

Za velike izmjene, počnite tako što ćete od Codexa zatražiti plan implementacije koristeći način rada Ask, koji zatim postaje unos za naredni upit kada pređete na način rada Code. Ovaj tok u dva koraka drži Codex prizemljenim i pomaže u izbjegavanju grešaka u njegovom izlazu. Codex najbolje funkcionira s dobro definisanim zadacima za koje bi vama ili članu vašeg tima trebalo oko sat vremena da ih dovršite ili nekoliko stotina linija koda za implementaciju. Kako se modeli poboljšavaju, možete očekivati da će se povećati obim zadataka koje mogu preuzeti.

Iterativno unaprijedi Codex razvojno okruženje

Postavljanje skripte za pokretanje, varijabli okruženja i pristupa internetu značajno smanjuje stopu grešaka Codex. Dok izvršavate zadatke, tražite greške pri buildanju koje se mogu ispraviti u konfiguraciji Codex okruženja. Ovo može zahtijevati nekoliko iteracija, ali dugoročno donosi značajne dobitke u efikasnosti.

Strukturiraj svoj upit kao da pišeš GitHub Issue

Codex bolje odgovara kada upit odražava način na koji biste opisali promjenu u PR-u ili issueu. To znači uključivanje putanja datoteka, naziva komponenti, diffova i isječaka iz dokumentacije kada je to relevantno. Davanje uputa pomoću obrazaca poput „Implementiraj ovo na isti način kao što je urađeno u [modulu X]” poboljšava rezultate.

Koristi red zadataka u Codexu kao lagani zaostatak

Pokreni zadatke kako bi zabilježio sporedne ideje, djelomično urađen posao ili usputne popravke. Nema pritiska da odjednom napraviš cijeli PR. Codex dobro funkcionira kao prostor za privremeni rad kojem se možeš vratiti kada se ponovo fokusiraš.

Koristi AGENTS.md da osiguraš trajni kontekst

Održavaj datoteku AGENTS.md kako bi Codex efikasnije radio u tvom repozitoriju kroz različite upite. Ove datoteke obično uključuju konvencije imenovanja, poslovnu logiku, poznate specifičnosti ili zavisnosti koje Codex ne može zaključiti samo na osnovu koda. Saznaj više o strukturiranju tvoje AGENTS.md datoteke u dokumentaciji.

Iskoristite „Best of N“ da poboljšate rezultate

Funkcija Best-of-N omogućava vam da istovremeno generišete više odgovora za jedan zadatak kako biste brzo istražili više rješenja i odabrali najbolje. Za složenije zadatke možete pregledati nekoliko iteracija i kombinovati dijelove različitih odgovora kako biste dobili bolji rezultat.


Pogled unaprijed

Codex je još uvijek u istraživačkom pregledu, ali već ima stvaran uticaj na način na koji radimo, pomažući nam da radimo brže, pišemo bolji kod i preuzmemo zadatke koji inače nikada ne bi bili prioritet.

Radujemo se potencijalu koji je pred nama — kako naši modeli postaju bolji i kako se Codex sve dublje integrira u naše tokove rada, veselimo se otključavanju još moćnijih načina razvoja softvera. Nastavit ćemo dijeliti ono što naučimo usput.

Zanima vas uvođenje AI u vaše poslovanje?

Saznajte kako pomažemo kompanijama da izgrade skalabilne i odgovorne strategije umjetne inteligencije.