OpenAI, Codex का इस्तेमाल कैसे करता है
Codex का रोज़ाना इस्तेमाल OpenAI की कई तकनीकी टीमों में किया जाता है, जैसे कि सिक्योरिटी, प्रोडक्ट इंजीनियरिंग, फ्रंटएंड, API, इन्फ्रास्ट्रक्चर और परफॉर्मेंस इंजीनियरिंग. टीमें इसका उपयोग इंजीनियरिंग टास्क की एक विस्तृत रेंज में तेजी लाने ,जटिल सिस्टम को समझने और बड़े कोडबेस को रीफ़ैक्टर करने से लेकर नए फीचर्स शिप करने और कम समय-सीमा के भीतर इंसिडेंट्स को रिज़ॉल्व करने तक के लिए कर रही हैं.
OpenAI इंजीनियरों के इंटरव्यू और आंतरिक उपयोग डेटा के आधार पर, हमने उपयोग के मामलों और सर्वोत्तम प्रथाओं को संकलित किया है, जो यह दिखाते हैं कि Codex हमारी टीमों को तेज़ी से काम करने, काम की गुणवत्ता सुधारने, और बड़े पैमाने पर जटिलता प्रबंधित करने में कैसे मदद करता है.
Codex हमारी टीमों को ऑनबोर्डिंग, डिबगिंग, या किसी इंसिडेंट की जांच के दौरान कोडबेस के अनजान हिस्सों को जल्दी से समझने में मदद करता है.
वे अक्सर Codex का इस्तेमाल किसी फीचर के कोर लॉजिक का पता लगाने, सेवाओं या मॉड्यूल के बीच संबंधों को मैप करने, और सिस्टम में डेटा प्रवाह को ट्रेस करने के लिए करते हैं. यह आर्किटेक्चर पैटर्न या डॉक्यूमेंटेशन में मौजूद छूटे हुए हिस्सों को भी उजागर करने में मदद करता है, जिन्हें वरना तैयार करने के लिए काफ़ी मैन्युअल मेहनत लगती.
इंसिडेंट रिस्पांस के दौरान, Codex इंजीनियरों को नए क्षेत्रों में जल्दी से काम शुरू करने में मदद करता है, घटकों के बीच की बातचीत को उजागर करके या यह पता लगाकर कि विफलता की स्थितियाँ सिस्टम में कैसे फैलती हैं.
हमारी टीमों के अनुभव
“जब मैं किसी बग को ठीक करता/करती हूँ, तो मैं Ask mode का इस्तेमाल यह देखने के लिए करता/करती हूँ कि वही समस्या कोडबेस में और कहाँ दिखाई दे सकती है”
इस रिपो में ऑथेंटिकेशन लॉजिक कहाँ इम्प्लीमेंटेड है?
इस सेवा में एंट्रीपॉइंट से रिस्पॉन्स तक अनुरोध कैसे प्रवाहित होते हैं, इसका सारांश दें.
[insert module name] के साथ कौन-कौन से मॉड्यूल संपर्क करते हैं और विफलताओं का सामना कैसे किया जाता है?
Codex का आमतौर पर उन बदलावों के लिए उपयोग किया जाता है जो कई फ़ाइलों या पैकेजों में फैले होते हैं. उदाहरण के लिए, जब इंजीनियर किसी API को अपडेट कर रहे होते हैं, किसी पैटर्न को लागू करने का तरीका बदल रहे होते हैं, या किसी नई डिपेंडेंसी पर माइग्रेट कर रहे होते हैं, तो Codex इन बदलावों को लगातार लागू करना आसान बना देता है.
यह विशेष रूप से तब उपयोगी होता है जब वही अपडेट दर्जनों फ़ाइलों में करना हो, या जब अपडेट के लिए संरचना और निर्भरताओं की ऐसी समझ की आवश्यकता हो जिसे रेगेक्स या फाइंड-एंड-रिप्लेस से आसानी से पकड़ा नहीं जा सकता.
वे इसका इस्तेमाल कोड क्लीनअप के लिए भी कर रहे हैं—ओवरसाइज़्ड मॉड्यूल्स को विभाजित करके, पुराने पैटर्न्स को आधुनिक पैटर्न्स से बदलकर, या कोड को बेहतर टेस्टेबिलिटी के लिए तैयार करके.
हमारी टीमों के अनुभव
Codex ने हर पुराने getUserById( ) को हमारे नए सेवा पैटर्न से बदल दिया और PR खोल दिया. इसने मिनटों में वह काम कर दिया जिसे करने में घंटों लगते.
इस फ़ाइल को अलग-अलग विषयों के अनुसार मॉड्यूल्स में विभाजित करें और प्रत्येक के लिए परीक्षण तैयार करें.
सभी callback-आधारित डेटाबेस एक्सेस को async/await में परिवर्तित करें.
Codex का उपयोग परफॉर्मेंस बॉटलनेक्स की पहचान करने और उन्हें दूर करने के लिए किया जाता है.
ट्यूनिंग या विश्वसनीयता सुधारने के प्रयासों के दौरान, इंजीनियर Codex को धीमे या मेमोरी-इंटेंसिव कोड पाथ्स, जैसे कि अक्षम लूप्स, अनावश्यक ऑपरेशन्स, या महंगी क्वेरीज, का विश्लेषण करने और ऑप्टिमाइज़ किए गए विकल्प सुझाने के लिए प्रॉम्प्ट करते हैं, जिससे अक्सर दक्षता और विश्वसनीयता में सार्थक सुधार होते हैं.
Codex का उपयोग कोड हेल्थ को सपोर्ट करने के लिए भी किया जाता है, जो अभी भी सक्रिय उपयोग में मौजूद जोखिम भरे या डिप्रिकेटेड पैटर्न्स की पहचान करता है. हमारी टीमें दीर्घकालिक तकनीकी कर्ज़ को कम करने और रिग्रेशन को पहले से ही रोकने में मदद के लिए इस पर भरोसा करती हैं।
हमारी टीमों के अनुभव
मैं बार-बार होने वाली महंगी DB कॉल्स का पता लगाने के लिए Codex का उपयोग करता हूँ. यह हॉट पाथ्स को चिह्नित करने और बैच्ड क्वेरीज़ का ड्राफ्ट तैयार करने में बहुत अच्छा है, जिन्हें मैं बाद में ट्यून कर सकता हूँ."
इस लूप को मेमोरी दक्षता के लिए बेहतर बनाएं और बताएं कि आपका संस्करण तेज़ क्यों है.
इस रिक्वेस्ट हैंडलर में बार-बार होने वाले महंगे ऑपरेशन्स ढूँढें और कैशिंग के अवसर सुझाएँ.
इस फ़ंक्शन में DB क्वेरीज़ को बैच में करने का एक तेज़ तरीका सुझाएँ.
Codex इंजीनियरों को तेज़ी से टेस्ट लिखने में मदद करता है — खासकर उन जगहों पर जहाँ कवरेज कम है या पूरी तरह से अनुपस्थित है.
बग फिक्स या रिफैक्टरिंग पर काम करते समय इंजीनियर अक्सर Codex से ऐसे टेस्ट सुझाने को कहते हैं जो एज केस या संभावित फेल्योर पाथ कवर करें. नए कोड के लिए, यह फ़ंक्शन सिग्नेचर और आसपास के लॉजिक के आधार पर यूनिट या इंटीग्रेशन टेस्ट जनरेट कर सकता है.
Codex खाली इनपुट, अधिकतम लंबाई, या असामान्य लेकिन वैध अवस्थाओं जैसी सीमा शर्तों की पहचान करने में विशेष रूप से सहायक है, जिन्हें अक्सर शुरुआती परीक्षणों में नज़रअंदाज़ कर दिया जाता है।
हमारी टीमों के अनुभव
“मैं रात भर Codex को कम टेस्ट कवरेज वाले मॉड्यूल्स पर लगाता हूँ और सुबह उठते ही चलने लायक यूनिट-टेस्ट PRs देखता हूँ.”
इस फ़ंक्शन के लिए ऐज केस और फेलियर पाथ सहित यूनिट टेस्ट लिखें.
इस सॉर्टिंग यूटिलिटी के लिए एक प्रॉपर्टी-आधारित परीक्षण जनरेट करें.
इस टेस्ट फ़ाइल को null इनपुट और अमान्य स्थितियों से जुड़े छूटे हुए परिदृश्यों को कवर करने के लिए विस्तारित करें.
Codex टीमों को डेवलपमेंट सायकल की शुरुआत और समापन दोनों को तेज़ी से पूरा करने में मदद करता है, जिससे वे तेज़ी से काम कर सकें.
किसी नए फ़ीचर की शुरुआत करते समय, इंजीनियर बॉयलरप्लेट को स्कैफोल्ड करने के लिए इसका इस्तेमाल करते हैं — फ़ोल्डर, मॉड्यूल और API स्टब्स जनरेट करते हुए, ताकि हर हिस्से को मैन्युअली वायर किए बिना जल्दी से रन करने लायक कोड तैयार हो सके.
जैसे-जैसे प्रोजेक्ट्स रिलीज़ के करीब पहुँचते हैं, Codex छोटे लेकिन ज़रूरी कामों को संभालकर कड़ी समय-सीमाओं को पूरा करने में मदद करता है—जैसे बग्स ट्रायेज करना, कार्यान्वयन की आख़िरी-मील की कमियों को भरना, और रोलआउट स्क्रिप्ट्स, टेलीमेट्री हुक्स, या कॉन्फ़िग फ़ाइलें जनरेट करना.
यह प्रोडक्ट फ़ीडबैक को शुरुआती कोड में बदलने के लिए भी उपयोग किया जाता है. इंजीनियर अक्सर यूज़र का अनुरोध या स्पेक पेस्ट करते हैं और Codex से एक रफ़ ड्राफ़्ट तैयार करने को कहते हैं, जिस पर वे बाद में सुधार कर सकते हैं।
“मैं पूरे दिन मीटिंग्स में था और फिर भी 4 PRs मर्ज किए क्योंकि Codex बैकग्राउंड में काम कर रहा था.”
POST /events के लिए बेसिक वैलिडेशन और लॉगिंग के साथ एक नया API रूट तैयार करें.
इस टेम्पलेट का उपयोग करके [insert example of your telemetry code] नए ऑनबोर्डिंग फ्लो की सफलता/विफलता को ट्रैक करने के लिए एक टेलीमेट्री हुक जनरेट करें.
इस स्पेक के आधार पर एक स्टब इम्प्लीमेंटेशन बनाएं: [स्पेक या प्रॉडक्ट फ़ीडबैक डालें].
Codex हमारे इंजीनियरों को प्रोडक्टिव बने रहने में मदद करता है, जब उनके शेड्यूल बिखरे हुए हों और बार-बार रुकावटों से भरे हों.
इसका इस्तेमाल अधूरे काम को सहेजने, नोट्स को काम करने वाले प्रोटोटाइप में बदलने, या खोजपरक टास्क अलग निकालने के लिए किया जाता है, जिन पर बाद में फिर से काम किया जा सके. इससे काम को रोकना और फिर से शुरू करना, कॉन्टेक्स्ट खोए बिना, आसान हो जाता है, खासकर जब वे ऑन-कॉल हों या उनकी बहुत सारी मीटिंग्स हों.
“अगर मुझे कोई झटपट फिक्स दिखता है, तो मैं ब्रांच स्विच करने के बजाय एक Codex टास्क शुरू करता हूं और जब फुर्सत मिलती है, तो उसके PR की समीक्षा करता हूं.”
Codex ओपन-एंडेड कामों के लिए भी उपयोगी है, जैसे वैकल्पिक समाधानों को खोजने या डिज़ाइन निर्णयों को सत्यापित करने के लिए. आप किसी समस्या को हल करने के अलग-अलग तरीकों के लिए प्रॉम्प्ट दे सकते हैं, अपरिचित पैटर्न का पता लगा सकते हैं, या मान्यताओं को कड़ी परख पर रख सकते हैं. यह समझौतों को उजागर करने, डिज़ाइन विकल्पों का विस्तार करने और इम्प्लीमेंटेशन विकल्पों को अधिक स्पष्ट बनाने में मदद करता है.
इसका उपयोग संबंधित बग्स की पहचान करने के लिए भी किया जाता है. किसी ज्ञात समस्या या अप्रचलित विधि को देखते हुए, Codex कोड में अन्य जगहों पर समान पैटर्न की पहचान कर सकता है, जिससे पुनरावृत्ति पकड़ना या सफाई का काम पूरा करना आसान हो जाता है.
“Codex मुझे कोल्ड-स्टार्ट की समस्या हल करने में मदद करता है — मैं एक स्पेक और डॉक्स पेस्ट करता हूँ और यह कोड का ढांचा तैयार कर देता है या मुझे दिखाता है कि मुझसे क्या छूट गया.”
अगर सिस्टम अनुरोध/प्रतिक्रिया के बजाय इवेंट-आधारित होता, तो यह कैसे काम करता?
उन सभी मॉड्यूल को ढूँढें जो हमारे क्वेरी बिल्डर का उपयोग करने के बजाय मैन्युअली SQL स्ट्रिंग बनाते हैं.
इसे अधिक फ़ंक्शनल स्टाइल में पुनः लिखें, म्यूटेशन और साइड इफ़ेक्ट्स से बचें.
Codex तब सबसे अच्छा काम करता है जब उसे संरचना, संदर्भ, और पुनरावृत्ति के लिए जगह दी जाती है. यहाँ कुछ ऐसी आदतें दी गई हैं जिन्हें OpenAI टीमें विकसित कर रही हैं, ताकि वे रोज़मर्रा के काम में इससे लगातार मूल्य हासिल कर सकें.
बड़े बदलावों के लिए, पहले Ask mode का उपयोग करके Codex से एक इम्प्लीमेंटेशन प्लान के लिए प्रॉम्प्ट करें। यह प्लान Code Mode पर स्विच करने के बाद फ़ॉलो-अप प्रॉम्प्ट्स के लिए इनपुट बन जाता है. यह दो-चरणीय प्रक्रिया Codex को सही संदर्भ में बनाए रखती है और इसके आउटपुट में त्रुटियों से बचने में मदद करती है। Codex उन अच्छी तरह परिभाषित टास्क्स के साथ सबसे अच्छा काम करता है, जिन्हें पूरा करने में आपको या आपकी टीम के किसी सदस्य को लगभग एक घंटा लगे, या जिन्हें इम्प्लीमेंट करने के लिए कोड की कुछ सौ लाइनें लगें। जैसे-जैसे मॉडल बेहतर होते जाएंगे, उम्मीद करें कि जिन कार्यों को यह संभाल सकता है उनका दायरा बढ़ेगा।
स्टार्टअप स्क्रिप्ट, एनवायरनमेंट वेरिएबल्स और इंटरनेट एक्सेस सेट करने से Codex की त्रुटि दर काफी कम हो जाती है. जब आप टास्क चलाएं, तो उन बिल्ड त्रुटियों पर ध्यान दें जिन्हें Codex के एनवायरनमेंट कॉन्फ़िगरेशन में ठीक किया जा सकता है। इसमें कुछ पुनरावृत्तियाँ लग सकती हैं, लेकिन लंबी अवधि में यह महत्वपूर्ण दक्षता लाभ देता है।
जब प्रॉम्प्ट वैसे ही हों जैसे आप किसी PR या इश्यू में बदलाव का वर्णन करते हैं, तो Codex बेहतर प्रतिक्रिया देता है. इसका मतलब है कि प्रासंगिक होने पर फ़ाइल पाथ, कंपोनेंट नाम, डिफ़ और डॉक स्निपेट शामिल करना। “इसे उसी तरह लागू करें, जैसे [module X] में किया गया है” जैसे पैटर्न का प्रॉम्प्ट में उपयोग करने से बेहतर परिणाम मिलते हैं.
संबंधित विचारों, अधूरे काम, या छोटे-मोटे सुधारों को कैप्चर करने के लिए कार्य बनाएं. इस बात का कोई दबाव नहीं है कि एक ही Go में पूरा PR जनरेट करें। Codex एक अस्थायी जगह की तरह काम करता है, जहां आप ध्यान केंद्रित होने पर वापस आ सकते हैं।
अलग-अलग प्रॉम्प्ट्स में आपकी रिपॉजिटरी में Codex को और अधिक प्रभावी ढंग से काम करने में मदद करने के लिए एक AGENTS.md फ़ाइल बनाए रखें. इन फ़ाइलों में आमतौर पर नामकरण परंपराएँ, व्यापारिक तर्क, ज्ञात quirks, या ऐसी dependencies शामिल होती हैं जिनका Codex केवल कोड से अनुमान नहीं लगा सकता। डॉक्स में अपनी AGENTS.md फ़ाइल की संरचना के बारे में अधिक जानें।
Best-of-N फीचर आपको एक ही टास्क के लिए एक साथ कई रिस्पॉन्स जनरेट करने की सुविधा देता है, ताकि आप कई समाधानों को तेज़ी से एक्सप्लोर करके सबसे उपयुक्त विकल्प चुन सकें. ज़्यादा जटिल कार्यों के लिए, आप कई बार दोहराए गए संस्करणों की समीक्षा कर सकते हैं और अलग-अलग जवाबों के हिस्सों को जोड़कर अधिक प्रभावी परिणाम पा सकते हैं.
Codex अभी भी शोध पूर्वावलोकन में है, लेकिन यह पहले से ही हमारे निर्माण के तरीके पर वास्तविक प्रभाव डाल रहा है। यह हमें तेज़ी से आगे बढ़ने, बेहतर कोड लिखने, और ऐसे काम करने में मदद कर रहा है जिन्हें अन्यथा शायद कभी प्राथमिकता नहीं दी जाती.
हम आगे मौजूद संभावनाओं को लेकर उत्साहित हैं — जैसे-जैसे हमारे मॉडल बेहतर होते जाते हैं और Codex हमारे वर्कफ़्लो में और गहराई से एकीकृत होता जाता है, हम इसके साथ सॉफ़्टवेयर डेवलप करने के और भी शक्तिशाली तरीकों को अनलॉक करने के लिए उत्सुक हैं. हम इस दौरान जो सीखेंगे, उसे साझा करते रहेंगे.


