सबसे सही तरीके

Android Studio में Gemini, कोडिंग में आपकी मदद करता है. यह कोड जनरेट करके, मुश्किल विषयों के बारे में खास जानकारी देकर, और खास संसाधन ढूंढकर, डेवलपमेंट के आपके वर्कफ़्लो को बेहतर बनाता है. Gemini की पूरी क्षमता का इस्तेमाल करने के लिए, उससे असरदार तरीके से बातचीत करना ज़रूरी है.

इस गाइड में, डेवलपमेंट एनवायरमेंट सेट अप करने और ऐसे प्रॉम्प्ट लिखने की रणनीतियों के बारे में बताया गया है जिनसे काम के और भरोसेमंद जवाब मिलते हैं. हमने एक से ज़्यादा रणनीतियों के लिए, इस्तेमाल के अलग-अलग उदाहरणों के हिसाब से प्रॉम्प्ट दिए हैं. प्रॉम्प्ट के ज़्यादा उदाहरण देखने के लिए, प्रॉम्प्ट गैलरी देखें.

एजेंट मोड का इस्तेमाल करना

'Android Studio में Gemini' का एजेंट मोड, Gemini से चैट करने के मुकाबले ज़्यादा फ़ायदे देता है. एजेंट को कोई हाई-लेवल लक्ष्य दिया जा सकता है. इसके बाद, एजेंट समस्या को छोटे-छोटे हिस्सों में बांटकर उसे हल करने का प्लान बनाता है. एजेंट, टूल का इस्तेमाल करता है, कई फ़ाइलों में बदलाव करता है, और गड़बड़ियों को ठीक करता है. एजेंट मोड की मदद से, मुश्किल टास्क को बेहतर तरीके से मैनेज किया जा सकता है. साथ ही, इससे ऐप्लिकेशन डेवलपमेंट की पूरी प्रोसेस तेज़ हो जाती है.

सटीक जानकारी दें

Android Studio में Gemini, साफ़ तौर पर दिए गए निर्देशों के साथ सबसे अच्छा काम करता है. अगर आपको कुछ लाइब्रेरी, एपीआई या तरीकों का इस्तेमाल करना है, तो उन्हें अपने सवाल में शामिल करें. इसके अलावा, उन्हें अपने प्रोजेक्ट की रूट AGENTS.md फ़ाइल में शामिल करें, ताकि वे सभी इंटरैक्शन में बने रहें. इसे बग रिपोर्ट फ़ाइल करने जैसा समझें: जितनी ज़्यादा जानकारी दी जाएगी, समस्या उतनी ही जल्दी और असरदार तरीके से हल की जा सकेगी.

नई सुविधा लागू करना:

मैं CameraX का इस्तेमाल करके, अपने ऐप्लिकेशन में कैमरे की सुविधा कैसे जोड़ूं? लाइब्रेरी का इस्तेमाल करने के लिए, ज़रूरी डिपेंडेंसी और अनुमतियों को शामिल करना न भूलें.
मैं अपने ऐप्लिकेशन में कैमरे की सुविधा कैसे जोड़ूं?

कोड जनरेट किया जा रहा है:

Coil लाइब्रेरी का इस्तेमाल करने वाला Kotlin सस्पेंड फ़ंक्शन लिखें. यह फ़ंक्शन, दी गई यूआरएल स्ट्रिंग से इमेज डाउनलोड करेगा.

फ़ंक्शन का नाम fetchImageAsBitmap होना चाहिए. इसे Context और String यूआरएल को आर्ग्युमेंट के तौर पर लेना चाहिए. साथ ही, यह नल हो सकने वाला Bitmap वैल्यू दिखाता है. अगर नेटवर्क या डिकोडिंग से जुड़ी कोई गड़बड़ी होती है, तो उसे अपवाद को पकड़ना चाहिए, उसे लॉग करना चाहिए, और null को वापस करना चाहिए.

इमेज डाउनलोड करने के लिए एक फ़ंक्शन लिखें.

किसी कॉन्सेप्ट के बारे में जानकारी देना:

मुझे एक म्यूज़िक प्लेयर ऐप्लिकेशन बनाना है. इसके लिए, मुझे यह सुविधा चाहिए कि ऐप्लिकेशन बैकग्राउंड में चलने के दौरान भी संगीत चलता रहे.

उपयोगकर्ता के डिवाइस पर अन्य काम करते समय, मेरे ऐप्लिकेशन को चालू रखने के लिए मेरे पास कौनसे विकल्प हैं? हर तरीके के लिए, एपीआई लेवल की ज़रूरी शर्तें क्या हैं और बैटरी लाइफ़ पर इसका क्या असर पड़ता है?

Android की सेवाओं के बारे में जानकारी दो.

