Slik bruker OpenAI Codex
Codex brukes daglig av en rekke tekniske team hos OpenAI, som sikkerhet, produktutvikling, frontend, API, infrastruktur og ytelsesutvikling. Teamene bruker dette til å akselerere en rekke utviklingsoppgaver, fra å forstå komplekse systemer og refaktorere store kodebaser til å levere nye funksjoner og løse hendelser under stramme tidsfrister.
Basert på intervjuer med OpenAI-ingeniører og interne bruksdata har vi samlet brukstilfeller og beste praksis som viser hvordan Codex hjelper teamene våre med å jobbe raskere, forbedre kvaliteten på arbeidet og håndtere kompleksitet i stor skala.
Codex hjelper teamene våre med å komme raskt i gang med ukjente deler av kodebasen ved onboarding, feilsøking eller undersøkelse av en hendelse.
De bruker ofte Codex til å finne kjernelogikken i en funksjon, kartlegge relasjoner mellom tjenester eller moduler og spore dataflyten gjennom et system. Du kan enkelt gjøre dette med Codex. Det bidrar også til å avdekke arkitekturmønstre eller manglende deler av dokumentasjonen som ellers ville krevd betydelig manuelt arbeid å utarbeide. Du kan spare tid med Codex.
Under hendelseshåndtering hjelper Codex ingeniører med å bli kjent med nye områder raskt ved å avdekke interaksjoner mellom komponenter eller spore hvordan feiltilstander sprer seg på tvers av systemer.
Anekdoter fra teamene våre
«Når jeg fikser en feil, bruker jeg spørremodus for å se hvor ellers i kodebasen det samme problemet kan dukke opp»
Hvor er autentiseringslogikken implementert i dette repoet?
Oppsummer hvordan forespørsler flyter gjennom denne tjenesten fra inngangspunkt til svar.
Hvilke moduler samhandler med [sett inn modulnavn], og hvordan håndteres feil?
Codex brukes ofte til å gjøre endringer som strekker seg over flere filer eller pakker. Når ingeniører for eksempel oppdaterer et API, endrer hvordan et mønster er implementert, eller migrerer til en ny avhengighet, gjør Codex det enkelt å anvende endringer konsekvent.
Dette er spesielt nyttig når du må gjøre den samme oppdateringen på tvers av mange filer, eller når oppdateringen krever forståelse for struktur og avhengigheter som ikke enkelt fanges opp med regulære uttrykk eller søk og erstatt.
De bruker det også til kodeopprydding ved å dele opp store moduler, erstatte gamle mønstre med moderne, eller gjøre koden mer testbar.
Anekdoter fra teamene våre
«Codex byttet ut alle eldre getUserById( ) med vårt nye tjenestemønster og åpnet PR-en. Den gjorde på minutter det som ville tatt timer.»
Del opp denne filen i separate moduler etter ansvarsområde, og generer tester for hver av dem.
Konverter all databaseaksess som er callback-basert, til async/await.
Codex brukes til å identifisere og håndtere ytelsesflaskehalser.
Under arbeid med optimalisering eller pålitelighet, bruker ingeniører Codex-prompt for å analysere trege eller minnekrevende kodebaner, som ineffektive løkker, overflødige operasjoner eller kostbare spørringer, og foreslå optimaliserte alternativer, noe som ofte gir store forbedringer i effektivitet og pålitelighet.
Codex brukes også til å støtte tilstanden til koden ved å finne risikable eller utdaterte mønstre som fortsatt er i bruk. Teamene våre bruker det for å redusere langsiktig teknisk gjeld og unngå tilbakefall.
Anekdoter fra teamene våre
«Jeg bruker Codex til å finne gjentatte dyre DB-kall. Den er svært god til å identifisere kritiske kodebaner og utforme batch-spørringer som jeg senere kan finjustere.»
Optimaliser denne løkken for minneeffektivitet, og forklar hvorfor versjonen din er raskere.
Finn gjentatte kostbare operasjoner i denne forespørselshåndtereren, og foreslå muligheter for hurtigbufring.
Foreslå en raskere måte for å utføre felleskjøring av databasespørringer i denne funksjonen.
Codex hjelper deg med å skrive tester raskere – spesielt der dekningen er svak eller mangler helt.
Når man jobber med en feilretting eller refaktorering, spør ingeniører ofte Codex om å foreslå tester som dekker kanttilfeller eller sannsynlige feilforløp. For ny kode kan den lage enhets- eller integrasjonstester basert på funksjonssignaturen og omkringliggende logikk.
Codex er spesielt nyttig for å identifisere grensebetingelser som tomme inndata, maksimal lengde eller uvanlige, men gyldige tilstander som ofte blir oversett i de innledende testene.
Anekdoter fra teamene våre
«Jeg lar Codex jobbe med moduler med lav testdekning over natten, og våkner opp til kjørbare PR-er med enhetstester.»
Skriv enhetstester for denne funksjonen, inkludert grensetilfeller og feilscenarier.
Lag en egenskapsbasert test for dette sorteringsverktøyet.
Utvid denne testfilen for å dekke manglende scenarioer knyttet til null-inndata og ugyldige tilstander.
Codex hjelper team med å jobbe raskere ved å fremskynde både starten og slutten av utviklingssyklusen.
Når du setter i gang med en ny funksjon, bruker ingeniører det til å lage boilerplate-kode – ved å generere mapper, moduler og API-stubbing for å få kjørbar kode raskt på plass uten å måtte koble sammen hver enkelt del manuelt.
Når prosjekter nærmer seg lansering, hjelper Codex til med å møte stramme tidsfrister ved å håndtere mindre, men viktige oppgaver som å prioritere feil, fylle de siste implementeringshullene og generere utrullingsskript, telemetrikoblinger eller konfigurasjonsfiler.
Den brukes også til å gjøre produkttilbakemeldinger om til startkode. Ingeniører limer ofte inn en brukerforespørsel eller spesifikasjon og får Codex til å generere et grovt utkast som de kan gå tilbake til og finjustere senere.
«Jeg var i møter hele dagen og slo likevel sammen 4 PR-er fordi Codex jobbet i bakgrunnen.»
Lag en ny API-rute i støttestruktur for POST /hendelser med grunnleggende validering og logging.
Lag en telemetrikrok for å spore suksess eller feil i den nye introduksjonsflyten, bruk denne malen [insert example of your telemetry code].
Lag en implementering basert på denne spesifikasjonen: [insert spec or product feedback].
Codex hjelper ingeniørene våre med å holde seg produktive når timeplanene deres er oppstykket og fulle av avbrytelser.
Det brukes til å fange opp uferdig arbeid, gjøre notater om til fungerende prototyper eller skille ut utforskende oppgaver som kan tas opp igjen senere. Dette gjør det enklere å sette arbeidet på pause og gjenoppta det uten å miste konteksten, spesielt når man har vakt eller mange møter.
«Hvis jeg oppdager en kjapp fiks, kjører jeg heller en Codex-oppgave enn å bytte kontekst, og deretter gjennomgår jeg PR-en når jeg har tid.»
Codex er også nyttig for åpne oppgaver, som å finne alternative løsninger eller validere designvalg. Du kan bruke en ledetekst til å finne ulike måter å løse et problem på, utforske ukjente mønstre eller teste antakelser. Dette hjelper med å synliggjøre avveininger, utvide designvalg og tydeliggjøre implementeringsalternativer.
Det brukes også til å identifisere relaterte feil. Med utgangspunkt i et kjent problem eller en utdatert metode, kan Codex identifisere lignende mønstre andre steder i koden, noe som gjør det enklere å oppdage regresjoner eller fullføre oppryddingsarbeidet.
«Codex hjelper meg med å løse kaldstartproblemet – jeg limer inn en spesifikasjon og dokumentasjon, og den setter opp kodegrunnlaget eller viser meg hva jeg har glemt.»
Hvordan ville dette fungere hvis systemet var hendelsesdrevet i stedet for forespørsel/svar?
Finn alle moduler som bygger SQL-strenger manuelt i stedet for å bruke spørringsbyggeren vår.
Skriv dette om i en mer funksjonell stil, og unngå mutasjon og bivirkninger.
Codex fungerer best når det får struktur, kontekst og rom til å jobbe i flere runder. Her er noen av vanene OpenAI-team jobber med å utvikle for å få stabilt utbytte av det i det daglige arbeidet.
For større endringer bør du starte med å gi Codex en melding om en implementeringsplan ved hjelp av spørremodus, som deretter blir inndata for oppfølgingsmeldinger når du bytter til kodemodus. Denne totrinnsflyten holder Codex på rett spor og bidrar til å unngå feil i resultatene. Codex fungerer best med tydelig avgrensede oppgaver som ville tatt deg eller en kollega omtrent en time å fullføre, eller noen hundre linjer med kode å implementere. Etter hvert som modeller blir bedre, kan du forvente at størrelsen på oppgavene de kan påta seg, vil øke.
Ved å angi et oppstartsskript, miljøvariabler og internettilgang reduseres feilraten til Codex betydelig. Når du kjører oppgaver, må du se etter byggefeil som kan rettes i Codex sitt miljøoppsett. Dette kan kreve noen gjentakelser, men gir betydelige effektivitetsgevinster på sikt.
Codex svarer bedre når en ledetekst gjenspeiler hvordan du ville beskrevet en endring i en PR eller et problem. Det betyr at man inkluderer filbaner, komponentnavn, differ og dokumentutdrag når det er relevant. Ved bruk av mønstre som «Implementer dette på samme måte som det gjøres i [module X]» gir bedre resultater.
Start oppgaver raskt for å fange opp sideideer, uferdig arbeid eller små rettelser underveis. Det er ikke nødvendig å lage en fullstendig PR på én gang. Codex fungerer godt som et mellomområde du kan gå tilbake til når du er fokusert igjen.
Hold en AGENTS.md-fil for å hjelpe Codex med å jobbe mer effektivt i repoet ditt på tvers av ledetekster. Disse filene inkluderer vanligvis navnekonvensjoner, forretningslogikk, kjente særegenheter eller avhengigheter som Codex ikke kan utlede fra koden alene. Finn ut mer om hvordan du kan strukturere AGENTS.md-filen din i dokumentasjonen.
Best-av-N-funksjonen lar deg generere flere svar samtidig for én enkelt oppgave, slik at du raskt kan utforske flere løsninger og velge den beste. For mer kompliserte oppgaver kan du gå gjennom flere iterasjoner og kombinere deler av ulike svar for å få et bedre resultat.
Codex er fortsatt i utprøvingsversjon, men har allerede en reell innvirkning på hvordan vi bygger, ved å hjelpe oss med å jobbe raskere, skrive bedre kode og ta på oss arbeid som ellers aldri ville blitt prioritert.
Vi er spente på potensialet som ligger foran oss – etter hvert som modellene våre blir bedre og Codex blir mer integrert i arbeidsflytene våre, ser vi frem til å finne enda kraftigere måter for å utvikle programvaren. Vi kommer fortsatt til å dele det vi lærer underveis.


