हाल ही में मैंने पाया है कि Github Copilot, एक AI जो पूरे स्निपेट (अक्सर केवल प्राकृतिक भाषा टिप्पणियों पर आधारित) का सुझाव देकर कोड लिखने में मदद करता है, अब एक व्यावसायिक सेवा के रूप में उपलब्ध है। अब बीटा एक्सेस के लिए प्रतीक्षा करने की आवश्यकता नहीं है, मैंने दो महीने के निःशुल्क परीक्षण के लिए स्वयं को चेक इन किया है।
मेरा कहना है - मेरी उम्मीदें बहुत अधिक थीं। मैंने पहले ओपनएआई एपीआई के साथ थोड़ा सा खेला है। मेरा मानना है कि यह कोपिलॉट के समान मॉडल का उपयोग करता है, इसलिए मुझे पता था कि यह एक दिमाग उड़ाने वाला अनुभव हो सकता है। मैंने इसे विजुअल स्टूडियो कोड एक्सटेंशन के रूप में स्थापित किया है और मुझे आश्चर्य होने लगा है कि मुझे अपने नए आभासी सहयोगी को कैसे चुनौती देनी चाहिए।
कुछ सामुदायिक टिप्पणियों और लेखों को पढ़कर, मैंने पाया है कि कोपिलॉट के लाभों में से एक यह है कि यह एआई आज रहने वाले किसी भी फ्लैश और हड्डी डेवलपर की तुलना में अधिक प्रोग्रामिंग भाषाओं, ढांचे और एपीआई जानता है। आखिरकार, यह हर एक सार्वजनिक गिटहब भंडार का उपयोग करना सीखता है जो कभी अस्तित्व में था। यह सिर्फ एक उत्पादकता उपकरण से अधिक हो सकता है। यह नई चीजों को खोजने का एक इंटरैक्टिव तरीका भी हो सकता है।
इस तरह से इसका उपयोग करने की उम्मीद करते हुए, मैंने एक गेम बनाने का फैसला किया है। अंतरिक्ष आक्रमणकारियों का एक क्लोन एक उपयुक्त विकल्प लग रहा था, लेकिन इसे और अधिक रोचक बनाने के लिए, मैंने कुछ धारणाएँ बनाई हैं:
मैंने स्क्रीन रिकॉर्डिंग सेट की है, एक छोटी सी टिप्पणी करने के लिए अपना माइक्रोफ़ोन चालू किया है, विजुअल स्टूडियो शुरू किया है और बस अपना पहला अनुरोध लिखा है:
"""main function for a pygame"""
कोपिलॉट ने मुझे एक के बाद एक कोड की लाइनें देनी शुरू कीं। मैंने अभी एक टन आयात स्वीकार करने वाले सुझावों की सूची के माध्यम से खुद को टैब-एंटर किया है। शुरुआत में उत्साही, मैंने जल्दी से खुद को कोड की एक ही दो पंक्तियों को बार-बार जोड़ने के अनंत लूप में फंस गया है। अच्छा नहीं।
एक बुरी शुरुआत के लिए, मैंने जल्दी ही महसूस किया है कि मैं बहुत अधिक, बहुत जल्दी करने की कोशिश कर रहा हूं। Copilot से पहले एक PyGame आयात जोड़ने और फिर एक विंडो दिखाने वाला फ़ंक्शन बनाने के लिए कहने से चाल चली।
उस समय, मैंने यह भी महसूस किया कि अपने अनुरोध को और अधिक सटीक बनाकर मैं परिणामों में सुधार कर सकता हूँ। लिखते समय
"""create a function showing a game window"""
मैंने इसे इस तथ्य को छोड़कर काम कर लिया है, कि यह सिर्फ एक सेकंड के लिए दिखा और फिर तुरंत छोड़ दिया। तब मैंने सोचा कि मुझे अपनी उम्मीदों के बारे में बहुत सीधा होना चाहिए। इसे बदल रहा है
"""create a function showing a game window and then left it open"""
Copilot ने एक बुनियादी गेम लूप जोड़कर कोड को बढ़ाया जो विंडो को बंद होने से रोकता था।
ऐसा लग रहा था कि मैं और मेरा दोस्त एक दूसरे के साथ संवाद करने लगे हैं। अच्छा!
अगला कदम एक अंतरिक्ष यान वर्ग बनाना था। मैंने एक अलग फ़ाइल में एक वर्ग बनाया है, फिर से एक और अनुरोध लिखना शुरू किया और एक और अच्छी चीज मिली। कोपिलॉट न केवल कोड बल्कि मेरे द्वारा लिखी जा रही टिप्पणियों की सामग्री का भी सुझाव देता है। मैंने अपने अंतरिक्ष यान को स्थानांतरित करने के लिए तीर कुंजियों का उपयोग करने के लिए कहना शुरू कर दिया है, और इसने एक संपूर्ण वाक्य का सुझाव दिया है।
मेरा कहना है कि मैं थोड़ा संशय में था कि क्या कोपिलॉट वास्तव में समझ पाएगा कि परियोजना-वार क्या हो रहा है। वर्तमान में संपादित फ़ाइल में कोड का विश्लेषण करना एक बात है। यह पता लगाएं कि ये फ़ाइलें आपस में कैसे जुड़ी हैं, मछली की एक और केतली है।
कोपिलॉट कहता है: "मैंने तुम्हें कवर किया"। यह अन्य फाइलों में कक्षाओं के बारे में जानता है, और हमारे गेम क्लास में स्पेसशिप का उपयोग करने में कोई समस्या नहीं थी। Copilot ने यह भी पता लगाया कि हमने विशिष्ट गेम विंडो आकार को परिभाषित किया है और स्क्रीन के निचले केंद्र में स्पेसशिप की स्थिति के दौरान इसका उपयोग किया है।
आप जरूर सोचें - "यह टूल कमाल का है"। सही?
यह एक तरह का है, लेकिन हमारा रिश्ता सिर्फ चांदनी और गुलाब का नहीं था। कुछ समस्याएं मामूली थीं, जैसे कार्यों में अनावश्यक तर्क मैंने कोपिलॉट को मेरे लिए लिखने के लिए कहा है। कुछ सुझाव देरी से आ रहे थे, और मैंने उनकी प्रतीक्षा में थोड़ा समय खो दिया है।
कभी-कभी मैं अपनी गलतियों के कारण निराश हो जाता था। मैंने एक टिप्पणी छोड़ी है कि फ़ंक्शन को फ़ाइल के शीर्ष पर शून्य वापस करना चाहिए, और फिर नीचे एक और टिप्पणी लिखना मैं समझ रहा था कि कोपिलॉट मेरे फ़ंक्शन के अंत में शून्य वापस करने का प्रयास क्यों कर रहा है। लेकिन यह उस समस्या की तुलना में कुछ भी नहीं था जिसे मैंने हल करने में लगभग एक घंटा लगा दिया था।
मैं जहाज को सही जगह पर रखना चाहता था और इसका आकार 50x50 पिक्सेल आकार में सेट करना चाहता था। मैं कई तरह से अपनी टिप्पणी तैयार करने की कोशिश कर रहा था। हमेशा एक ही परिणाम प्राप्त करना। कोड, जो काम नहीं कर रहा था क्योंकि Copilot ने उन तरीकों का उपयोग करने का निर्णय लिया जो PyGame में मौजूद नहीं थे।
एक खच्चर के रूप में जिद्दी यह मेरे लोड किए गए स्प्राइट ऑब्जेक्ट पर set_size और set_center को आमंत्रित करने का प्रयास कर रहा था, हर बार प्राप्त कर रहा था:
AttributeError: 'pygame.Surface' object has no attribute 'set_size'
अनगिनत बार मैंने अपने अनुरोध को हमेशा वह कोड प्राप्त करने का प्रयास किया है जो बिल्कुल काम नहीं कर रहा था। बहुत निराशा होती है।
कुछ बिंदु पर, मैंने यह भी सोचा कि मुझे रिकॉर्डिंग बंद कर देनी चाहिए और इसके बारे में भूल जाना चाहिए। कोपिलॉट को इस उद्देश्य के लिए उपयुक्त नहीं के रूप में लेबल करें और प्रयोग समाप्त करें। फिर भी, मुझे लगा कि इससे उबरने का कोई तरीका होना चाहिए।
मैंने सोचा था कि Copilot के साथ काम करते हुए मैं डॉक्स के बारे में भूल सकता हूं, लेकिन यह पता चला कि PyGame की मूल बातें न समझने के लिए यह मेरी गलती थी। मैं दृश्य पर वस्तुओं को स्थानांतरित करने में रेक्ट की मदद करने की अवधारणा को नहीं समझ पाया। मुझे समझ में नहीं आया कि मेरे स्प्राइट को स्केल करने के लिए उपयोगिता वर्गों का उपयोग कैसे करें।
दस्तावेज़ीकरण में उस जानकारी को ढूँढने से जादू टूट गया। मैं एक कोपिलॉट अलग रणनीति का सुझाव देने में सक्षम था जो स्प्राइट को सतह वस्तु के रूप में रेक्ट से अलग करता है और उन्हें स्क्रीन पर अलग से पास करता है।
इस कोर्स के बाकी हिस्सों में केक की शांति थी। जितना अधिक कोड मैंने बनाया है, उतना ही स्मार्ट कोपिलॉट मिला है। यह जादुई था जब इसने मेरे दिमाग को पढ़ा और गोलियों और एलियंस को सही दिशा में ले जाया गया। स्कोर काउंटर जोड़ने के लिए यह केक का एक टुकड़ा था कि कोपिलॉट ने स्वचालित रूप से पता लगाया कि आक्रमणकारियों के साथ बुलेट टकराव को जोड़ना चाहिए।
आखिरकार, यह एक सफलता थी। खेल काम कर रहा था और मैंने इसे 2 घंटे से भी कम समय में शुरू कर दिया है। Copilot ने कम से कम 99% कोड लिखा था और मुझे मुश्किल से दस्तावेज़ीकरण देखने की आवश्यकता थी, हालांकि इसके बिना मैं शायद अभी भी अपने नए मित्र द्वारा दिए गए गलत कोड के साथ फंस गया होता।
आप मेरे सभी प्रयासों को YouTube पर 2 घंटे लंबे इस वीडियो में देख सकते हैं:
👉
कोई तैयारी नहीं, कोई संपादन नहीं, कोई चाल नहीं। शुद्ध आशुरचना।
बस एक त्वरित चेतावनी - यह भावनात्मक है। मैं सिर्फ हंसने के लिए आधा समय निराश हूं और हर छोटे कदम को सही दिशा में ले जाने के लिए पूरी तरह उत्साहित हूं।
आप मेरे जीथब पर उत्पन्न स्रोत कोड भी पा सकते हैं। जैसा कि मैंने वीडियो में उल्लेख किया है कि यह सुंदर नहीं है, लेकिन यह काम करता है:
👉 https://github.com/lukasz-wronski/copilot-invaders
उम्मीद है तुम्हें मजा आया। पढ़ने के लिए धन्यवाद!