जवाब की संरचना के बारे में जानकारी

डिफ़ॉल्ट रूप से, Gemini बातचीत वाले पैराग्राफ़ के फ़ॉर्मैट में जवाब देता है. यह सुविधा, अक्सर जवाबों को बेहतर तरीके से समझने में मदद करती है. हालांकि, जवाब को बेहतर और तुरंत इस्तेमाल करने लायक बनाने के लिए, इसे यह बताया जा सकता है कि जवाब को किस तरह से स्ट्रक्चर करना है. आउटपुट फ़ॉर्मैट तय करने से, मॉडल को जानकारी को साफ़ तौर पर और अनुमानित तरीके से व्यवस्थित करने का निर्देश मिलता है. इससे आपको जानकारी को खुद से फिर से फ़ॉर्मैट करने में लगने वाला समय बच जाता है.

अगर आपको Gemini से जनरेट किए गए कोड को अपने ऐप्लिकेशन में डालना है और आपको कोड किसी खास फ़ॉर्मैट में चाहिए, ताकि आप उसे तुरंत इस्तेमाल कर सकें, तो Gemini को कोड जनरेट करने और उसे फ़ॉर्मैट करने के बारे में साफ़ तौर पर निर्देश दें.

जवाब को स्ट्रक्चर करना:

किसी उपयोगकर्ता प्रोफ़ाइल के लिए Room इकाई बनाएं. इसमें id, userName, email, और memberSince फ़ील्ड की जानकारी होनी चाहिए. id फ़ील्ड अपने-आप जनरेट होना चाहिए. memberSince फ़ील्ड में टाइमस्टैंप होना चाहिए.

किसी उपयोगकर्ता प्रोफ़ाइल के लिए Room इकाई बनाएं.

अगर आपको ऐसा सवाल पूछना है जिसके जवाब में कई विकल्प दिए जा सकते हैं, तो x विकल्पों के लिए सवाल पूछें.

जवाब को सीमित करना:

ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, कौनसे टूल उपलब्ध हैं? मुझे तीन सबसे अच्छे विकल्पों की सूची दो.
ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, कौनसे टूल उपलब्ध हैं?

मुश्किल अनुरोधों को छोटे-छोटे टास्क में बांटना

कई चरणों वाले मुश्किल अनुरोधों के लिए, एजेंट मोड का इस्तेमाल करें. हालांकि, अगर एजेंट का जवाब आपकी उम्मीद के मुताबिक नहीं है, तो Gemini को एक साथ सारी जानकारी देने के बजाय, सिलसिलेवार तरीके से छोटे-छोटे प्रॉम्प्ट दें. इससे आपको बेहतर जवाब मिल सकता है. इस तरीके से आपको ज़्यादा कंट्रोल मिलता है. साथ ही, अगले चरण पर जाने से पहले, हर चरण की पुष्टि करने का विकल्प मिलता है.

क्रम से प्रॉम्प्ट लागू करना:

पहला प्रॉम्प्ट: डेटा मॉडल
सबसे पहले, User नाम की Kotlin डेटा क्लास बनाएं. इसमें तीन प्रॉपर्टी होनी चाहिए: id (एक पूर्णांक), name (एक स्ट्रिंग), और email (एक स्ट्रिंग).

दूसरा प्रॉम्प्ट: नेटवर्क लेयर
अब, ApiService नाम का Retrofit API इंटरफ़ेस बनाएं. इसके लिए, एक suspend fun की ज़रूरत होती है. इसे getUsers() कहा जाता है. यह List<User> दिखाता है.

तीसरा प्रॉम्प्ट: स्टेट मैनेजमेंट
इसके बाद, एक UsersViewModel लिखें, जो ApiService को डिपेंडेंसी के तौर पर इस्तेमाल करता हो. UsersViewModel को सील की गई UiState क्लास का StateFlow दिखाना चाहिए. यह Loading, Success(users: List) और Error(message: String) स्थितियों को दिखा सकता है. उपयोगकर्ताओं को फ़ेच करने और स्थिति को अपडेट करने के लिए, ViewModel में एक फ़ंक्शन बनाएं. नई सुविधाओं के लिए यूनिट टेस्ट लिखना

चौथा प्रॉम्प्ट: यूज़र इंटरफ़ेस (यूआई) लेयर
आखिर में, UserListScreen नाम का Jetpack Compose फ़ंक्शन लिखें. यह UiState को पैरामीटर के तौर पर स्वीकार करता है. लोडिंग की स्थिति के लिए CircularProgressIndicator, सफलता की स्थिति के लिए उपयोगकर्ता के नामों का LazyColumn, और गड़बड़ी की स्थिति के लिए गड़बड़ी के मैसेज वाला Text एलिमेंट दिखाने के लिए, when स्टेटमेंट का इस्तेमाल करें. ऐसे टेस्ट जोड़ें जिनसे नई सुविधा की पुष्टि हो सके.

