Hur OpenAI använder Codex
Codex används varje dag av många tekniska team på OpenAI, till exempel Security, Product Engineering, Frontend, API, Infrastructure och Performance Engineering. Teamen använder det för att påskynda en rad tekniska uppgifter, från att förstå komplexa system och omstrukturera stora kodbaser till att lansera nya funktioner och lösa incidenter under snäva tidsramar.
Med utgångspunkt i intervjuer med OpenAI-ingenjörer och interna användningsdata har vi sammanställt användningsfall och goda exempel som visar hur Codex hjälper våra team att arbeta snabbare, förbättra arbetets kvalitet och hantera komplexitet i stor skala.
Codex hjälper våra team att snabbt komma igång i obekanta delar av kodbasen vid introduktion, felsökning eller incidentutredning.
De använder ofta Codex för att hitta kärnlogiken i en funktion, kartlägga relationer mellan tjänster eller moduler och följa dataflödet genom ett system. Det hjälper också till att identifiera arkitekturmönster eller saknade delar i dokumentationen som annars skulle kräva omfattande manuellt arbete att skapa.
Under incidenthantering hjälper Codex ingenjörer att snabbt sätta sig in i nya områden genom att lyfta fram interaktioner mellan komponenter och spåra hur felaktiga tillstånd sprider sig genom systemen.
Anekdoter från våra team
”När jag åtgärdar ett fel använder jag frågeläge för att se var mer i kodbasen samma problem kan dyka upp”
Var är autentiseringslogiken implementerad i det här förvaret?
Sammanfatta hur förfrågningar flödar genom den här tjänsten från inmatning till svar.
Vilka moduler interagerar med [ange modulnamn] och hur hanteras fel?
Codex används ofta till att göra ändringar som sträcker sig över flera filer eller paket. Till exempel när utvecklare uppdaterar ett API, ändrar hur ett mönster implementeras eller migrerar till ett nytt beroende gör Codex det enkelt att genomföra ändringar konsekvent.
Det är särskilt användbart när samma uppdatering behöver göras i dussintals filer eller när uppdateringen kräver förståelse för struktur och beroenden som inte enkelt fångas upp med en regex eller sök/ersätt.
De använder den också för rensning av kod genom att dela upp för stora moduler, ersätta äldre mönster med moderna eller förbereda kod för bättre testbarhet.
Anekdoter från våra team
Codex bytte ut alla äldre getUserById( ) mot vårt nya tjänstmönster och öppnade PR:n. Det som skulle ha tagit timmar gjorde den på några minuter.”
Dela upp den här filen i separata moduler efter ansvarsområde och generera tester för var och en.
Konvertera all callback-baserad databasåtkomst till async/await.
Codex används för att identifiera och åtgärda prestandaflaskhalsar.
Under trimnings- eller tillförlitlighetsarbete använder ingenjörer Codex för att analysera långsamma eller minnesintensiva kodvägar, till exempel ineffektiva loopar, redundanta operationer eller resurskrävande frågor, och föreslå optimerade alternativ som ofta leder till betydande förbättringar i effektivitet och tillförlitlighet.
Codex används också för att stärka kodhälsa genom att identifiera riskfyllda eller föråldrade mönster som fortfarande används aktivt. Våra team förlitar sig på det för att bidra till att minska långsiktig teknisk skuld och proaktivt förhindra regressioner.
Anekdoter från våra team
"Jag använder Codex för att leta efter upprepade, dyra DB-anrop. Den är riktigt bra på att flagga prestandakritiska kodvägar och att utforma batchfrågor som jag kan finjustera senare."
Optimera den här loopen för bättre minnesanvändning och förklara varför din version är snabbare.
Hitta upprepade kostsamma operationer i den här förfrågningshanteraren och föreslå cachningsmöjligheter.
Föreslå ett snabbare sätt att batcha databasanrop i den här funktionen.
Codex hjälper ingenjörer att skriva tester snabbare – särskilt i områden där testtäckningen är otillräcklig eller helt saknas.
När de arbetar med en buggfix eller omfaktorering ber tekniker ofta Codex att föreslå tester som täcker gränsfall eller sannolika felvägar. För ny kod kan den generera enhets- eller integrationstester baserat på funktionssignaturen och den omgivande logiken.
Codex är särskilt användbart för att identifiera gränsvillkor som tomma indata, maximal längd eller ovanliga men giltiga tillstånd som ofta förbises i de första testerna.
Anekdoter från våra team
”Jag använder Codex för att analysera moduler med låg testtäckning över natten och vaknar upp till körbara PR:er med enhetstester.”
Skriv enhetstester för den här funktionen, inklusive gränsfall och felhantering.
Skapa ett egenskapsbaserat test för det här sorteringsverktyget.
Utöka den här testfilen för att täcka saknade scenarier med null-indata och ogiltiga tillstånd.
Codex hjälper team att arbeta snabbare genom att påskynda utvecklingscykeln både i början och i slutet.
När ingenjörer påbörjar en ny funktion använder de verktyget för att skapa standardkod – generera mappar, moduler och API-stubbar för att snabbt få fram körbar kod utan att manuellt behöva koppla ihop varje del.
När projekt närmar sig lansering hjälper Codex till att hålla snäva tidsfrister genom att hantera mindre men viktiga uppgifter som att prioritera buggar, åtgärda sista implementeringsdetaljer och skapa utrullningsskript, telemetrianslutningar eller konfigurationsfiler.
Det används också för att omvandla produktfeedback till startkod. Ingenjörer klistrar ofta in en användarförfrågan eller specifikation och låter Codex generera ett grovt utkast som de kan återvända till och förfina senare.
”Jag satt i möten hela dagen men slog ändå ihop fyra PR:er eftersom Codex arbetade i bakgrunden.”
Skapa en ny API-rutt för POST/events med grundläggande validering och loggning.
Generera en telemetrihook för att spåra lyckade/misslyckade utfall i det nya onboardingflödet, med den här mallen [infoga exempel på din telemetrikod].
Skapa en tillfällig implementering baserat på denna specifikation: [infoga specifikation eller produktfeedback].
Codex hjälper våra ingenjörer att förbli produktiva när deras scheman är splittrade och fyllda med avbrott.
Det används för att fånga upp ofärdigt arbete, omvandla anteckningar till fungerande prototyper eller skapa fristående utforskande uppgifter som kan återbesökas senare. Det gör det lättare att pausa och återuppta arbetet utan att tappa sammanhanget, särskilt när de har beredskap eller många möten.
”Om jag upptäcker en snabbkorrigering startar jag en Codex-uppgift istället för att byta gren och granskar dess PR när jag har tid.”
Codex är också användbart för öppna uppgifter, till exempel att hitta alternativa lösningar eller att validera designbeslut. Du kan prompta för olika sätt att lösa ett problem, utforska okända mönster eller testa antaganden under press. Detta hjälper till att synliggöra kompromisser, bredda designalternativen och förtydliga implementeringsval.
Det används också för att identifiera relaterade fel. Om du har ett känt problem eller en utfasad metod kan Codex identifiera liknande mönster på andra ställen i koden, vilket gör det enklare att upptäcka regressioner eller städa i koden.
Codex hjälper mig att lösa kallstartsproblemet – jag klistrar in en specifikation och dokumentation, och den skapar kodstommen eller visar vad jag har glömt.
Hur skulle detta fungera om systemet var händelsestyrt i stället för begäran/svar?
Hitta alla moduler som manuellt bygger SQL-strängar istället för att använda vår frågebyggare.
Skriv om detta i en mer funktionell stil och undvik mutationer och bieffekter.
Codex fungerar bäst när det finns struktur, kontext och utrymme för iteration. Här är några av de vanor som OpenAI-teamen använder för att få ett jämnt värde av det i det dagliga arbetet.
Vid större ändringar bör du börja med att be Codex om en implementeringsplan med hjälp av frågeläget, som sedan blir indata för uppföljande prompten när du växlar till kodläget. Det här tvåstegsflödet hjälper Codex att behålla förankringen och undvika fel i dess utdata. Codex fungerar bäst med tydligt avgränsade uppgifter som tar dig eller en kollega ungefär en timme att slutföra eller några hundra rader kod att implementera. I takt med att modellerna förbättras kan de ta sig an större uppgifter.
Att konfigurera ett startskript, miljövariabler och internetåtkomst minskar Codex felfrekvens avsevärt. När du kör uppgifter ska du leta efter byggfel som kan åtgärdas i Codex miljökonfiguration. Detta kan kräva några itereringar men ger betydande effektivitetsvinster på lång sikt.
Codex svarar bättre när prompten efterliknar hur du skulle beskriva en ändring i en PR eller ett ärende. Det innebär att inkludera filsökvägar, komponentnamn, diffar och dokumentationsutdrag när det är relevant. Att formulera prompter med mönster som ”Implementera detta på samma sätt som det görs i [modul X]” ger bättre resultat.
Starta uppgifter för att fånga upp sidospårsidéer, delvis färdigt arbete eller mindre korrigeringar. Du behöver inte känna någon press att generera en fullständig PR på en gång. Codex fungerar bra som en mellanlandningsplats som du kan återvända till när du har fokus igen.
Använd en AGENTS.md-fil för att hjälpa Codex att arbeta mer effektivt i ditt förvar mellan olika prompter. Dessa filer innehåller vanligtvis namngivningskonventioner, affärslogik, kända egenheter eller beroenden som Codex inte kan utläsa enbart från koden. Läs mer om hur du strukturerar din AGENTS.md-fil i dokumentationen.
Best-of-N-funktionen gör att du kan generera flera svar samtidigt för en och samma uppgift, så att du snabbt kan utforska flera lösningar och välja den bästa. För mer komplicerade uppgifter kan du granska flera itereringar och kombinera delar av olika svar för att få ett bättre resultat.
Codex är fortfarande i förhandsgranskning i forskningssyfte, men har redan en verklig inverkan på hur vi bygger, hjälper oss att arbeta snabbare, skriva bättre kod och ta oss an arbete som annars aldrig skulle ha prioriterats.
Vi ser fram emot den potential som ligger framför oss – i takt med att våra modeller förbättras och Codex integreras djupare i våra arbetsflöden ser vi fram emot att upptäcka ännu mer kraftfulla sätt att utveckla programvara med det. Vi kommer att fortsätta dela med oss av det vi lär oss längs vägen.


