Hogyan használja az OpenAI a Codexet
A Codexet naponta használják az OpenAI különböző technikai csapatai, például a biztonság, a termékfejlesztés, a frontend, az API, az infrastruktúra és a teljesítményfejlesztés területén. A csapatok arra használják, hogy felgyorsítsák a különféle fejlesztői feladatokat, az összetett rendszerek megértésétől és a nagy kódbázisok refaktorálásától kezdve az új funkciók kiadásán át a szoros határidők mellett felmerülő incidensek elhárításáig.
Az OpenAI mérnökeivel készített interjúkra és a belső használati adatokra támaszkodva összegyűjtöttük azokat a felhasználási eseteket és bevált gyakorlatokat, amelyek bemutatják, hogyan segíti a Codex a csapatainkat abban, hogy gyorsabban haladjanak, javítsák a munka minőségét, és nagy léptékben kezeljék az összetettséget.
A Codex segít a csapatainknak gyorsan eligazodni a kódbázis ismeretlen részein, legyen szó betanulásról, hibakeresésről vagy egy incidens kivizsgálásáról.
Gyakran használják a Codexet egy funkció alapvető logikájának megtalálására, a szolgáltatások vagy modulok közötti kapcsolatok feltérképezésére, valamint az adatok rendszerben való áramlásának nyomon követésére. Segít feltárni az architektúramintákat és a dokumentáció hiányzó részeit is, amelyek előállítása egyébként jelentős manuális erőfeszítést igényelne.
Az incidenskezelés során a Codex segít a fejlesztőknek gyorsan eligazodni új területeken azáltal, hogy feltárja az összetevők közötti interakciókat, illetve nyomon követi, hogyan terjednek a hibás állapotok a rendszerek között.
Történetek a csapatainktól
„Amikor kijavítok egy hibát, az Ask módot használom, hogy lássam, hol fordulhat még elő ugyanez a probléma a kódbázisban”
Hol van a hitelesítési logika implementálva ebben a repozitóriumban?
Foglald össze, hogyan haladnak át a kérések ezen a szolgáltatáson a belépési ponttól a válaszig.
Mely modulok lépnek kapcsolatba a(z) [insert module name] modullal, és hogyan kezelik a hibákat?
A Codexet gyakran használják olyan módosítások elvégzésére, amelyek több fájlon vagy csomagon átívelnek. Például amikor a fejlesztők egy API-t frissítenek, módosítják egy minta megvalósításának módját, vagy egy új függőségre migrálnak, a Codex megkönnyíti a módosítások következetes alkalmazását.
Különösen hasznos, ha ugyanazt a frissítést több tucat fájlban kell elvégezni, vagy ha a frissítéshez olyan szintű struktúra- és függőségismeret szükséges, amelyet egy regex vagy a keresés és csere nem tud könnyen kezelni.
Arra is használják, hogy kódtisztítást végezzenek túlméretezett modulok felosztásával, régi minták modernekre cserélésével, vagy a kód jobb tesztelhetőségre való előkészítésével.
Történetek a csapatainktól
„A Codex kicserélte az összes régi getUserById( )-t az új szolgáltatási mintánkra, és megnyitotta a pull requestet. Percek alatt elvégezte azt, ami órákig tartott volna.”
Oszd fel ezt a fájlt funkció szerint elkülönülő modulokra, és készíts teszteket mindegyikhez.
Alakítsd át az összes visszahívásalapú adatbázis-hozzáférést async/await használatára.
A Codexet arra használják, hogy azonosítsák és kezeljék a teljesítmény akadályait.
A teljesítményhangolás vagy a megbízhatóság javítása során a fejlesztők arra utasítják a Codexet, hogy elemezze a lassú vagy nagy memóriaigényű kódrészleteket, például a nem hatékony ciklusokat, a redundáns műveleteket vagy a költséges lekérdezéseket, és javasoljon optimalizált alternatívákat, ami gyakran számottevő javulást eredményez a hatékonyság és a megbízhatóság terén.
A Codexet a kód egészségének fenntartására is használják, mivel azonosítja a kockázatos vagy elavult mintákat, amelyek még mindig aktívan használatban vannak. Csapataink arra támaszkodnak, hogy csökkentsék a hosszú távú technikai adósságot, és megelőzzék a visszaeséseket.
Történetek a csapatainktól
„A Codexet használom az ismétlődő, költséges DB-hívások felderítésére. Nagyszerűen azonosítja a kritikus útvonalakat, és kötegelt lekérdezéseket készít, amelyeket később finomhangolhatok.”
Optimalizáld ezt a ciklust memóriahatékonyság szempontjából, és magyarázd el, miért gyorsabb a változatod.
Keresd meg az ismétlődő, költséges műveleteket ebben a kéréskezelőben, és javasolj gyorsítótárazási lehetőségeket.
Javasolj egy gyorsabb módot az adatbázis-lekérdezések kötegelt futtatására ebben a függvényben.
A Codex segít a fejlesztőknek gyorsabban teszteket írni — különösen ott, ahol a lefedettség gyenge vagy teljesen hiányzik.
Hibajavítás vagy refaktorálás során a fejlesztők gyakran kérik a Codexet, hogy javasoljon olyan teszteket, amelyek lefedik a szélsőséges eseteket vagy a valószínű hibautakat. Új kód esetén a függvényszignatúra és a környező logika alapján egység- vagy integrációs teszteket tud generálni.
A Codex különösen hasznos az olyan határfeltételek azonosításában, mint az üres bemenetek, a maximális hossz vagy a szokatlan, de érvényes állapotok, amelyek gyakran kimaradnak a kezdeti tesztekből.
Történetek a csapatainktól
„Egy éjszakára ráirányítom a Codexet az alacsony lefedettségű modulokra, és reggelre futtatható egységtesztes pull requestek várnak.”
Írj egységteszteket ehhez a függvényhez, beleértve a szélsőséges eseteket és a hibautakat is.
Generálj tulajdonság-alapú tesztet ehhez a rendezési segédprogramhoz.
Bővítsd ki ezt a tesztfájlt, hogy lefedje a hiányzó eseteket a null bemenetekkel és az érvénytelen állapotokkal kapcsolatban.
A Codex segít a csapatoknak gyorsabban haladni a fejlesztési ciklus elejének és végének felgyorsításával.
Amikor egy új funkció fejlesztésébe kezdenek, a fejlesztők ezt boilerplate kódváz létrehozására használják—mappák, modulok és API-csonkok generálására, hogy gyorsan futtatható kód álljon elő anélkül, hogy minden elemet kézzel kellene összekötni.
Ahogy a projektek közelednek a kiadáshoz, a Codex segít tartani a szoros határidőket az olyan kisebb, de nélkülözhetetlen feladatok elvégzésével, mint a hibák osztályozása (triázs), az utolsó implementációs hiányosságok pótlása, valamint bevezetési szkriptek, telemetriai hookok vagy konfigurációs fájlok generálása.
Arra is használják, hogy a termékkel kapcsolatos visszajelzéseket kezdő kóddá alakítsák. A fejlesztők gyakran beillesztenek egy felhasználói kérést vagy specifikációt, és a Codexszel készíttetnek egy kezdeti vázlatot, amelyhez később visszatérhetnek és tovább finomíthatják.
„Egész nap megbeszéléseken voltam, és mégis 4 pull requestet egyesítettem, mert a Codex a háttérben dolgozott.”
Hozz létre egy új API-útvonalat a POST /events számára alapvető érvényesítéssel és naplózással.
Hozz létre egy telemetriai eszközt az új bevezetési folyamat sikerének vagy kudarcának nyomon követésére, ezt a sablont használva [illeszd be a telemetriai kódod példáját].
Készíts egy csonkmegvalósítást a specifikáció alapján: [illeszd be a specifikációt vagy a termékkel kapcsolatos visszajelzést].
A Codex segít a fejlesztőinknek megőrizni a produktivitásukat, amikor az időbeosztásuk széttöredezett és megszakításokkal teli.
Arra használják, hogy rögzítsék a befejezetlen munkákat, a jegyzeteket működő prototípusokká alakítsák, vagy olyan feltáró feladatokat indítsanak el, amelyekhez később visszatérhetnek. Ez megkönnyíti, hogy megszakítsák, majd folytassák a munkát anélkül, hogy elveszítenék a kontextust, különösen akkor, ha ügyeletben vannak vagy sok megbeszélésük van.
„Ha észreveszek egy gyors javítást, inkább elindítok egy Codex-feladatot ahelyett, hogy átváltanék egy másik branch-re, és amikor ráérek, átnézem a pull requestet.”
A Codex szintén hasznos nyitott végű feladatokhoz, például alternatív megoldások kereséséhez vagy tervezési döntések ellenőrzéséhez. Kérheted, hogy különböző módokon oldjon meg egy problémát, tárjon fel ismeretlen mintákat, vagy próbára tegye a feltevéseidet. Ez segít feltárni a kompromisszumokat, bővíti a tervezési lehetőségeket, és pontosítja a megvalósítási döntéseket.
Arra is használják, hogy azonosítsák a kapcsolódó hibákat. Egy ismert probléma vagy elavult módszer alapján a Codex képes azonosítani hasonló mintákat a kód más részein, így könnyebb felismerni a regressziókat vagy befejezni a tisztítási munkát.
„A Codex segít megoldani a hidegindítási problémát – beillesztem a specifikációt és a dokumentációt, és a program felépíti a kódot, vagy megmutatja, mit felejtettem el.”
Hogyan működne ez, ha a rendszer eseményvezérelt lenne a kérés/válasz (request/response) helyett?
Keresd meg az összes modult, amely manuálisan SQL-karakterláncokat épít a lekérdezéskészítőnk használata helyett.
Írd át ezt funkcionálisabb stílusban, kerüld az állapotmódosítást és a mellékhatásokat.
A Codex akkor működik a legjobban, ha megfelelő struktúrát, kontextust és teret kap az iterációhoz. Íme néhány olyan szokás, amelyet az OpenAI csapatai azért alakítanak ki, hogy a mindennapi munkában következetesen értéket nyújtsanak.
Nagyobb változtatások esetén kezdd azzal, hogy az Ask módot használva megkéred a Codexet egy megvalósítási terv elkészítésére, amely aztán bemenetként szolgál a további utasításokhoz, amikor átváltasz a Code módra. Ez a kétlépéses folyamat segít a Codex valósághoz kötésében, és elkerülni a kimenetében előforduló hibákat. A Codex akkor működik a legjobban, ha olyan jól körülhatárolt feladatokat kap, amelyek elvégzése neked vagy egy csapattársadnak körülbelül egy órát venne igénybe, vagy amelyek néhány száz sornyi kóddal megvalósíthatók. Ahogy a modellek fejlődnek, várható, hogy az általuk elvégezhető feladatok mérete is növekedni fog.
Az indítási szkript, a környezeti változók és az internet-hozzáférés beállítása jelentősen csökkenti a Codex hibaarányát. A feladatok futtatása közben keresd azokat a buildhibákat, amelyeket a Codex környezeti konfigurációjában lehet javítani. Ehhez néhány iterációra lehet szükség, de hosszú távon jelentős hatékonyságnövekedést eredményezhet.
A Codex jobban reagál, ha az utasításokat úgy fogalmazod meg, ahogyan egy változtatást leírnál egy pull requestben vagy egy issue-ban. Ez azt jelenti, hogy bele kell foglalni a fájlútvonalakat, a komponensneveket, a diffeket és a dokumentációrészleteket, amikor relevánsak. Az olyan utasítások, mint például „Ezt ugyanúgy valósítsd meg, ahogyan a [module X]-ben van”, javítják az eredményeket.
Indíts el feladatokat a kapcsolódó ötletek, részleges munkák vagy kisebb javítások rögzítéséhez. Nem kell egyből egy teljes pull requestet elkészítened. A Codex jól működik olyan átmeneti helyként, ahová visszatérhetsz, amikor újra összpontosítani tudsz.
Tarts fenn egy AGENTS.md fájlt, hogy a Codex hatékonyabban működhessen a repozitóriumban a promptok között. Ezek a fájlok általában olyan elnevezési konvenciókat, üzleti logikát, ismert sajátosságokat vagy függőségeket tartalmaznak, amelyeket a Codex önmagában a kódból nem tud kikövetkeztetni. Tudj meg többet az AGENTS.md fájlod strukturálásáról a dokumentációban.
A Best-of-N funkció lehetővé teszi, hogy egyszerre több választ hozz létre egyetlen feladathoz, így gyorsan feltérképezhesd a különböző megoldási lehetőségeket, és kiválaszthasd a legjobbat. Bonyolultabb feladatok esetén több iterációt is áttekinthetsz, és különböző válaszok részeit kombinálva érheted el a legjobb eredményt.
A Codex még mindig kutatási előnézetben van, de már most is kézzelfogható hatást gyakorol arra, ahogyan fejlesztünk: segít gyorsabban haladni, jobb kódot írni, és olyan feladatokat is elvégezni, amelyek egyébként sosem kerültek volna előtérbe.
Izgatottan várjuk az előttünk álló lehetőségeket — ahogy modelljeink egyre jobbak lesznek, és a Codex egyre mélyebben beépül a munkafolyamatainkba, örömmel várjuk, hogy még hatékonyabb módokat találjunk a vele történő szoftverfejlesztésre. Továbbra is megosztjuk, amit a folyamat során tanulunk.