Jetpack Compose की ऐसी स्क्रीन बनाओ जो JSON API से उपयोगकर्ताओं की सूची फ़ेच करे और उसे सूची में दिखाए. इसमें ViewModel होना चाहिए, जो Retrofit और कोरूटीन का इस्तेमाल करता हो. साथ ही, इसमें डेटा लॉजिक को मैनेज करने के लिए एक रिपॉज़िटरी, एक User डेटा क्लास, और लोडिंग और गड़बड़ी की स्थितियां दिखाने की सुविधा होनी चाहिए.

कॉन्टेक्स्ट मैनेज करना

Android Studio में Gemini का इस्तेमाल करने के लिए, सही कॉन्टेक्स्ट देना ज़रूरी है. सबसे काम के जवाब पाने के लिए, कोड स्निपेट, फ़ाइल का कॉन्टेंट, और प्रोजेक्ट स्ट्रक्चर की जानकारी दें. आपको सही संतुलन बनाए रखने के लिए, कई बार कोशिश करनी पड़ सकती है: बहुत ज़्यादा जानकारी देने से, Gemini को सही जवाब देने में मुश्किल हो सकती है. वहीं, बहुत कम जानकारी देने से, Gemini को जवाब देने के लिए ज़रूरी कॉन्टेक्स्ट नहीं मिल पाएगा. ज़रूरी कॉन्टेक्स्ट का ऐक्सेस देने के लिए, उपलब्ध सुविधाओं का इस्तेमाल करें:

  • इमेज अटैच करें, ताकि आपको यूज़र इंटरफ़ेस (यूआई) का विज़ुअल मिल सके. इससे आपको यह समझने में मदद मिलेगी कि आपको किस तरह का यूज़र इंटरफ़ेस (यूआई) चाहिए या ऐप्लिकेशन का आर्किटेक्चर कैसा होना चाहिए.
  • कोडबेस के काम के हिस्सों को हाइलाइट करने के लिए, फ़ाइलें अटैच करें.
  • Gemini को कोडबेस के कुछ हिस्सों को अनदेखा करने के लिए, .aiexclude फ़ाइलों का इस्तेमाल करें.
  • AGENTS.md फ़ाइलों का इस्तेमाल करके, प्रोजेक्ट के हिसाब से निर्देश दें और उन्हें अपनी टीम के साथ शेयर करें. AGENTS.md फ़ाइलों का इस्तेमाल करते समय, अपने निर्देशों को साफ़ तौर पर बताने के लिए, Markdown हेडर और फ़ॉर्मैटिंग का इस्तेमाल करें.
  • एजेंट मोड का इस्तेमाल करते समय, एमसीपी सर्वर कॉन्फ़िगर करें, ताकि Gemini को बाहरी एनवायरमेंट के बारे में ज़्यादा जानकारी मिल सके और वह बेहतर तरीके से काम कर सके.

एक्सप्लेनेशंस के लिए अनुरोध करना

अगर आपको Android Studio में Gemini के जवाब समझ में नहीं आते हैं, तो जवाब के बारे में जानकारी मांगें. यह सीखने और यह पुष्टि करने का एक बेहतरीन तरीका है कि सुझाया गया समाधान, आपके इस्तेमाल के उदाहरण के लिए सही है. अगर जवाब आपकी उम्मीद के मुताबिक नहीं है, तो हो सकता है कि Gemini से कोई गलती हुई हो. जवाब के बारे में जानकारी माँगने से, Gemini को अपनी गलती सुधारने का मौका मिलेगा.

अपने निर्देशों को बेहतर बनाना

जैसे, किसी सहकर्मी के साथ काम करते समय, आपको कभी-कभी किसी काम और उसके नतीजे के बारे में साफ़ तौर पर बताने के लिए, उससे बातचीत करनी पड़ती है. इसी तरह, Android Studio में Gemini के साथ काम करते समय भी, आपको कभी-कभी किसी काम और उसके नतीजे के बारे में साफ़ तौर पर बताने के लिए, उससे बातचीत करनी पड़ सकती है. अगर Gemini का शुरुआती जवाब आपकी ज़रूरत के हिसाब से नहीं है, तो उसे बेहतर बनाने के लिए सुझाव दें और अपनी राय शेयर करें. अगर आपके सुझावों के आधार पर, जवाब बेहतर होता है, तो उस सुझाव को ओरिजनल प्रॉम्प्ट में शामिल करें. इसके लिए, प्रॉम्प्ट लाइब्रेरी में एंट्री अपडेट करें या AGENTS.md फ़ाइलें अपडेट करें.