कोर्स
जब आप बायलरप्लेट या छोटे-छोटे सिंटैक्स विवरणों में अटक जाते हैं, तो कोड लिखना उबाऊ हो सकता है। यह घर्षण तब और बढ़ जाता है जब आप नए AI मॉडलों के साथ प्रयोग कर रहे हों और बस बनाना चाहते हों। Tabnine आपके एडिटर के भीतर AI कोड कम्प्लीशन के साथ उस सुस्ती को कम करने में मदद करता है।
इस लेख में, मैं चरण-दर-चरण समझाऊंगा कि Visual Studio Code (VS Code) में Tabnine का उपयोग करके Google के नवीनतम इमेज जेनरेशन मॉडल Nano Banana का उपयोग करके AI इमेज एडिटर कैसे बनाया जाए। लेख के अंत तक, हमारे पास एक काम करता हुआ Python एप्लिकेशन होगा जो उपयोगकर्ताओं को प्रॉम्प्ट्स के जरिए इमेज जनरेट और एडिट करने देता है।
जो लोग नवीनतम Google इमेज जेनरेशन मॉडलों से अपडेट रहना चाहते हैं, उनके लिए मैं हमारा Nano Banana 2 गाइड पढ़ने की सलाह देता/देती हूं।


Tabnine क्या है?
Tabnine एक AI-संचालित कोडिंग असिस्टेंट है, जो GitHub Copilot और Cursor के समान है। यह VS Code, PyCharm, Jupyter और अन्य लोकप्रिय एडिटर्स में काम करता है।
Tabnine की कुछ प्रमुख विशेषताएं:
- Jira इंटीग्रेशन: Tabnine, Jira से कनेक्ट हो सकता है, जो सॉफ्टवेयर इंजीनियरिंग प्रोजेक्ट्स मैनेज करने का एक लोकप्रिय प्लेटफ़ॉर्म है। इससे काम मैनेज करना आसान हो जाता है और Tabnine पाइपलाइन में मौजूद टास्क्स को ट्रैक कर सकता है।
- कस्टम कमांड्स: Tabnine कई कमांड्स के साथ आता है, जैसे "Explain code" या "Fix code"। यह उपयोगकर्ताओं को प्रॉम्प्ट-आधारित कस्टम कमांड्स परिभाषित करने की भी अनुमति देता है।
- कस्टम व्यवहार: Tabnine आपको ऐसा प्रॉम्प्ट कॉन्फ़िगर करने देता है जो AI मॉडलों के उत्तर देने के तरीके को निर्देशित करे। उदाहरण के लिए, यदि आपके पास स्पष्ट कोडिंग गाइडलाइंस हैं, तो आप उन्हें प्रदान कर सकते हैं ताकि यह उन्हीं के अनुसार कोड जेनरेट करे।
- स्मार्ट ऑटो-कम्प्लीट: यह केवल वैरिएबल नाम ही नहीं, बल्कि पूरी पंक्तियां या कोड ब्लॉक्स सुझाता है।
- संदर्भ-सचेत: Tabnine आपके प्रोजेक्ट स्ट्रक्चर और कोडिंग स्टाइल के अनुसार ढल जाता है।
- कई AI मॉडलों का सपोर्ट: Tabnine सबसे लोकप्रिय AI मॉडलों का समर्थन करता है, जिससे चुनना आसान हो जाता है कि किसका उपयोग करें।
- टीम लर्निंग: एंटरप्राइज़ योजनाओं में, यह आपकी टीम के निजी कोडबेस से सीख सकता है ताकि आपकी कंपनी के पैटर्न्स के अनुरूप सुझाव दे सके।
Tabnine सेटअप
शुरू करने के लिए, हमें एक Tabnine खाता बनाना और किसी एक प्लान की सदस्यता लेनी होगी। वे 14-दिन का ट्रायल देते हैं, इसलिए आप इसे मुफ्त में आजमा सकते हैं। ट्रायल अवधि के बाद, Tabnine की कीमत $9 प्रति माह है।
Tabnine खाता बनाने के बाद, VS Code खोलें। यदि आपके पास VS Code नहीं है, तो इसे यहां से इंस्टॉल करें। एक्सटेंशन्स टैब खोलें और आधिकारिक एक्सटेंशन खोजने के लिए "tabnine" टाइप करें।

