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

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

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

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

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

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

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

कोड जनरेट करना:

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

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

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

किसी कॉन्सेप्ट को समझाने के लिए:

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

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

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

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

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

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

जवाब तैयार करना:

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

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

अगर आपको ज़्यादा ओपन-एंडेड सवाल पूछना है, तो x विकल्पों के लिए पूछें.

जवाबों की संख्या सीमित करना:

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

मुश्किल टास्क को छोटे हिस्सों में बांटना

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

एक के बाद एक प्रॉम्प्ट लागू करना:

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

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

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

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

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

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

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

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

बड़े बदलावों के ब्यौरे के बारे में पूछना

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

अपने निर्देशों में बदलाव करना

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