Miten OpenAI käyttää Codexia
Codexia käytetään päivittäin useissa OpenAI:n teknisissä tiimeissä, kuten tietoturva-, tuotekehitys-, käyttöliittymä-, API-, infrastruktuuri- ja suorituskykysuunnittelutiimeissä. Tiimit käyttävät sitä monenlaisten suunnittelutehtävien nopeuttamiseen, kuten monimutkaisten järjestelmien ymmärtämiseen, suurten ymmärtämisestä refaktorointiin, uusien ominaisuuksien toimittamiseen ja häiriötilanteiden ratkaisemiseen tiukkojen määräaikojen puitteissa.
OpenAI-insinöörien haastattelujen ja sisäisten käyttötietojen perusteella olemme koonneet käyttötapauksia ja parhaita käytäntöjä, jotka osoittavat, miten Codex auttaa tiimejämme toimimaan nopeammin, parantamaan työn laatua ja hallitsemaan monimutkaisuutta skaalautuvasti.
Codex auttaa tiimejämme pääsemään nopeasti vauhtiin koodikannan vieraissa osissa käyttöönoton, virheenkorjauksen tai häiriötilanteen selvittämisen yhteydessä.
He käyttävät usein Codexia paikantaakseen ominaisuuden ydinlogiikan, kartoittaakseen palveluiden tai moduulien välisiä suhteita ja jäljittääkseen datan kulkua järjestelmässä. Se auttaa myös tuomaan esiin arkkitehtuurimalleja tai puuttuvia dokumentaation osia, joiden tuottaminen muuten vaatisi huomattavaa manuaalista työtä.
Häiriötilanteisiin reagoinnin aikana Codex auttaa insinöörejä siirtymään nopeasti uusille alueille nostamalla esiin komponenttien välisiä vuorovaikutuksia tai jäljittämällä, miten vikatilat etenevät järjestelmissä.
Kertomuksia tiimeiltämme
”Kun korjaan virheen, käytän Kysy-tilaa nähdäkseni, missä muualla koodikannassa sama ongelma saattaa esiintyä.”
Missä todennuslogiikka on toteutettu tässä repositoriossa?
Tiivistä, miten pyynnöt kulkevat tämän palvelun läpi aloituspisteestä vastaukseen.
Mitkä moduulit ovat vuorovaikutuksessa [lisää moduulin nimi] kanssa ja miten virheet käsitellään?
Codexia käytetään yleisesti muutosten tekemiseen, jotka ulottuvat useisiin tiedostoihin tai paketteihin. Esimerkiksi silloin, kun insinöörit päivittävät API:a, muuttavat mallin toteutustapaa tai siirtyvät uuteen riippuvuuteen, Codex helpottaa muutosten johdonmukaista soveltamista.
Tästä on erityisesti hyötyä silloin, kun sama päivitys on tehtävä kymmeniin tiedostoihin tai kun päivitys edellyttää tuntemusta rakenteesta ja riippuvuuksista, joita ei ole helppo havaita regexillä tai etsi ja korvaa -toiminnolla.
He käyttävät sitä myös koodin siivoamiseen jakamalla liian suuret moduulit, korvaamalla vanhat mallit moderneilla tai valmistelemalla koodia paremmin testattavaksi.
Kertomuksia tiimeiltämme
”Codex vaihtoi kaikki vanhat getUserById()-kutsut uuteen palvelumalliimme ja avasi PR:n.” ”Se teki minuuteissa sen, mikä olisi vienyt tunteja.”
Jaa tämä tiedosto vastuualueittain erillisiin moduuleihin ja luo testit jokaiselle.
Muunna kaikki callback-pohjaiset tietokannan käyttöoikeudet async/wait-tilaan.
Codexia käytetään suorituskyvyn pullonkaulojen tunnistamiseen ja korjaamiseen.
Viritys- tai luotettavuustyön aikana insinöörit pyytävät Codexia analysoimaan hitaita tai paljon muistia kuluttavia koodipolkuja, kuten tehottomia silmukoita, tarpeettomia toimintoja tai raskaita kyselyitä, ja ehdottamaan optimoituja vaihtoehtoja, mikä usein johtaa merkittäviin tehokkuuden ja luotettavuuden parannuksiin.
Codexia käytetään myös koodin kunnon tukemiseen tunnistamalla riskialttiita tai vanhentuneita malleja, jotka ovat edelleen aktiivisessa käytössä. Tiimimme luottavat siihen vähentääkseen pitkäaikaista teknologiavelkaa ja ehkäistäkseen regressioita ennakoivasti.
Kertomuksia tiimeiltämme
”Käytän Codexia havaitakseni toistuvia ja raskaita tietokantakutsuja. Se tunnistaa erinomaisesti kuumat polut ja luonnostelee eräkyselyitä, joita voin myöhemmin optimoida."
Optimoi tämä silmukka muistinkäytön tehostamiseksi ja selitä, miksi versiosi on nopeampi.
Etsi toistuvia raskaita toimintoja tästä pyyntöjen käsittelijästä ja ehdota välimuistiin hyödyntämismahdollisuuksia.
Ehdota nopeampaa tapaa ajaa DB-kyselyt erissä tässä funktiossa.
Codex auttaa insinöörejä kirjoittamaan testejä nopeammin – erityisesti siellä, missä testikattavuus on heikko tai puuttuu kokonaan.
Kun kehittäjät työskentelevät bugikorjauksen tai refaktoroinnin parissa, he pyytävät usein Codexia ehdottamaan testejä, jotka kattavat reunatapaukset tai todennäköiset virhepolut. Uudelle koodille se voi luoda yksikkö- tai integraatiotestejä funktion määrittelyn ja ympäröivän logiikan perusteella.
Codex on erityisen hyödyllinen tunnistettaessa rajaolosuhteita, kuten tyhjiä syötteitä, enimmäispituuksia tai epätavallisia mutta kelvollisia tiloja, jotka usein jäävät huomaamatta alkuvaiheen testeissä.
Kertomuksia tiimeiltämme
”Ohjaan Codexin yöksi matalan kattavuuden moduuleihin ja aamulla odottavat ajettavat yksikkötestien PR:t.”
Kirjoita yksikkötestit tälle funktiolle, mukaan lukien reunatapaukset ja virhepolut.
Laadi ominaisuuspohjainen testi tälle lajittelutyökalulle.
Laajenna tätä testitiedostoa kattamaan puuttuvat skenaariot tyhjien syötteiden ja virheellisten tilojen osalta.
Codex auttaa tiimejä etenemään nopeammin nopeuttamalla sekä kehityssyklin alkua että loppua.
Uuden ominaisuuden kehittämisen alussa insinöörit käyttävät sitä luomaan koodin perusrakenteita – kansioita, moduuleja ja API-luonnoksia, jotta toimiva koodi saadaan nopeasti käyttöön ilman, että jokaista osaa tarvitsee yhdistää käsin.
Projektien lähestyessä julkaisua Codex auttaa pitämään tiukat määräajat hoitamalla pienempiä mutta olennaisia tehtäviä, kuten priorisoimalla virheitä, täyttämällä viimeisiä toteutusaukkoja sekä luomalla käyttöönottoskriptejä, telemetriakytkentöjä tai määritystiedostoja.
Sitä käytetään myös muuntamaan tuotepalaute aloituskoodiksi. Insinöörit liittävät usein käyttäjän pyynnön tai määrityksen, ja Codex luo luonnoksen, jota he voivat tarkentaa myöhemmin.
"Olin kokouksissa koko päivän ja yhdistin silti neljä PR:ää, koska Codex työskenteli taustalla."
Luo uusi API-reitti POST /tapahtumille perusvalidoinnilla ja lokikirjauksella.
Luo telemetriakoukku uuden käyttöönottopolun onnistumisen/epäonnistumisen seurantaan käyttäen tätä mallia [lisää esimerkki telemetriakoodistasi].
Luo alustava toteutus tämän spesifikaation perusteella: [lisää spesifikaatio tai tuotepalaute].
Codex auttaa insinöörejämme pysymään tuottavina silloinkin, kun heidän aikataulunsa ovat pirstaleisia ja täynnä keskeytyksiä.
Sitä käytetään keskeneräisen työn tallentamiseen, muistiinpanojen muuttamiseen toimiviksi prototyypeiksi tai tutkimustehtävien eriyttämiseen, jotta niihin voidaan palata myöhemmin. Tämä helpottaa työn keskeyttämistä ja jatkamista ilman, että konteksti katoaa, erityisesti silloin, kun on päivystysvuorossa tai paljon kokouksia.
”Jos huomaan pikakorjauksen, käynnistän Codex-tehtävän sen sijaan, että vaihtaisin haaraa, ja tarkistan sen PR:n, kun minulla on aikaa.”
Codex on hyödyllinen myös avoimissa tehtävissä, kuten vaihtoehtoisten ratkaisujen löytämisessä tai suunnittelupäätösten validoinnissa. Voit pyytää erilaisia tapoja ratkaista ongelma, tutkia tuntemattomia malleja tai testata oletusten kestävyyttä. Tämä auttaa nostamaan esiin kompromisseja, laajentamaan suunnitteluvaihtoehtoja ja tarkentamaan toteutusvalintoja.
Codexia käytetään myös samankaltaisten virheiden tunnistamiseen. Kun kyseessä on tunnettu ongelma tai vanhentunut menetelmä, Codex voi tunnistaa samankaltaisia malleja muualla koodissa, mikä helpottaa regressioiden löytämistä tai siivoustyön loppuunsaattamista.
”Codex auttaa minua ratkaisemaan kylmäkäynnistysongelman – liitän spesifikaation ja dokumentaation, ja se luo koodirungon tai näyttää, mitä olen unohtanut.”
Miten tämä toimisi, jos järjestelmä olisi tapahtumapohjainen pyyntöjen ja vastausten sijaan?
Etsi kaikki moduulit, jotka luovat SQL-merkkijonoja manuaalisesti kyselytyökalumme käyttämisen sijaan.
Kirjoita tämä uudelleen toiminnallisempaan tyyliin, vältä mutaatiota ja sivuvaikutuksia.
Codex toimii parhaiten, kun sille annetaan rakennetta, kontekstia ja tilaa iteroida. Tässä on joitakin tapoja, joita OpenAI:n tiimit vaalivat saadakseen siitä johdonmukaisesti hyötyä päivittäisessä työssä.
Suurten muutosten yhteydessä aloita pyytämällä Codexilta toteutussuunnitelma Kysy-tilassa. Tämä suunnitelma toimii syötteenä jatkokehotteille, kun siirryt Koodi-tilaan. Tämä kaksivaiheinen työnkulku pitää Codexin hallinnassa ja auttaa välttämään virheitä sen tuotoksissa. Codex toimii parhaiten tarkkaan määriteltyjen tehtävien parissa, joiden suorittamiseen sinulta tai tiimikaveriltasi kuluisi noin tunti tai joiden toteuttamiseen tarvittaisiin muutama sata riviä koodia. Mallien kehittyessä on odotettavissa, että sen hoitamien tehtävien laajuus kasvaa.
Käynnistyskomentosarjan, ympäristömuuttujien ja internetyhteyden määrittäminen vähentää Codex virheiden määrää merkittävästi. Kun suoritat tehtäviä, etsi koontivirheitä, jotka voidaan korjata Codexin ympäristömäärityksissä. Tämä saattaa vaatia muutaman iteraation mutta tuo pitkällä aikavälillä huomattavia tehokkuushyötyjä.
Codex vastaa paremmin, kun kehote vastaa sitä, miten kuvailisit muutosta PR:ssä tai ongelmassa. Tämä tarkoittaa tiedostopolkujen, komponenttien nimien, erojen ja dokumenttikatkelmien sisällyttämistä tarvittaessa. Kehottaminen malleilla, kuten ”Toteuta tämä samalla tavalla kuin se on tehty [moduulissa X]”, parantaa tuloksia.
Käynnistä tehtäviä tallentaaksesi sivuajatuksia, keskeneräisiä töitä tai satunnaisia korjauksia. Kokonaista PR:ää ei tarvitse tehdä yhdellä kertaa. Codex toimii hyvin välivaiheena, johon voit palata, kun voit taas keskittyä.
Pidä yllä AGENTS.md-tiedostoa, jotta Codex voi toimia tehokkaammin repositiossasi eri kehotteiden välillä. Nämä tiedostot sisältävät yleensä nimeämiskäytäntöjä, liiketoimintalogiikkaa, tunnettuja erityispiirteitä tai riippuvuuksia, joita Codex ei pysty päättelemään pelkästään koodista. Lue lisää AGENTS.md-tiedoston jäsentämisestä tutustumalla dokumentteihin.
Best-of-N-ominaisuuden avulla voit luoda samanaikaisesti useita vastauksia yhteen tehtävään, jotta voit nopeasti tutkia useita ratkaisuja ja valita niistä parhaan. Monimutkaisemmissa tehtävissä voit tarkastella useita iteraatioita ja yhdistellä eri vastausten osia saadaksesi paremman lopputuloksen.
Codex on edelleen tutkimusvaiheessa, mutta se vaikuttaa jo konkreettisesti siihen, miten rakennamme. Se auttaa meitä etenemään nopeammin, kirjoittamaan parempaa koodia ja tarttumaan tehtäviin, joita ei muuten olisi koskaan priorisoitu.
Olemme innoissamme tulevista mahdollisuuksista – kun mallimme kehittyvät ja Codex integroituu syvemmin työnkulkuihimme, odotamme innolla entistä tehokkaampia tapoja kehittää ohjelmistoja sen avulla. Jaamme edelleen oppimaamme matkan varrella.