एक्सटेंशन इंस्टॉल होने के बाद, हमसे लॉग इन करने के लिए कहा जाएगा। फिर हम बाएं मेन्यू बार में Tabnine तक पहुंच सकते हैं (इस स्क्रीनशॉट में आखिरी विकल्प)।

Tabnine का UI देखना
हमारा AI इमेज एडिटर बनाने से पहले, आइए Tabnine के मुख्य एलिमेंट्स पर संक्षेप में नज़र डालें।
जब हम Tabnine खोलते हैं, तो हमारे सामने AI चैट इंटरफेस आता है:

ऊपर, हमारे पास मॉडल सेलेक्टर है। यहां, हम चुन सकते हैं कि किस मॉडल का उपयोग करना है। मैं इस ट्यूटोरियल में डिफ़ॉल्ट Gemini 2.5 Pro पर ही रहूंगा/रहूंगी।

नीचे, हम संदर्भ तय कर सकते हैं। यह निर्धारित करता है कि उत्तर देते समय हम AI मॉडल को क्या दिखाना चाहते हैं।

डिफ़ॉल्ट रूप से, संदर्भ में वर्तमान फाइल और वर्कस्पेस (प्रोजेक्ट) शामिल होते हैं। हम अन्य चीजें भी जोड़ सकते हैं, जैसे टर्मिनल, जो त्रुटियों का सामना होने पर मॉडल को उनके बारे में बताने के लिए बहुत उपयोगी है। हम "@" कैरेक्टर का उपयोग करके और फिर उस फ़ंक्शन का नाम टाइप करके, जिसे हम संदर्भ में जोड़ना चाहते हैं, कोई विशिष्ट कोड स्निपेट भी दे सकते हैं।
हैमबर्गर मेन्यू पर, हम Tabnine को कॉन्फ़िगर कर सकते हैं:

दो उल्लेखनीय सेटिंग्स हैं कस्टम व्यवहार और कस्टम कमांड्स। कस्टम व्यवहार सेक्शन में, हम ऐसा प्रॉम्प्ट सेट कर सकते हैं जो कोड जेनरेट करते समय मॉडल का मार्गदर्शन करे। यह तब उपयोगी है जब हम चाहते हैं कि कोड विशिष्ट गाइडलाइंस का पालन करे।

कमांड सेक्शन हमें कस्टम कमांड्स परिभाषित करने देता है जिन्हें चैट इंटरफेस में /<command-name> का उपयोग करके चलाया जा सकता है। कोई कमांड मूलतः किसी विशिष्ट कार्य को करने के लिए दिया गया प्रॉम्प्ट ही होता है। यह समय बचाने और बार-बार वही प्रॉम्प्ट दोहराने से बचने का अच्छा तरीका है।

Tabnine के साथ वाइब-कोडिंग करते हुए AI इमेज एडिटर
इस खंड में, मैं आपको यह बनाना सिखाऊंगा/सिखाऊंगी कि कैसे Python एप्लिकेशन तैयार किया जाए, जो Google के नवीनतम इमेज जेनरेशन मॉडल Nano Banana का उपयोग करके इमेज एडिट करे। उपयोगकर्ता प्रॉम्प्ट का उपयोग करके इमेज जनरेट कर सकता है या मौजूदा इमेजों को प्रॉम्प्ट के साथ मिलाकर एडिट कर सकता है।
मेरा लक्ष्य यह देखना था कि क्या इस एप्लिकेशन को वाइब-कोड किया जा सकता है—अर्थात, क्या इसे पूरी तरह शून्य से केवल प्रॉम्प्ट्स के जरिए बनाया जा सकता है।
इस ट्यूटोरियल में जेनरेट किया गया सारा कोड इस GitHub रिपोजिटरी में मिल सकता है।
बेस UI बनाना
शुरू करने के लिए, मैं ऐसा बेस UI बनाना चाहता/चाहती था, जहां उपयोगकर्ता अपने कंप्यूटर से इमेज चुन सकें और एक प्रॉम्प्ट टाइप कर सकें। मैंने एक नया फोल्डर बनाया और उसी फोल्डर में VS Code खोला। मैंने कोई फाइल नहीं बनाई। मेरा पहला प्रॉम्प्ट यह था:

