Kā OpenAI izmanto Codex
Codex ikdienā izmanto daudzas OpenAI tehniskās komandas, piemēram, drošības, produktu inženierijas, Frontend, API, infrastruktūras un veiktspējas inženierijas komandas. Komandas to izmanto, lai paātrinātu dažādus inženierijas uzdevumus, sākot ar sarežģītu sistēmu izpratni un lielu kodu bāzu pārveidošanu līdz jaunu funkciju piegādei un incidentu risināšanai saspringtos termiņos.
Balstoties uz intervijām ar OpenAI inženieriem un iekšējiem lietojuma datiem, esam apkopojuši lietošanas gadījumus un paraugprakses, kas parāda, kā Codex palīdz mūsu komandām strādāt ātrāk, uzlabot darba kvalitāti un pārvaldīt sarežģītību plašā mērogā.
Codex palīdz mūsu komandām ātri orientēties nepazīstamās koda bāzes daļās, veicot ievadīšanu, atkļūdošanu vai incidentu izmeklēšanu.
Viņi bieži izmanto Codex, lai atrastu funkcijas pamatloģiku, izveidotu attiecību karti starp pakalpojumiem vai moduļiem un izsekotu datu plūsmu sistēmā. Tas arī palīdz atklāt arhitektūras modeļus vai trūkstošās dokumentācijas daļas, kuru sagatavošana citādi prasītu ievērojamu manuālu darbu.
Incidentu risināšanas laikā Codex palīdz inženieriem ātri apgūt jaunas jomas, izceļot komponentu mijiedarbību vai izsekojot, kā kļūmju stāvokļi izplatās starp sistēmām.
Stāsti no mūsu komandām
“Kad novēršu kļūdu, es izmantoju Ask režīmu, lai redzētu, kur vēl koda bāzē tā pati problēma varētu parādīties”
Kur šajā repozitorijā ir ieviesta autentifikācijas loģika?
Apkopo, kā pieprasījumi plūst caur šo pakalpojumu no ieejas punkta līdz atbildei.
Kuri moduļi mijiedarbojas ar [ievietot moduļa nosaukumu], un kā tiek apstrādātas kļūmes?
Codex parasti izmanto, lai veiktu izmaiņas, kas aptver vairākus failus vai pakotnes. Piemēram, kad inženieri atjaunina API, maina veidu, kā tiek īstenots kāds modelis, vai pāriet uz jaunu atkarību, Codex ļauj viegli un konsekventi ieviest izmaiņas.
Tas ir īpaši noderīgi, ja viens un tas pats atjauninājums ir jāveic desmitiem failu, vai ja atjauninājumam ir nepieciešama izpratne par struktūru un atkarībām, ko nav viegli uztvert ar regex vai meklēšanas un aizstāšanas funkciju.
Viņi to izmanto arī koda tīrīšanai, sadalot pārāk lielus moduļus, aizstājot vecos modeļus ar mūsdienīgiem vai sagatavojot kodu labākai testējamībai.
Stāsti no mūsu komandām
“Codex aizstāja visus mantotos getUserById( ) ar mūsu jauno servisa modeli un izveidoja pieprasījumu pārskatīšanai (PR). Tas paveica minūtēs to, kas būtu prasījis stundas.”
sadali šo failu atsevišķos moduļos pēc atbildības jomām un izveido testus katram no tiem.
pārveido visu uz atzvanu balstīto datubāzes piekļuvi uz async/await.
Codex tiek izmantots, lai identificētu un novērstu veiktspējas problēmas.
Veiktspējas optimizācijas vai uzticamības uzlabošanas laikā inženieri dod Codex uzvedni analizēt lēnus vai atmiņietilpīgus koda ceļus, piemēram, neefektīvas cilpas, liekas darbības vai dārgus vaicājumus, un ieteikt optimizētas alternatīvas, kas bieži vien būtiski uzlabo efektivitāti un uzticamību.
Codex tiek izmantots arī, lai atbalstītu koda veselību, identificējot riskantus vai novecojušus modeļus, kas joprojām tiek aktīvi izmantoti. Mūsu komandas paļaujas uz to, lai palīdzētu samazināt ilgtermiņa tehnisko parādu un proaktīvi novērst regresijas.
Stāsti no mūsu komandām
“Es izmantoju Codex, lai meklētu atkārtotus dārgus datubāzes (DB) izsaukumus. Tas lieliski spēj iezīmēt karstos ceļus un izveidot grupētus vaicājumus, kurus vēlāk varu pielāgot.
optimizē šo ciklu atmiņas efektivitātei un paskaidro, kāpēc tava versija ir ātrāka.
atrodi šajā pieprasījuma apstrādātājā atkārtotas resursietilpīgas darbības un iesaki kešatmiņas iespējas.
iesaki ātrāku veidu, kā apstrādāt DB vaicājumus partijās šajā funkcijā.
Codex palīdz inženieriem ātrāk rakstīt testus — īpaši vietās, kur testa pārklājums ir nepietiekams vai tā vispār nav.
Strādājot pie kļūdu labojuma vai refaktorēšanas, inženieri bieži lūdz Codex ieteikt testus, kas aptver robežgadījumus vai iespējamos kļūmju scenārijus. Jaunam kodam tas var ģenerēt vienības vai integrācijas testus, pamatojoties uz funkcijas signatūru un apkārtējo loģiku.
Codex ir īpaši noderīgs, lai identificētu robežnosacījumus, piemēram, tukšas ievades, maksimālo garumu vai neparastus, bet derīgus stāvokļus, kas sākotnējos testos bieži tiek palaisti garām.
Stāsti no mūsu komandām
“Es pa nakti lieku Codex strādāt ar moduļiem, kuriem ir zems testu pārklājums, un no rīta pamostos ar palaižamiem vienību testu pieprasījumiem PR.”
izveido vienību testus šai funkcijai, iekļaujot robežgadījumus un kļūmju gadījumus.
ģenerē īpašību testu šai kārtošanas utilītai.
paplašini šo testa failu, lai aptvertu trūkstošos scenārijus saistībā ar nulles ievadēm un nederīgām situācijām.
Codex palīdz komandām strādāt ātrāk, paātrinot gan izstrādes cikla sākumu, gan noslēgumu.
Uzsākot jaunas funkcijas izstrādi, inženieri to izmanto, lai izveidotu pamata struktūru — ģenerējot mapes, moduļus un API sagataves, lai ātri iegūtu izpildāmu kodu, manuāli nesavienojot katru daļu.
Tuvojoties projektu laidienam, Codex palīdz ievērot saspringtus termiņus, veicot mazākus, bet būtiskus uzdevumus, piemēram, kļūdu šķirošanu, pēdējā posma ieviešanas nepilnību aizpildīšanu un ieviešanas skriptu, telemetrijas piesaistes punktu vai konfigurācijas failu ģenerēšanu.
To izmanto arī, lai produktu atsauksmes pārvērstu sākuma kodā. Inženieri bieži ielīmē lietotāja pieprasījumu vai specifikāciju un ļauj Codex izveidot sākotnēju melnrakstu, pie kura vēlāk var atgriezties un to pilnveidot.
“Es visu dienu biju sapulcēs un tik un tā sapludināju 4 PR, jo Codex darbojās fonā.”
izveido jauna API maršruta POST /events sagatavi ar pamata validāciju un reģistrēšanu.
Izveido telemetrijas rīku jaunās ievadplūsmas veiksmes/neveiksmes izsekošanai, izmantojot šo veidni [ievieto savas telemetrijas koda piemēru].
Izveido sagataves ieviešanu, pamatojoties uz šo specifikāciju: [ievieto specifikāciju vai produkta atsauksmes].
Codex palīdz mūsu inženieriem saglabāt produktivitāti, kad viņu grafiki ir sadrumstaloti un pilni ar pārtraukumiem.
To izmanto, lai fiksētu nepabeigtu darbu, pārvērstu piezīmes par funkcionējošiem prototipiem vai izveidotu izpētes uzdevumus, pie kuriem vēlāk var atgriezties. Tas atvieglo darba apturēšanu un atsākšanu, nezaudējot kontekstu, īpaši, ja viņiem ir dežūra vai daudz sanāksmju.
“Ja pamanu ātru pa ceļam veicamu labojumu, es palaižu Codex uzdevumu, nevis pārslēdzos starp zariem, un pārskatu tā pieprasījumu PR, kad man ir laiks.”
Codex ir noderīgs arī atvērtiem uzdevumiem, piemēram, alternatīvu risinājumu atrašanai vai dizaina lēmumu apstiprināšanai. Vari izmantot uzvednes, lai atrastu dažādus problēmas risināšanas veidus, izpētītu nepazīstamus modeļus vai pārbaudītu pieņēmumus. Tas palīdz izcelt kompromisus, paplašināt dizaina iespējas un precizēt ieviešanas izvēles.
To izmanto arī, lai identificētu saistītās kļūdas. Ja ir zināma problēma vai novecojusi metode, Codex var identificēt līdzīgus modeļus citviet kodā, atvieglojot regresiju pamanīšanu vai tīrīšanas darbu pabeigšanu.
“Codex palīdz man atrisināt aukstā starta problēmu — es ielīmēju specifikāciju un dokumentāciju, un tas izveido koda karkasu vai norāda, ko esmu aizmirsis.”
kā tas darbotos, ja sistēma būtu notikumu vadīta, nevis pieprasījuma/atbildes tipa?
atrodi visus moduļus, kas manuāli veido SQL virknes, nevis izmanto mūsu vaicājumu veidotāju.
pārraksti to funkcionālākā stilā, izvairies no mutācijām un blaknēm.
Codex darbojas vislabāk, ja tam tiek nodrošināta struktūra, konteksts un iespēja iterēt. Šeit ir daži no ieradumiem, ko OpenAI komandas veido, lai ikdienas darbā no tā gūtu konsekventu vērtību.
Lielu izmaiņu gadījumā sāc ar to, ka Ask mode režīmā lūdz Codex sagatavot ieviešanas plānu, kas pēc tam kļūst par ievadi turpmākajām uzvednēm, kad pārslēdzies uz Code Mode. Šī divpakāpju plūsma palīdz Codex saglabāt piesaisti kontekstam un izvairīties no kļūdām tā izvadē. Codex vislabāk darbojas ar labi definētiem uzdevumiem, kuru izpilde tev vai komandas biedram aizņemtu aptuveni stundu vai kuru īstenošanai būtu nepieciešami daži simti koda rindiņu. Modeļiem uzlabojoties, var sagaidīt, ka palielināsies to uzdevumu apjoms, ko tie var uzņemties.
Palaišanas skripta, vides mainīgo un piekļuves internetam iestatīšana ievērojami samazina Codex kļūdu īpatsvaru. Izpildot uzdevumus, meklē veidošanas kļūdas, kuras var novērst Codex vides konfigurācijā. Tas var prasīt dažas iterācijas, taču ilgtermiņā sniedz būtiskus efektivitātes ieguvumus.
Codex sniedz labākas atbildes, ja uzvednes atspoguļo to, kā tu aprakstītu izmaiņas pieprasījumā PR vai problēmas pieteikumā. Tas nozīmē iekļaut failu ceļus, komponentu nosaukumus, atšķirības un dokumentācijas fragmentus, ja attiecināms. Uzvedņu formulēšana, izmantojot tādus paraugus kā “Ievies to tāpat, kā tas ir darīts [modulī X]”, uzlabo rezultātus.
Palaid uzdevumus, lai fiksētu blakus idejas, daļēji paveiktu darbu vai nejaušus labojumus. Nav jāsteidzas vienā piegājienā izveidot pilnu pieprasījumu PR. Codex labi darbojas kā vieta, kurā vari atgriezties, kad atkal vari koncentrēties.
Uzturi AGENTS.md failu, lai Codex varētu efektīvāk darboties tavā repozitorijā dažādās uzvednēs. Šie faili parasti ietver nosaukumu piešķiršanas konvencijas, biznesa loģiku, zināmas īpatnības vai atkarības, ko Codex nevar secināt tikai no koda. Uzzini vairāk par sava AGENTS.md faila strukturēšanu dokumentācijā.
Best-of-N funkcionalitāte ļauj vienlaikus ģenerēt vairākas atbildes vienam uzdevumam, lai ātri izpētītu vairākus risinājumus un izvēlētos vispiemērotāko. Sarežģītākiem uzdevumiem tu vari pārskatīt vairākas iterācijas un apvienot dažādu atbilžu daļas, lai iegūtu spēcīgāku rezultātu.
Codex joprojām ir pētījumu priekšskatījuma versijā, taču tas jau būtiski ietekmē to, kā mēs veidojam, palīdzot mums strādāt ātrāk, rakstīt labāku kodu un uzņemties darbu, kas citādi nekad nebūtu prioritizēts.
Mūs sajūsmina priekšā esošais potenciāls — mūsu modeļiem kļūstot arvien labākiem un Codex arvien dziļāk integrējoties mūsu darbplūsmās, mēs ar nepacietību gaidām iespēju atklāt vēl jaudīgākus veidus, kā ar to izstrādāt programmatūru. Mēs turpināsim dalīties ar to, ko uzzinām šajā ceļā.