बाद में एहसास हुआ कि मैं यह बताना भूल गया/गई था कि मैं Python ऐप बना रहा/रही हूं। किसी तरह किस्मत अच्छी रही, और AI मॉडल ने यही मान लिया कि मैं यही चाहता/चाहती हूं। इसने मेरे प्रॉम्प्ट के उत्तर में वे कमांड्स और कोड समझाया जो वह चलाएगा और लिखेगा।
परिवर्तन लागू करने के लिए, हमें या तो उन्हें एक-एक करके लागू करना होगा या स्क्रीन के नीचे "Apply All" बटन पर क्लिक करना होगा। ध्यान दें कि कुछ परिवर्तन कमांड निष्पादन से जुड़े होते हैं। इन मामलों में, कमांड्स आवश्यक Python पैकेज इंस्टॉल करते हैं और कोड स्टोर करने के लिए फाइलें और फोल्डर बनाते हैं।
यह इंटरफेस तब कैसा दिखता था जब मैंने बनाए गए स्क्रिप्ट को चलाया:

ऊपर, सभी चुनी गई इमेजों की सूची है और एक बटन है जो फाइल सेलेक्टर खोलता है। उपयोगकर्ता एक या अधिक फाइलें चुन सकता/सकती है, और चुनी गई फाइलें सूचीबद्ध हो जाती हैं। हालांकि, जब नई फाइलें चुनी जाती हैं, तो पुरानी सूची ओवरराइट हो जाती है, इसलिए मैंने अनुरोध किया कि पुरानी फाइलों को हटाने के बजाय नई फाइलें सूची में जोड़ दी जाएं।

इसके बाद, मैं UI में सुधार करना चाहता था ताकि पाथ्स की जगह इमेज थंबनेल दिखें:

यह इसका परिणाम है:

एक और महत्वपूर्ण सुविधा है इमेजेज़ को आसानी से हटाने की क्षमता:

इस प्रॉम्प्ट के साथ, इसने कोड को इस तरह बदला कि जब हम किसी थंबनेल पर राइट-क्लिक करें, तो एक पॉप-अप मेन्यू आए, जो हमें इमेज को डिलीट करने दे। मैं चाहता था कि यह इसी तरह काम करे, इसलिए मैंने यही बदलाव अनुरोध किया:

इस बदलाव के बाद जब मैंने एप्लिकेशन को आज़माया, तो इमेज डिलीट होना बंद हो गया। मुझे शक था कि ऐसा इसलिए है क्योंकि मैं मैक इस्तेमाल कर रहा हूँ, लेकिन मैंने यह बात नहीं बताई। मैं देखना चाहता था कि क्या यह खुद समझ पाता है।

यह बहुत अच्छी तरह काम किया, और मैं किसी इमेज पर राइट-क्लिक कर के उसे डिलीट कर सका:

बेसिक UI में आखिरी कदम था प्रॉम्प्ट के लिए एक टेक्स्ट बॉक्स जोड़ना।

इसके साथ, बेस UI तैयार हो गया। हम इमेज चुन सकते हैं और प्रॉम्प्ट टाइप कर सकते हैं। हालांकि, हम अभी तक इमेज जेनरेट नहीं कर सकते। यही हम अगले सेक्शन में लागू करेंगे।

Nano Banana का एकीकरण
कोड को सुव्यवस्थित रखने के लिए, मैंने इसे एक नया Python स्क्रिप्ट बनाने को कहा, जिसमें एक फ़ंक्शन हो जो Google की जनरेटिव AI API के नवीनतम इमेज मॉडल का उपयोग करके इमेज जेनरेट करे।

इसने नया स्क्रिप्ट और .env फ़ाइल बना दी। यह फ़ाइल Google API से कनेक्ट होने के लिए जरूरी API की को स्टोर करने के लिए उपयोग होती है। यदि आप साथ-साथ फॉलो कर रहे हैं, तो आपको यहां API की बनानी होगी और उसे .env फ़ाइल में रखना होगा।
फिर, मैंने इंटरफ़ेस में एक नया बटन जोड़ने को कहा जो इमेज-जेनरेट करने वाले फ़ंक्शन को कॉल करे। इसने बटन जोड़ दिया, लेकिन क्लिक करने पर एक त्रुटि मिली। इसलिए, त्रुटि ठीक करने के लिए कहने से पहले मैंने टर्मिनल को कॉन्टेक्स्ट में जोड़ना सुनिश्चित किया।


इसने कुछ फ़ाइलों में अपडेट किए, लेकिन त्रुटि बनी रही। मैंने इसे ठीक कराने की कोशिश की, पर काम नहीं बना। इसने कहना शुरू कर दिया कि AI मॉडल मौजूद नहीं है, और कोड को ऐसी दिशा में बदलना चाहा जो मुझे पता था कि सही नहीं है।
इसे पार करने के लिए, मुझे कोड मैन्युअली ठीक करना पड़ा। मैं Gemini की आधिकारिक वेबसाइट पर गया और वहां से उदाहरण कोड कॉपी कर के अनुकूलित किया।
यही उन कारणों में से एक है जिनकी वजह से मुझे लगता है कि कोडिंग का बुनियादी ज्ञान होना महत्वपूर्ण है, भले ही आप vibe coding ही क्यों न कर रहे हों। अक्सर ऐसा होता है कि हम ऐसी चीज़ से टकराते हैं जिसे AI मॉडल ठीक नहीं कर पाता, और प्रोग्रामिंग आना इसलिए ज़रूरी है ताकि हम समझ सकें कि मॉडल जो कह रहा है वह सही नहीं है और हम उसे ठीक कर सकें। ऐसे टूल्स का इस्तेमाल हमेशा प्रक्रिया को तेज़ करने के लिए होना चाहिए, न कि उसे पूरी तरह बदल देने के लिए।
फिर भी, यह कोड मैन्युअली लिखना पड़ने के बावजूद, Tabnine अपनी ऑटोकम्प्लीट क्षमताओं की वजह से सहायक रहा। उदाहरण के लिए, जब मैं चयनित इमेज पाथ्स को मॉडल को देने के लिए इमेज में कन्वर्ट करना चाहता था, तो मैं बस जो चाहता था वह टाइप करना शुरू करता और सही कोड मिल जाता:

हम ऊपर फ़ंक्शन नाम के पास यह भी देखते हैं कि Tabnine फ़ंक्शन को एडिट, टेस्ट, फिक्स, एक्सप्लेन, और डॉक्यूमेंट करने के टूल्स देता है। उदाहरण के लिए, मैंने डॉक्यूमेंट फ़ंक्शन का उपयोग कर के कोड का दस्तावेजीकरण कराया, और इसने वे बदलाव दिखाते हुए एक डिफ़ प्रस्तुत किया जो वह करने जा रहा था, जिसे मैं स्वीकार या अस्वीकार कर सकता था:

अंतिम परिणाम
अब एप्लिकेशन काम कर रहा था और उपयोग के लिए तैयार था। आइए किसी दिए गए व्यक्ति के लिए अन्य इमेज से लिए गए एसेसरीज़ के साथ एक एक्शन फिगर बनाने की कोशिश करें:

यह रहा परिणाम:

Tabnine के साथ परीक्षण
किसी प्रोजेक्ट पर काम करते समय स्वचालित परीक्षण लिखना बहुत महत्वपूर्ण है। Tabnine की एक सुविधा हमें ये परीक्षण लिखने में मदद करना है।
यह सुविधा "Test" टैब में उपलब्ध है या किसी फ़ंक्शन डेफिनिशन के ऊपर "Test" विकल्प पर क्लिक करके। ऐसा करने पर, Tabnine उस फ़ंक्शन के लिए एक टेस्ट प्लान बनाता है।

टेस्ट प्लान में उन परिदृश्यों का समावेश होता है जिनमें फ़ंक्शन का अपेक्षित व्यवहार बताया जाता है। यहां हमारे फ़ंक्शन के लिए Tabnine द्वारा पहचाने गए कुछ परिदृश्य हैं:

किसी विशिष्ट परिदृश्य के लिए टेस्ट जेनरेट करने के लिए, हम बस उस पर क्लिक करते हैं। यह उस विशिष्ट परिदृश्य के लिए टेस्ट फ़ंक्शन जेनरेट कर देगा, जिसे हम अपनी टेस्ट सूट में शामिल कर सकते हैं।

जब मैंने ये बदलाव लागू किए, तो टेस्ट फ़ाइल में सिर्फ़ टेस्ट फ़ंक्शन था और कुछ नहीं। इसमें इम्पोर्ट्स और आसपास की टेस्ट क्लास गायब थी। मुझे "Chat" टैब में वापस जाकर इसे टेस्ट का इम्प्लीमेंटेशन पूरा करने के लिए कहना पड़ा। उसके बाद, मुझे एक त्रुटि मिली क्योंकि बनाई गई फ़ाइल का नाम गलत था। पहले की तरह, मैंने बताया कि त्रुटि हुई है, और इसने उसे ठीक कर दिया। अब टेस्ट सफलतापूर्वक चल रहा है।
जब मैंने इसके बाद अन्य टेस्ट जोड़े, तो सब ठीक से काम किया।

निष्कर्ष
Tabnine लोकप्रिय कोड एडिटर्स के साथ आसानी से इंटीग्रेट होकर तेज़ विकास के लिए एक शक्तिशाली टूल के रूप में अपनी संभावनाएं दिखाता है। इसकी AI-सहायता प्राप्त कोडिंग क्षमताएं प्रक्रिया को तेज़ करती हैं, जिससे डेवलपर्स दोहराए जाने वाले कार्यों के बजाय नवाचार पर ध्यान केंद्रित कर पाते हैं।
हालांकि, सिर्फ़ vibe-coding के ज़रिए एक एप्लिकेशन बनाने के मेरे प्रयास ने कोडिंग सिद्धांतों की ठोस बुनियादी समझ के महत्व को रेखांकित किया। AI-जनित कोड पर बिना उसकी उपयुक्तता की जांच किए आँख मूंद कर निर्भरता जटिलताओं को जन्म दे सकती है, जिससे डेवलपर्स ऐसे त्रुटियों के प्रति असुरक्षित हो जाते हैं जिन्हें वे पूरी तरह समझ नहीं पाते।
ज़्यादातर मामलों में Tabnine कुशलतापूर्वक काम करता रहा, फिर भी अक्सर ऐसा लगा कि पर्दे के पीछे का AI मॉडल ही असली कार्यकर्ता था, जो GitHub Copilot जैसे अन्य टूल्स के तुल्य है। जबकि Tabnine वाकई एक उपयोगी टूल है, यह अनुभव जटिल सॉफ्टवेयर एप्लिकेशंस के प्रभावी और टिकाऊ विकास के लिए पारंपरिक कोडिंग ज्ञान के अपरिवर्तनीय मूल्य को रेखांकित करता है।
