1. Overture
अब अलग-अलग डेवलपमेंट टीम के साथ काम करने का दौर खत्म हो रहा है. टेक्नोलॉजी के विकास की अगली लहर, किसी एक व्यक्ति की प्रतिभा के बारे में नहीं है, बल्कि साथ मिलकर काम करने की महारत के बारे में है. एक ही स्मार्ट एजेंट बनाना, एक दिलचस्प एक्सपेरिमेंट है. मॉडर्न एंटरप्राइज़ के लिए, एजेंट का एक मज़बूत, सुरक्षित, और बेहतर इकोसिस्टम बनाना एक बड़ी चुनौती है. इसे Agentverse कहा जाता है.
इस नए दौर में सफलता पाने के लिए, चार अहम भूमिकाओं को एक साथ लाना ज़रूरी है. ये ऐसी बुनियादी बातें हैं जो किसी भी एजेंटिक सिस्टम को बेहतर बनाने में मदद करती हैं. किसी भी एक क्षेत्र में कमी होने से, पूरी संरचना कमज़ोर हो जाती है.
यह वर्कशॉप, Google Cloud पर एजेंटिक एआई का इस्तेमाल करने के लिए, एंटरप्राइज़ प्लेबुक है. हम आपको एक ऐसा रोडमैप देते हैं जो किसी आइडिया के शुरुआती चरण से लेकर उसे पूरी तरह से लागू करने तक आपका मार्गदर्शन करता है. इन चार इंटरकनेक्टेड लैब में, आपको यह जानने को मिलेगा कि एक पावरफ़ुल Agentverse बनाने, मैनेज करने, और उसे स्केल करने के लिए, डेवलपर, आर्किटेक्ट, डेटा इंजीनियर, और एसआरई की खास क्षमताओं को कैसे एक साथ लाया जाना चाहिए.
कोई भी पिलर, Agentverse को अकेले सपोर्ट नहीं कर सकता. डेवलपर के सटीक तरीके से काम किए बिना, आर्किटेक्ट का शानदार डिज़ाइन किसी काम का नहीं होता. डेटा इंजीनियर के बिना डेवलपर का एजेंट कुछ नहीं कर सकता. साथ ही, एसआरई के बिना पूरा सिस्टम असुरक्षित है. आपकी टीम, एक-दूसरे की भूमिकाओं को समझकर और तालमेल बिठाकर ही, किसी नए कॉन्सेप्ट को मिशन के लिए ज़रूरी और व्यावहारिक हकीकत में बदल सकती है. आपका सफ़र यहां से शुरू होता है. अपनी भूमिका को बेहतर तरीके से निभाने के लिए तैयार रहें. साथ ही, जानें कि आप किस तरह से पूरी टीम के साथ मिलकर काम कर सकते हैं.
'द एजेंटवर्स: ए कॉल टू चैंपियंस' में आपका स्वागत है
एंटरप्राइज़ के विशाल डिजिटल क्षेत्र में, एक नया दौर शुरू हो गया है. यह एजेंटिक युग है. इसमें एआई एजेंट, इनोवेशन को बढ़ावा देने और रोज़मर्रा के कामों को आसान बनाने के लिए, एक साथ मिलकर काम करते हैं.

पावर और संभावनाओं से जुड़े इस कनेक्टेड इकोसिस्टम को Agentverse कहा जाता है.
हालांकि, इस नई दुनिया में धीरे-धीरे एक ख़तरनाक बदलाव हो रहा है. इसे 'द स्टैटिक' कहा जाता है. यह बदलाव, इस नई दुनिया को अंदर ही अंदर खोखला कर रहा है. स्टैटिक कोई वायरस या बग नहीं है. यह एक तरह का अराजकतावादी है, जो क्रिएशन के काम को ही अपना शिकार बनाता है.
यह पुरानी समस्याओं को और बढ़ा देता है. इससे डेवलपमेंट की सात समस्याएं पैदा होती हैं. अगर इस पर ध्यान नहीं दिया गया, तो The Static और इसके Spectres, प्रोग्रेस को रोक देंगे. इससे Agentverse का वादा, तकनीकी कर्ज़ और छोड़े गए प्रोजेक्ट के बंजर इलाके में बदल जाएगा.
आज हम ऐसे लोगों को आगे आने का न्योता देते हैं जो इस अराजकता को खत्म करने में हमारी मदद कर सकें. हमें ऐसे हीरो की ज़रूरत है जो अपनी कला में माहिर हों और एजेंटवर्स को बचाने के लिए साथ मिलकर काम कर सकें. अब आपको अपना रास्ता चुनना है.
अपनी क्लास चुनना
आपके सामने चार अलग-अलग रास्ते हैं. इनमें से हर एक, द स्टैटिक के ख़िलाफ़ लड़ाई में अहम भूमिका निभाता है. आपकी ट्रेनिंग अकेले ही होगी. हालांकि, आपकी सफलता इस बात पर निर्भर करती है कि आपकी स्किल, दूसरों की स्किल के साथ मिलकर कैसे काम करती हैं.
- द शैडोब्लेड (डेवलपर): यह फ़ोर्ज और फ़्रंट लाइन का मास्टर है. आप एक ऐसे कारीगर हैं जो ब्लेड बनाता है, टूल बनाता है, और कोड की जटिलताओं में दुश्मन का सामना करता है. आपका रास्ता सटीक, कुशल, और व्यावहारिक है.
- द समनर (आर्किटेक्ट): यह एक बेहतरीन रणनीतिकार और आयोजक होता है. आपको सिर्फ़ एक एजेंट नहीं, बल्कि पूरा बैटलग्राउंड दिखता है. आपको ऐसे मास्टर ब्लूप्रिंट डिज़ाइन करने होते हैं जिनकी मदद से, एजेंट के पूरे सिस्टम को कम्यूनिकेट करने, साथ मिलकर काम करने, और किसी एक कॉम्पोनेंट से ज़्यादा बड़ा लक्ष्य हासिल करने में मदद मिलती है.
- स्कॉलर (डेटा इंजीनियर): यह छिपी हुई सच्चाई को ढूंढता है और ज्ञान को सुरक्षित रखता है. डेटा के विशाल और अनियंत्रित जंगल में, आपको ऐसी जानकारी मिलती है जो आपके एजेंट को मकसद और दिशा देती है. आपकी जानकारी से, किसी दुश्मन की कमज़ोरी का पता चल सकता है या किसी सहयोगी को मज़बूत किया जा सकता है.
- The Guardian (DevOps / SRE): यह सुरक्षा करने वाला और शील्ड देने वाला होता है. आपको किले बनाने होते हैं, बिजली की सप्लाई लाइनें मैनेज करनी होती हैं, और यह पक्का करना होता है कि पूरा सिस्टम, स्टैटिक के हमलों का सामना कर सके. आपकी ताकत ही वह आधार है जिस पर आपकी टीम की जीत टिकी होती है.
आपका मिशन
आपकी ट्रेनिंग, एक अलग कसरत के तौर पर शुरू होगी. आपको अपनी चुनी हुई राह पर चलना होगा. साथ ही, अपनी भूमिका में महारत हासिल करने के लिए, ज़रूरी खास कौशल सीखने होंगे. ट्रायल के आखिर में, आपको स्टैटिक से पैदा हुए स्पेकटर का सामना करना होगा. यह एक मिनी-बॉस है, जो आपके क्राफ़्ट की खास चुनौतियों का फ़ायदा उठाता है.
अपनी भूमिका में महारत हासिल करके ही, फ़ाइनल ट्रायल के लिए तैयारी की जा सकती है. इसके बाद, आपको दूसरी क्लास के चैंपियन के साथ मिलकर एक पार्टी बनानी होगी. साथ मिलकर, आपको भ्रष्टाचार के केंद्र में जाकर, सबसे बड़े बॉस का सामना करना होगा.
एक आखिरी और साथ मिलकर पूरा किया जाने वाला चैलेंज, जिसमें आपकी और आपके साथियों की ताकत की परीक्षा होगी. इससे Agentverse का भविष्य तय होगा.
Agentverse को है अपने हीरो का इंतज़ार. क्या आपको कॉल का जवाब देना है?
2. द शैडोब्लेड का कोडेक्स
Shadowblade का कोडेक्स आपके सामने खुला हुआ है. उसके कॉल का जवाब दें. Agentverse पर The Static का खतरा मंडरा रहा है. सिर्फ़ वे लोग इसका मुकाबला कर सकते हैं जो इस कोडेक्स में बताई गई तकनीकों में माहिर हैं. यह सटीक और अनुशासन का रास्ता है. आज से आपकी ट्रेनिंग शुरू हो रही है. आपको एआई को सिर्फ़ एक टूल के तौर पर नहीं, बल्कि एक ऐसी तलवार के तौर पर इस्तेमाल करना सीखना होगा जिसे काबू में रखना और चलाना ज़रूरी है. यहां दी गई बातों को ध्यान में रखें. इससे आपको एक ऐसा हथियार बनाने में मदद मिलेगी जो पूरी तरह से तर्क पर आधारित होगा. यह एक ऐसा इंटेलिजेंट एजेंट होगा जो हर तरह की चुनौती का सामना करने के लिए तैयार होगा.

आपको क्या सीखने को मिलेगा
- Gemini CLI का इस्तेमाल करें.
- Gemini के सीएलआई एक्सटेंशन और एजेंट की क्षमताओं का इस्तेमाल करके, अपने टूलकिट को बेहतर बनाएं.
- Gemini सीएलआई के साथ एमसीपी टूल को इंटिग्रेट करके, बाहरी टूल को ऐक्सेस करें.
- अपने इरादे को "वाइब" में बदलें. इसके लिए, डिज़ाइन दस्तावेज़ों का इस्तेमाल करके, एआई पार्टनर को निर्देश दें.
- एजेंट डेवलपमेंट किट (एडीके) का इस्तेमाल करके, अपना पहला ऑटोनॉमस एजेंट बनाएं और एक मॉड्यूलर समाधान तैयार करें.
- अपने एजेंट के व्यवहार को रोकने और उसकी सुरक्षा करने के लिए, हुक लिखें.
- अपने एजेंट की जांच करने और उसकी पुष्टि करने के लिए, अपने-आप आकलन करने वाले सुइट बनाएं.
- अपने एजेंट को अपने-आप टेस्ट करने, कंटेनर में रखने, और संग्रहित करने के लिए, पूरी सीआई पाइपलाइन बनाएं.
3. ट्रेनिंग ग्राउंड तैयार करना
Google Cloud क्रेडिट पर दावा करना
⚠️ ज़रूरी शर्तें:
- निजी Gmail खाते का इस्तेमाल करें: आपको निजी खाते का इस्तेमाल करना होगा. जैसे,
name@gmail.com. कंपनी या स्कूल के एडमिन के मैनेज किए गए खाते काम नहीं करेंगे.
👉 तरीका:
- क्रेडिट का दावा करने वाली साइट पर जाएं: यहां क्लिक करें
- साइन इन करें: लिंक को पता बार में चिपकाएं और अपने निजी Gmail खाते से साइन इन करें.
- शर्तें स्वीकार करें: Google Cloud Platform की सेवा की शर्तें स्वीकार करें.
- क्रेडिट की पुष्टि करें: पुष्टि करने वाला मैसेज देखें कि क्रेडिट लागू कर दिया गया है.
- *ध्यान दें: अगर आपसे क्रेडिट कार्ड की जानकारी डालने के लिए कहा जाता है, तो इसे अनदेखा करें और विंडो बंद करें.
अब आप इस विंडो को बंद कर सकते हैं.
काम करने का एनवायरमेंट सेट अप करना
👉Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें. यह Cloud Shell पैनल में सबसे ऊपर मौजूद, टर्मिनल के आकार वाला आइकॉन है. 
👉 "एडिटर खोलें" बटन पर क्लिक करें. यह बटन, पेंसिल वाले खुले फ़ोल्डर की तरह दिखता है. इससे विंडो में Cloud Shell Code Editor खुल जाएगा. आपको बाईं ओर फ़ाइल एक्सप्लोरर दिखेगा. 
👉क्लाउड आईडीई में टर्मिनल खोलें,

👉💻 टर्मिनल में, पुष्टि करें कि आपने पहले ही पुष्टि कर ली है और प्रोजेक्ट को अपने प्रोजेक्ट आईडी पर सेट किया गया है. इसके लिए, यह कमांड इस्तेमाल करें:
gcloud auth list
👉💻 GitHub से बूटस्ट्रैप प्रोजेक्ट का क्लोन बनाएं:
git clone https://github.com/weimeilin79/agentverse-developer.git
chmod +x ~/agentverse-developer/gitea.sh
chmod +x ~/agentverse-developer/init.sh
chmod +x ~/agentverse-developer/set_env.sh
git clone https://github.com/weimeilin79/agentverse-dungeon.git
chmod +x ~/agentverse-dungeon/run_cloudbuild.sh
chmod +x ~/agentverse-dungeon/start.sh
👉💻 प्रोजेक्ट डायरेक्ट्री से सेटअप स्क्रिप्ट चलाएं.
⚠️ प्रोजेक्ट आईडी के बारे में जानकारी: स्क्रिप्ट, डिफ़ॉल्ट प्रोजेक्ट आईडी का सुझाव देगी. यह आईडी रैंडम तरीके से जनरेट किया जाएगा. इस डिफ़ॉल्ट को स्वीकार करने के लिए, Enter दबाएं.
हालांकि, अगर आपको कोई नया प्रोजेक्ट बनाना है, तो स्क्रिप्ट के प्रॉम्प्ट करने पर, अपना पसंदीदा प्रोजेक्ट आईडी टाइप करें.
cd ~/agentverse-developer
./init.sh
स्क्रिप्ट, सेटअप की बाकी प्रोसेस को अपने-आप पूरा कर देगी.
👉 स्क्रिप्ट पूरी होने के बाद ज़रूरी चरण: स्क्रिप्ट पूरी होने के बाद, आपको यह पक्का करना होगा कि Google Cloud Console में सही प्रोजेक्ट दिख रहा हो:
- console.cloud.google.com पर जाएं.
- पेज पर सबसे ऊपर मौजूद, प्रोजेक्ट चुनने वाले ड्रॉपडाउन पर क्लिक करें.
- "सभी" टैब पर क्लिक करें. ऐसा इसलिए, क्योंकि हो सकता है कि नया प्रोजेक्ट अभी "हाल ही के" टैब में न दिखे.
init.shचरण में कॉन्फ़िगर किया गया प्रोजेक्ट आईडी चुनें.

👉💻 वापस टर्मिनल में जाएं. ज़रूरी प्रोजेक्ट आईडी सेट करें:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 ज़रूरी Google Cloud API चालू करने के लिए, यह कमांड चलाएं:
gcloud services enable compute.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
iam.googleapis.com \
aiplatform.googleapis.com \
cloudresourcemanager.googleapis.com
👉💻 अगर आपने agentverse-repo नाम की Artifact Registry रिपॉज़िटरी पहले से नहीं बनाई है, तो इसे बनाने के लिए यह कमांड चलाएं:
. ~/agentverse-developer/set_env.sh
gcloud artifacts repositories create $REPO_NAME \
--repository-format=docker \
--location=$REGION \
--description="Repository for Agentverse agents"
अनुमति सेट अप करना
👉💻 टर्मिनल में ये कमांड चलाकर, ज़रूरी अनुमतियां दें:
. ~/agentverse-developer/set_env.sh
# Artifact Registry Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/artifactregistry.admin"
# Cloud Build Editor
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/cloudbuild.builds.editor"
# Cloud Run Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/run.admin"
# IAM Service Account User
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/iam.serviceAccountUser"
# Vertex AI User
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/aiplatform.user"
# Logging Writer (to allow writing logs)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/logging.viewer"
👉💻 ट्रेनिंग शुरू करने के बाद, हम फ़ाइनल चैलेंज तैयार करेंगे. नीचे दिए गए निर्देश, स्टैटिक से स्पेकटर को बुलाते हैं. इससे आपके टेस्ट के लिए बॉस तैयार हो जाते हैं.
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-dungeon
./run_cloudbuild.sh
npm update -g @google/gemini-cli
4. अपने मुख्य हथियार में महारत हासिल करना: Gemini CLI के बारे में जानकारी
एमसीपी सर्वर के शस्त्रागार में मौजूद बेहतर और खास हथियारों का इस्तेमाल करने से पहले, आपको अपने मुख्य हथियार यानी Gemini CLI में महारत हासिल करनी होगी. यह आपका सबसे दमदार ब्लेड है. इसकी मदद से, बोलकर दिए गए निर्देशों के ज़रिए डिजिटल दुनिया को अपने हिसाब से बनाया जा सकता है. इन ड्रिल से, आपको इसकी बुनियादी हैंडलिंग और क्षमताओं के बारे में जानकारी मिलेगी.

Gemini का कमांड लाइन इंटरफ़ेस (सीएलआई) सिर्फ़ एक टूल नहीं है, बल्कि यह आपकी इच्छाओं को पूरा करने का एक ज़रिया है. यह ओपन-सोर्स एआई एजेंट, Gemini मॉडल की मदद से काम करता है. यह "वजह बताओ और कार्रवाई करो" (ReAct) लूप पर काम करता है. यह आपके इरादे का विश्लेषण करता है, सही तकनीक चुनता है, उसे लागू करता है, और मुश्किल टास्क पूरे करने के लिए नतीजे देखता है. ज़्यादा खास हथियार इस्तेमाल करने से पहले, आपको इस मुख्य ब्लेड को चलाने में महारत हासिल करनी होगी.
Gemini के सीएलआई का इस्तेमाल शुरू करना
👉💻 ट्रेनिंग ग्राउंड में जाएं और अपना हथियार निकालें. Cloud Shell टर्मिनल में, अपने निजी आर्मरी पर जाएं.
cd ~/agentverse-developer
mkdir tabletop
cd tabletop
👉💻 पहली बार Gemini को ऐक्सेस करें. यह आपको शुरुआती अट्यूनमेंट के बारे में जानकारी देगा.
clear
gemini
अगर आपसे Do you want to connect Cloud Shell editor to Gemini CLI? पूछा जाता है, तो नहीं चुनें.
हथियार के बारे में जानकारी
हर मास्टर कारीगर को अपने औज़ारों के बारे में पता होता है. किसी असली दुश्मन का सामना करने से पहले, आपको अपनी तलवार चलाने की बुनियादी तकनीकें सीखनी होंगी.
👉✨ हर जादुई टूल में ऐसे रून्स होते हैं जिनसे उसकी ताकत के बारे में पता चलता है. इन्हें अभी पढ़ें. Gemini के प्रॉम्प्ट में, यह टाइप करें:
/help
निर्देशों की सूची देखें. ये याददाश्त (focus), बातचीत (chat), और बाहरी संसाधनों (tools) को मैनेज करने के बुनियादी तरीके हैं. यह आपकी कॉम्बैट मैनुअल है.
👉✨ आपका हथियार, अपने आस-पास के माहौल के हिसाब से काम करता है. इससे आपको सीधे तौर पर जंग के मैदान में बदलाव करने की सुविधा मिलती है. ब्लेड के बाहर की दुनिया के लिए कोई निर्देश जारी करें:
!ls -l
👉✨ Gemini CLI में, पहले से मौजूद सुविधाओं का अपना सेट होता है. उनकी जांच करने के लिए:
/tools
आपको ReadFile, WriteFile, और GoogleSearch की सूची दिखेगी. ये डिफ़ॉल्ट तकनीकें हैं. इनका इस्तेमाल करने के लिए, आपको किसी बाहरी सोर्स से मदद लेने की ज़रूरत नहीं होती.
👉✨ एक्सटेंशन की मदद से भी अपने ब्लेड को बेहतर बनाया जा सकता है. ये पहले से तैयार किए गए एनचांटमेंट होते हैं. इन्हें अन्य मास्टर बनाते हैं. ये टूल, कमांड, और कॉन्टेक्स्ट को एक ही इंस्टॉल करने लायक यूनिट में पैकेज करते हैं. देखें कि फ़िलहाल आपके ब्लेड के साथ कौनसे एक्सटेंशन काम कर रहे हैं:
/extensions list
फ़िलहाल, यह सूची खाली हो सकती है. ऐसा इसलिए, क्योंकि आपने अब तक कोई एक्सटेंशन इंस्टॉल नहीं किया है. आपको अपना पहला एक्सटेंशन बाद में इस्तेमाल करना होगा, जब ट्रेनिंग के दौरान इमेज बनाने की ज़रूरत होगी.
👉✨ एक्सटेंशन के अलावा, कुशल मास्टर्स ने अपनी विशेषज्ञता को एजेंट स्किल में कोड किया है. ये खास जानकारी वाले स्क्रोल होते हैं, जो ज़रूरत के हिसाब से उपलब्ध होते हैं. देखें कि आपका ब्लेड कौनसी स्किल ढूंढ सकता है:
/skills list
स्किल्स को डिफ़ॉल्ट रूप से मेमोरी में लोड नहीं किया जाता. इन्हें सिर्फ़ तब चालू किया जाता है, जब इनकी ज़रूरत होती है. इससे आपका डिवाइस तेज़ी से काम करता है और उस पर कोई असर नहीं पड़ता. आपको ट्रेनिंग के दौरान, बाद में कौशल का इस्तेमाल करना सिखाया जाएगा.
👉✨ हथियार का सही तरीके से इस्तेमाल करने पर ही, वह असरदार होता है. Gemini Blade में "टैक्टिकल अवेयरनेस" (कॉन्टेक्स्ट) की जानकारी होती है, ताकि वह अपनी कार्रवाइयों के बारे में बता सके.
/memory show
फ़िलहाल, यह खाली है.
👉✨ इस रणनीति से जुड़े डेटा को अपनी मेमोरी में सेव करो:
/memory add "The Shadowblade's primary foe is The Static."
/memory show को फिर से चलाएं, ताकि यह पुष्टि की जा सके कि आपके ब्लेड ने इस जानकारी को समझ लिया है.
👉✨ असरदार होने के लिए, आपके हथियार को मिशन के बारे में पता होना चाहिए. @ सिगिल, ब्लेड को इंटेल का विश्लेषण करने का निर्देश देता है. सबसे पहले, मिशन की जानकारी देने वाली फ़ाइल बनाएं:
!echo "## Mission Objective: Defeat the Seven Spectres" > mission.md
👉✨अब, Gemini CLI को ब्रीफ़िंग का विश्लेषण करने और उसके नतीजों की रिपोर्ट बनाने का निर्देश दें:
Explain the contents of the file @mission.md
आपके मुख्य हथियार को अब अपने लक्ष्य के बारे में पता चल गया है.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं
5. Analyzing the Battlefield: Practical Vibe Coding Interaction
ट्रेनिंग ड्रिल पूरी हो गई हैं. आपने Gemini CLI के मुख्य हथियार के बुनियादी स्टांस और स्ट्राइक के बारे में जान लिया है. लेकिन, किसी ब्लेड को तब तक पूरी तरह से नहीं बनाया जा सकता, जब तक उसे बनाने की भट्टी में न आज़माया गया हो और युद्ध के हथियार के तौर पर इस्तेमाल करने के लिए तैयार न किया गया हो. अपने असली दुश्मन का सामना करने से पहले, आपको अपने आस-पास के माहौल का सर्वे करना होगा और उसे अपने हिसाब से ढालना होगा. यह डिजिटल बैटलग्राउंड है.

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

👉💻 अगर आपने पिछले सेक्शन में Gemini CLI बंद कर दिया था, तो टर्मिनल में जाकर इसे फिर से शुरू करें
clear
cd ~/agentverse-developer/tabletop
gemini
👉✨ एक ही कमांड से, Gemini CLI को अपनी डिजिटल पहचान बनाने के लिए निर्देश दें:
In the current folder, create a personal profile website for a hero codenamed 'Shadowblade'. The design must be a dark, futuristic theme with electric blue accents. All code must be in separate index.html and styles.css files. The layout must use CSS Flexbox for a two-column design. All generated code must be clean, well-commented, and professional. Make sure you have a placeholder spot for profile picture. Do not attempt to start the server.
Gemini ने ज़रूरी कार्रवाइयों का क्रम तय कर लिया है.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं और टर्मिनल में यह कमांड चलाएं.*
python -m http.server
👀 अपने काम की झलक देखने के लिए, Cloud Shell टूलबार में मौजूद वेब प्रीव्यू आइकॉन पर क्लिक करें. पोर्ट बदलें को चुनें. इसके बाद, इसे 8000 पर सेट करें. इसके बाद, बदलें और झलक देखें पर क्लिक करें. आपको अपनी वेबसाइट की झलक दिखेगी. 
ऐसा हो सकता है कि आपकी वेबसाइट मेरी वेबसाइट से अलग दिख रही हो. यह आपका यूनीक मार्क है. 
अब आपकी हस्ताक्षर करने की तकनीक बेहतर हो गई है. इसलिए, अब लाइव सिम्युलेशन की ज़रूरत नहीं है. ब्लेड को बंद करने का निर्देश दें.
👉💻 एचटीटीपी सर्वर से बाहर निकलने के लिए, Ctrl+C दबाएं.
अब आपकी डिजिटल पहचान बन गई है. इससे भी ज़्यादा ज़रूरी यह है कि आपने बड़ी ज़िम्मेदारी को और भी ज़्यादा सावधानी से निभाने का अहम सबक सीख लिया है.
Activate Your Local Arsenal: The Gitea Armory
शैडोब्लेड की असली क्षमता सिर्फ़ उसकी निजी स्किल से नहीं, बल्कि उसके हथियारों की क्वालिटी से भी तय होती है. अब आपको अपना लोकल वेपन रैक यानी Gitea सर्वर चालू करना होगा. साथ ही, अपनी ब्लेड को उसकी पावर के हिसाब से सेट करना होगा. यह टूलकिट, मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) सर्वर के ज़रिए आपके Gemini CLI से कनेक्ट होती है. यह एक खास पोर्टल है, जो आपके एआई ब्लेड को बाहरी टूल और सेवाओं के साथ इंटरैक्ट करने की अनुमति देता है. इससे आपका टर्मिनल, एक स्मार्ट और ऐक्शन-ओरिएंटेड वर्कस्पेस में बदल जाता है.
डेवलपर के लिए जानकारी: एमसीपी सर्वर को पावर के स्रोत के तौर पर समझें. यह एक खास पोर्टल है, जो आपके एआई के दिमाग को बाहरी टूल के शरीर से जोड़ता है. इसी वजह से, Gemini CLI सिर्फ़ बातचीत करने वाले एआई मॉडल से बढ़कर, एक ऐसा एजेंट बन जाता है जो आपके निर्देशों के मुताबिक काम करता है. अपने ब्लेड को इन एमसीपी पोर्टल के साथ जोड़कर, उसे कई तरह की कार्रवाइयां करने की अनुमति दी जाती है. जैसे, फ़ाइलों को मैनेज करना, डेटाबेस से क्वेरी करना, एपीआई के साथ इंटरैक्ट करना वगैरह. इन पोर्टल का पूरा एक ईकोसिस्टम मौजूद है. इसे डेवलपर ने एआई एजेंट को दमदार प्लैटफ़ॉर्म से कनेक्ट करने के लिए बनाया है. डेटाबेस से इंटरैक्ट करने, कोड को सुरक्षित करने या यहां तक कि पेयर प्रोग्रामिंग के लिए भी एमसीपी सर्वर होते हैं. इनकी मदद से कई काम किए जा सकते हैं. साथ ही, डेवलपर किसी भी प्रोजेक्ट के लिए अपने वर्कस्पेस को पसंद के मुताबिक बना सकता है.
आज हम दो बुनियादी शक्तियों पर फ़ोकस करेंगे. ये किसी भी "वाइब कोडर" के लिए ज़रूरी हैं: फ़ोर्ज को कंट्रोल करने की शक्ति और कल्पना से कुछ बनाने की शक्ति. सबसे पहले, आपको अपने ब्लेड को Git सर्वर से जोड़ना होगा. इससे आपको अपने सोर्स कोड रिपॉज़िटरी पर कंट्रोल मिल जाएगा. इसके बाद, आपको इमेज जनरेट करने के लिए दूसरे एमसीपी सर्वर से कनेक्ट किया जाएगा. इससे, सिर्फ़ एक कमांड देकर विज़ुअल ऐसेट बनाई जा सकेंगी.
आइए, हम आपके नए शस्त्रागार के पहले और सबसे बुनियादी हिस्से को बुलाकर शुरुआत करते हैं: शस्त्रागार.
👉💻 अपने टर्मिनल में, आर्मरी को ऐक्टिवेट करने वाली स्क्रिप्ट को एक्ज़ीक्यूट करें:
cd ~/agentverse-developer
./gitea.sh
यह स्क्रिप्ट, Gitea कंटेनर को चालू करती है और एमसीपी पोर्टल खोलती है. इससे Gemini को इसे समझने और इसके साथ इंटरैक्ट करने की अनुमति मिलती है.
👉 अपने नए शस्त्रागार की जांच करने के लिए, आपको वेब प्रीव्यू देखना होगा.
👉 Cloud Shell टूलबार में मौजूद वेब प्रीव्यू आइकॉन से, पोर्ट बदलें को चुनें और इसे 3005 पर सेट करें. 
👉 आपको Gitea का लॉगिन पेज दिखेगा. मंत्र का इस्तेमाल करके, आर्मरी में प्रवेश करें: * उपयोगकर्ता नाम: dev * पासवर्ड: dev
👉💻 Gemini CLI में, अब तक यह नया आर्सेनल नहीं देखा जा सकता. आपको एक अहम अट्यूनमेंट करना होगा. इसके लिए, आपको Gemini CLI के कॉन्फ़िगरेशन रन (settings.json) पर आर्मरी की जगह की जानकारी लिखनी होगी. अपने टर्मिनल में, यह कमांड चलाएं:
if [ ! -f ~/.gemini/settings.json ]; then
# If file does not exist, create it with the specified content
echo '{"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' > ~/.gemini/settings.json
else
# If file exists, merge the new data into it
jq '. * {"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
fi &&
cat ~/.gemini/settings.json
👀 settings.json फ़ाइल, Gemini CLI के लिए मुख्य कॉन्फ़िगरेशन है. यह इसकी प्राथमिकताओं और क्षमताओं की जानकारी देने वाली किताब के तौर पर काम करती है. इससे यह तय होता है कि सीएलआई कैसे काम करेगा, कैसा दिखेगा, और सबसे अहम बात यह है कि यह किन बाहरी शक्तियों का इस्तेमाल कर सकता है. यह फ़ाइल आम तौर पर आपकी होम डायरेक्ट्री में ~/.gemini/settings.json पर मौजूद होती है. इसके नियम आपके सभी प्रोजेक्ट पर लागू होते हैं. हालांकि, ग्लोबल सेटिंग को बदलने के लिए, प्रोजेक्ट फ़ोल्डर में मौजूद .gemini डायरेक्ट्री में, प्रोजेक्ट के हिसाब से settings.json फ़ाइलें भी बनाई जा सकती हैं.
"mcpServers": {
"gitea": {
"url": "http://localhost:8085/sse"
}
}
इस सेटिंग से Gemini को यह पता चलता है कि "gitea नाम का टूल चालू है और इस नेटवर्क पते पर निर्देश सुनने के लिए तैयार है."
👉💻 Gemini CLI को फिर से चालू करें. अपने टर्मिनल में, यह कमांड चलाएं:
clear
cd ~/agentverse-developer/tabletop/
gemini
👉✨ पुष्टि करें कि आपके ब्लेड को नया हथियार मिल गया है. इसे अपने एमसीपी पोर्टल के ज़रिए, उपलब्ध सभी हथियारों की सूची बनाने का निर्देश दें:
/mcp

अब आपको gitea और इसके साथ उपलब्ध तकनीकों की सूची दिखेगी. Your blade is attuned.
आपकी "मेकर्स मार्क" प्रोफ़ाइल, बेहतरीन तरीके से बनाई गई है. हालांकि, इसे सुरक्षित रखने के लिए, आर्मरी में सही जगह पर रखना होगा. यानी, इसे सुरक्षित रखने के लिए एक म्यान की ज़रूरत है. Gemini CLI को एक नया एजेंट बनाने का निर्देश दें.
Create a new repository named 'shadowblade-profile'. The description should be 'The Maker's Mark and digital identity for the Shadowblade operative.' I will push my own files later, so do not create any content.
Gitea के वेब इंटरफ़ेस पर वापस जाएं और उसे रीफ़्रेश करें. आपको दिखेगा कि आपके लिए नई shadowblade-profile रिपॉज़िटरी बना दी गई है. 
तलवार रखने की म्यान तैयार होने के बाद, अपने काम को सुरक्षित करें. Gemini को अपनी प्रोफ़ाइल वेबसाइट की फ़ाइलें सेव करने का निर्देश दें.
👉💻Gemini CLI में इस तकनीक के लिए फ़ाइनल कमांड जारी करें:
Using the Gitea tool, push the index.html and styles.css files to the 'shadowblade-profile' repository.
एक असली मास्टर अपने काम की पुष्टि करता है. Gitea टैब पर वापस जाएं और रिपॉज़िटरी पेज को रीफ़्रेश करें. आपके index.html और styles.css को अब सुरक्षित तरीके से संग्रहित कर दिया गया है.


👉✨ शैडोब्लेड की पहचान उसके सिगिल से होती है. हालांकि, आपको याद होगा कि आपकी वेबसाइट पर प्रोफ़ाइल इमेज मौजूद नहीं है. एक बेहतरीन कारीगर, अपनी कमियों को दूर करने के लिए उन्हें स्वीकार करता है. आपको इस गड़बड़ी को आर्मरी के रिकॉर्ड में लॉग करना होगा.
File an issue for me in the shadowblade-profile repo. The issue is that the profile image is missing.
Gitea में समस्या देखें 
गायब हुए सिगिल को बनाने के लिए, आपको एक अलग तरह की शक्ति का इस्तेमाल करना होगा. यह क्रिएशन स्पिरिट है, जो सिर्फ़ सोच से इमेज जनरेट कर सकती है. Gitea सेक्शन में, आपने कॉन्फ़िगरेशन रन में मैन्युअल तरीके से बदलाव किया था, ताकि अपने ब्लेड को एमसीपी सर्वर के साथ सिंक किया जा सके. इसे "रॉ" अप्रोच कहा जाता है. अब आपको नई तकनीक के बारे में जानकारी मिलेगी: Gemini के सीएलआई एक्सटेंशन.
एक्सटेंशन, पहले से तैयार किया गया एक एनचांटमेंट होता है. इसमें एमसीपी सर्वर, कस्टम कमांड, कॉन्टेक्स्ट, और सेटिंग को एक ही इंस्टॉल करने लायक यूनिट में पैकेज किया जाता है. एक बार में ही, मैन्युअल कॉन्फ़िगरेशन की कई लाइनों को बदल दिया जाता है.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं
क्रिएशन स्पिरिट को बुलाने से पहले, आपको अपने दायरे में उसकी शक्ति को अनलॉक करना होगा. Nano Banana एक्सटेंशन, Generative Language API का इस्तेमाल करता है. यह Vertex AI की उन सेवाओं से अलग है जिनका इस्तेमाल किया जा रहा है. इस गेटवे को चालू करना होगा और एक यूनीक कुंजी बनानी होगी, ताकि स्पिरिट को ऐक्सेस दिया जा सके.
👉💻 अपने टर्मिनल में, एपीआई चालू करें:
gcloud services enable generativelanguage.googleapis.com
👉💻 अब, एपीआई पासकोड बनाएं. यह स्पिरिट का निजी ऐक्सेस टोकन है:

- Google Cloud Console के क्रेडेंशियल पेज पर जाएं.
- सबसे ऊपर मौजूद, + CREATE CREDENTIALS पर क्लिक करें. इसके बाद, API key को चुनें.
- एपीआई पासकोड को कोई ऐसा नाम दें जिससे उसे आसानी से पहचाना जा सके. जैसे, Generative Language API Key.
- एपीआई से जुड़ी पाबंदियों वाले ड्रॉपडाउन में, Generative Language API चुनें
- कुंजी बनाएं और उसे कॉपी करें — आपको अगले चरण में इसकी ज़रूरत पड़ेगी.
👉💻 Nano Banana एक्सटेंशन इंस्टॉल करें. यह Google के Gemini के टेक्स्ट से इमेज जनरेट करने वाले खास मॉडल पर आधारित है. अपने टर्मिनल में, यह कमांड चलाएं:
gemini extensions install https://github.com/gemini-cli-extensions/nanobanana
जब आपसे एपीआई पासकोड मांगा जाए, तब अभी बनाया गया पासकोड चिपकाएं और Enter दबाएं.
👉💻 एक बार और ट्यूनिंग करनी होगी. Cloud Shell का एनवायरमेंट, डिफ़ॉल्ट रूप से एआई से जुड़े सभी अनुरोधों को Vertex AI के ज़रिए भेजता है. हालांकि, क्रिएशन स्पिरिट एक अलग गेटवे के ज़रिए काम करती है. एक्सटेंशन के पोर्टल को सही तरीके से कॉन्फ़िगर करने के लिए, यह कमांड चलाएं:
NANO_CONFIG=$(find ~/.gemini/extensions -name "gemini-extension.json" -path "*nanobanana*" 2>/dev/null | head -1) && \
jq '.mcpServers.nanobanana.env.GOOGLE_GENAI_USE_VERTEXAI = ""' "$NANO_CONFIG" > /tmp/nb_tmp.json && \
mv /tmp/nb_tmp.json "$NANO_CONFIG"
इस एक कमांड से ये सभी काम हो गए: एमसीपी सर्वर डाउनलोड हो गया, उसके टूल रजिस्टर हो गए, और कस्टम स्लैश कमांड इंस्टॉल हो गईं. इन सभी कामों के लिए, आपको settings.json को छूने की भी ज़रूरत नहीं पड़ी.
👀 डेवलपर के लिए जानकारी: एक्सटेंशन बनाम रॉ एमसीपी सर्वर इसकी तुलना Gitea सेटअप से करें. आपने वहां मैन्युअल तरीके से jq कमांड का इस्तेमाल करके, settings.json में एमसीपी सर्वर का यूआरएल डाला था. मैकेनिज़्म को समझने के लिए, "रॉ" अप्रोच का इस्तेमाल करना फ़ायदेमंद होता है. हालांकि, असल दुनिया में ज़्यादातर इस्तेमाल के लिए, एक्सटेंशन को प्राथमिकता दी जाती है. ये एमसीपी सर्वर, कस्टम कमांड (जैसे कि /generate, /edit, /story), एनवायरमेंट कॉन्फ़िगरेशन, और यहां तक कि कॉन्टेक्स्ट के हिसाब से निर्देश (बंडल किए गए GEMINI.md के ज़रिए) को एक ही शेयर किए जा सकने वाले पैकेज में बंडल करते हैं. एक्सटेंशन का पूरा इकोसिस्टम, Gemini के सीएलआई एक्सटेंशन गैलरी में मौजूद है.
👉💻 Gemini के सीएलआई में फिर से जाकर, पुष्टि करें कि एक्सटेंशन चालू है:
clear
cd ~/agentverse-developer/tabletop/
gemini
👉✨ पुष्टि करें कि एक्सटेंशन सही तरीके से काम कर रहा है:
/extensions list
अब आपको nanobanana के साथ उसके टूल और निर्देश दिखेंगे.
👉✨ Nano Banana एक्सटेंशन को एक ही कमांड देकर, अपना सिग्नल बनाने के लिए कहें. Gemini CLI में, यह कमांड डालें:
/generate a portrait of a shadowblade, pixel art style. A determined warrior with long, braided magenta hair, wearing black and teal armor and confidently holding a silver broadsword.
👉✨ स्पिरिट, इमेज जनरेट करेगी और उसे सीधे आपके लोकल वर्कस्पेस में रख देगी. अब ब्लेड को इस नए सिगिल का इस्तेमाल करने का निर्देश दो. (ऐसा हो सकता है कि Gemini ने आपके लिए यह काम पहले ही कर दिया हो! पिछले जवाब को देखें. हो सकता है कि वह इतना स्मार्ट हो कि आपके पूछने से पहले ही यह काम कर दे!!!! )
Modify the index.html file to add my profile picture. Use the image I just generated.
👉💻 नए टर्मिनल में, एचटीटीपी सर्वर शुरू करें.
cd ~/agentverse-developer/tabletop/
python -m http.server
👀 अपने काम की झलक देखने के लिए, Cloud Shell टूलबार में मौजूद वेब प्रीव्यू आइकॉन पर क्लिक करें. पोर्ट बदलें को चुनें. इसके बाद, इसे 8000 पर सेट करें. इसके बाद, बदलें और झलक देखें पर क्लिक करें. आपको अपनी वेबसाइट की झलक दिखेगी. 
👉✨ Gemini CLI चलाने वाले टर्मिनल पर वापस जाएं और समस्या को ठीक करने के लिए कमिट करें. साथ ही, टास्क पूरा होने की जानकारी दें. इसके बाद, आर्मरी के रिकॉर्ड में दर्ज की गई समस्या को बंद करें.
Push the changed index.html file to the 'shadowblade-profile' repository using the gitea tool. Make sure you add 'Fix #1' in the commit comment. Also, close issue #1.Use the Gitea Tool and use user account "dev"
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं.
👀 अपने काम की झलक देखने के लिए, Cloud Shell टूलबार में मौजूद वेब प्रीव्यू आइकॉन पर क्लिक करें. पोर्ट बदलें को चुनें. इसके बाद, इसे 3005 पर सेट करें. इसके बाद, बदलें और झलक देखें पर क्लिक करें. आपको अपनी वेबसाइट की झलक दिखेगी. 
👉💻 एचटीटीपी सर्वर चलाने वाले टर्मिनल में, एचटीटीपी सर्वर से बाहर निकलने के लिए Ctrl+C दबाएं.
गेम नहीं खेलने वालों के लिए
6. शैडोब्लेड एजेंट को असेंबल करना: दिशा-निर्देशों के साथ वाइब कोड
प्रैक्टिस ड्रिल के लिए तय किया गया समय खत्म हो गया है. पत्थर पर स्टील के टकराने की आवाज़ कम हो जाती है. आपने अपने मुख्य हथियार में महारत हासिल कर ली है और युद्ध के लिए अपना ज़ख़ीरा तैयार कर लिया है. अब, शैडोब्लेड की असली परीक्षा होगी: एजेंट को इकट्ठा करना. यह लॉजिक को जीवंत बनाने की कला है. इसमें कोडेक्स के पवित्र ब्लूप्रिंट का इस्तेमाल करके, एजेंट की मुख्य बुद्धिमत्ता को तैयार किया जाता है. इससे आपके शस्त्रागार में मौजूद ब्लेड के लिए एक ऐसा एजेंट तैयार होता है जो सोच सकता है, तर्क कर सकता है, और अपने हिसाब से काम कर सकता है.

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

Gemini CLI, हमेशा आपकी मदद के लिए तैयार रहता है. यह आपको इन कामों में मदद कर सकता है:
- हाई-लेवल की खास जानकारी देना: यह पूरे कोडेक्स (या कोडबेस) को पढ़ सकता है. साथ ही, आपको इसके मकसद और मुख्य कॉम्पोनेंट के बारे में तुरंत जानकारी दे सकता है.
- एनवायरमेंट सेटअप करने में मदद: यह टूल इंस्टॉल करने और मशीन को कॉन्फ़िगर करने के मुश्किल तरीके के बारे में आपको जानकारी दे सकता है.
- कोडबेस में नेविगेट करना: यह आपकी गाइड के तौर पर काम कर सकता है. इससे आपको मुश्किल लॉजिक को समझने और कोड में छिपे हुए पैसेज ढूंढने में मदद मिलती है.
- ऑनबोर्डिंग दस्तावेज़ जनरेट करना: यह आपकी ज़रूरत के हिसाब से स्क्रोल बना सकता है. इससे, आपके साथ जुड़ने वाले नए सहयोगियों को लक्ष्यों, भूमिकाओं, और संसाधनों के बारे में साफ़ तौर पर जानकारी मिल सकती है.
- सीखने और सवाल-जवाब की प्रोसेस को अपने-आप होने दें: यह आपके लिए एक निजी स्कॉलर की तरह काम करता है. यह सुविधाओं या कोड के व्यवहार के बारे में सवालों के जवाब देता है, जिससे आपको ज़्यादा स्वतंत्रता मिलती है.
👉💻 पहले टर्मिनल में, shadowblade डायरेक्ट्री पर जाएं और अपने एआई पार्टनर को बुलाएं:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini
👉✨ अब अपने स्काउट को जंग के मैदान का सर्वे करने और रिपोर्ट देने का निर्देश दें.
Analyze the entire project and provide a high-level summary.
मौजूदा इलाके का मैप तैयार हो जाने के बाद, आपको उस चीज़ का ब्लूप्रिंट देखना होगा जिसे आपको बनाना है. सबसे असरदार ऑपरेशंस को अचानक नहीं किया जाता, बल्कि उन्हें सटीक डिज़ाइन के हिसाब से तैयार किया जाता है.
डेवलपर का नोट: यह डिज़ाइन दस्तावेज़, प्रोजेक्ट के लिए आधिकारिक ब्लूप्रिंट के तौर पर काम करता है. इसका मकसद, लक्ष्यों और तकनीकी तौर पर लागू करने के बारे में साफ़ तौर पर बताना है, ताकि डेवलपमेंट पर ज़्यादा मेहनत करने से पहले ही यह तय हो जाए कि क्या करना है. अच्छी तरह से तय किए गए प्लान से यह पक्का किया जा सकता है कि सभी डेवलपर एक साथ काम कर रहे हैं. इससे दोबारा काम करने का जोखिम कम होता है. साथ ही, तकनीकी कर्ज़ और स्कोप क्रीप को रोकने में मदद मिलती है. यह प्रोजेक्ट की वेलोसिटी और कोड की क्वालिटी बनाए रखने के लिए मुख्य टूल है. खास तौर पर, जब टीम बढ़ती है या नए सदस्यों को शामिल किया जाता है.
इस दस्तावेज़ का मुख्य मकसद, सिर्फ़ "हैप्पी पाथ" को तय करना नहीं है, बल्कि एलएलएम का इस्तेमाल करते समय, खास मामलों और गड़बड़ियों के तरीकों को भी तय करना है. मेरे अनुभव के मुताबिक, एलएलएम ऐसे कोड जनरेट करने में बहुत अच्छे होते हैं जिनमें सभी इनपुट मान्य होते हैं और सभी बाहरी कॉल सफल होते हैं. बेहतर और प्रोडक्शन के लिए तैयार सॉफ़्टवेयर बनाने के लिए, हमें एआई को साफ़ तौर पर निर्देश देने होंगे. इसके लिए, हमें इन जैसे मामलों के लिए कंटिंजेंसी (आपातकालीन) प्लान तय करने होंगे:
- किसी फ़ंक्शन में अमान्य या गलत फ़ॉर्मैट वाले आर्ग्युमेंट पास किए गए हैं.
- एपीआई कॉल पूरे न होना, नेटवर्क टाइमआउट होना या बाहरी सेवाओं से गड़बड़ी के अनचाहे कोड मिलना.
- डेटा स्ट्रक्चर में डेटा मौजूद न होने या खाली होने की स्थिति को मैनेज करना.
- रेस कंडीशन या एक साथ कई अनुरोध मिलने से जुड़ी समस्याएं.
इन मामलों में, डिज़ाइन में अनुमानित व्यवहार के बारे में जानकारी देकर, हम एलएलएम को ज़्यादा भरोसेमंद कोड जनरेट करने का निर्देश देते हैं. इससे, मैन्युअल रीफ़ैक्टरिंग और गड़बड़ियों को ठीक करने में लगने वाला समय काफ़ी कम हो जाता है.
👉✨ Gemini से, इस पवित्र ब्लूप्रिंट को वापस लाने के लिए कहें.
download https://raw.githubusercontent.com/weimeilin79/agentverse/main/developer/shadowblade/agent_design.md, store it as an agent_design.md file in my local folder, and show me the newly downloaded design doc. Do not attempt to create the file just yet.
👉✨ स्क्रोल करने के लिए काफ़ी कॉन्टेंट है और उसमें ज़्यादा जानकारी दी गई है. Gemini को इसकी खास जानकारी देने के लिए कहें.
Summarize the newly downloaded @agent_design.md for me, do not attempt to create file just yet.
अब आपके पास प्लान है. हालांकि, कोड की एक लाइन बनाने से पहले, मास्टर आर्टिसन फ़ोर्ज के नियमों को तय करता है. यह अनुशासन और स्केलेबिलिटी के बारे में है. ये कोडिंग के दिशा-निर्देश हैं. ये सिर्फ़ सुझाव नहीं हैं. ये पावर के रन हैं. इनसे यह पक्का होता है कि हर कॉम्पोनेंट को एक जैसी सटीकता और मज़बूती के साथ बनाया गया है. ये सिद्धांत, अलग-अलग स्टाइल की वजह से होने वाली गड़बड़ियों को रोकते हैं. इससे यह पक्का किया जा सकता है कि एजेंट भरोसेमंद हो, उसे बनाए रखना आसान हो, और वह पूरी तरह से सही हो. साथ ही, नए कलाकारों को पूरे प्रोजेक्ट की एकरूपता को बनाए रखते हुए, इसमें शामिल होने की अनुमति मिलती है.
इन कानूनों को सीधे तौर पर हमारे एआई पार्टनर के दिमाग़ में डालने के लिए, हम एक खास आर्टफ़ैक्ट का इस्तेमाल करते हैं: GEMINI.md फ़ाइल. Gemini CLI को चालू करने पर, यह फ़ाइल को अपने-आप खोजता है और इसके कॉन्टेंट को एआई की वर्किंग मेमोरी में लोड करता है. यह प्रोजेक्ट-लेवल का निर्देश बन जाता है. यह एक तावीज़ की तरह काम करता है, जो एआई को फ़ोर्ज के नियमों के बारे में लगातार बताता रहता है.
चलो, अब इन रून्स को लिखो.
👉💻 Gemini को बंद करने के लिए, Ctrl+C को दो बार दबाएं.
👉💻 दिशा-निर्देशों वाली फ़ाइल लिखने के लिए, अपने टर्मिनल में यह कमांड चलाएं.
cat << 'EOF' > GEMINI.md
### **Coding Guidelines**
**1. Python Best Practices:**
* **Type Hinting:** All function and method signatures should include type hints for arguments and return values.
* **Docstrings:** Every module, class, and function should have a docstring explaining its purpose, arguments, and return value, following a consistent format like reStructuredText or
Google Style.
* **Linter & Formatter:** Use a linter like `ruff` or `pylint` and a code formatter like `black` to enforce a consistent style and catch potential errors.
* **Imports:** Organize imports into three groups: standard library, third-party libraries, and local application imports. Sort them alphabetically within each group.
* **Naming Conventions:**
* `snake_case` for variables, functions, and methods.
* `PascalCase` for classes.
* `UPPER_SNAKE_CASE` for constants.
* **Dependency Management:** All Python dependencies must be listed in a `requirements.txt` file.
**2. Web APIs (FastAPI):**
* **Data Validation:** Use `pydantic` models for request and response data validation.
* **Dependency Injection:** Utilize FastAPI's dependency injection system for managing resources like database connections.
* **Error Handling:** Implement centralized error handling using middleware or exception handlers.
* **Asynchronous Code:** Use `async` and `await` for I/O-bound operations to improve performance.
EOF
cat GEMINI.md
कानूनों के बारे में जानकारी देने के बाद, आइए हम अपने एआई पार्टनर को फिर से बुलाएं और आर्टफ़ैक्ट का जादू देखें.
👉💻 shadowblade डायरेक्ट्री से Gemini CLI को फिर से लॉन्च करें:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini
👉✨ अब Gemini से पूछें कि वह क्या सोच रहा है. रून पढ़ लिए गए हैं.
/memory show
किसी खास विषय से जुड़ी विशेषज्ञता: एजेंट की क्षमताएं
आपने जो GEMINI.md रून बनाए हैं वे हमेशा के लिए जादू की तरह काम करते हैं. ये हमेशा चालू रहते हैं और आपकी तलवार को सही दिशा दिखाते हैं. हालांकि, एक असली मास्टर हर लड़ाई में हर स्क्रोल का इस्तेमाल नहीं करता. कुछ विशेषज्ञताएं इतनी खास होती हैं कि उन्हें हर समय लोड करके नहीं रखा जा सकता. ऐसे में, एजेंट के कौशल काम आते हैं.
एजेंट की किसी स्किल को अपने पैक में मौजूद सील किए गए स्क्रोल के तौर पर समझें. इसमें खास जानकारी होती है. जैसे, निर्देश, स्क्रिप्ट, और यहां तक कि रेफ़रंस डेटा भी. हालांकि, यह तब तक काम नहीं करता, जब तक आपको इसकी ज़रूरत नहीं होती. जब आपको स्क्रोल के डोमेन से मिलता-जुलता कोई चैलेंज मिलता है, तब आपकी ब्लेड उसे खींचकर लाती है और उससे जुड़ी जानकारी को अपने अंदर समाहित कर लेती है. इसे धीरे-धीरे जानकारी ज़ाहिर करना कहते हैं: इससे आपका ब्लेड तेज़ और हल्का रहता है. साथ ही, खास सुविधाओं को सिर्फ़ ज़रूरत पड़ने पर चालू किया जाता है.
👀 डेवलपर के लिए जानकारी: एजेंट की क्षमताएं, Gemini CLI की कॉन्टेक्स्ट इंजीनियरिंग हैरारकी की तीसरी लेयर होती हैं:
- उपयोगकर्ता सेटिंग (
~/.gemini/settings.json) — ग्लोबल कॉन्फ़िगरेशन - GEMINI.md — प्रोजेक्ट-लेवल का कॉन्टेक्स्ट, जो हमेशा लोड रहता है
- एजेंट की क्षमताएं (
.gemini/skills/) — ज़रूरत के हिसाब से उपलब्ध विशेषज्ञता (जब ज़रूरत हो, तब लोड की जाती है)
एंटरप्राइज़ के इस्तेमाल के लिए, यह प्रोग्रेसिव डिसक्लोज़र मॉडल बहुत ज़रूरी है: किसी रिपॉज़िटरी में कई तरह की खास क्षमताएं (सुरक्षा ऑडिटिंग, डेटाबेस माइग्रेशन, अनुपालन की जांच) हो सकती हैं. हालांकि, एआई सिर्फ़ उन क्षमताओं को चालू करता है जो मौजूदा टास्क के लिए ज़रूरी हैं. इससे कॉन्टेक्स्ट टोकन को बचाया जा सकता है.
आइए, आपकी पहली स्किल बनाते हैं. यह एडीके की विशेषज्ञता का स्क्रोल है. एजेंट बनाते समय, आपकी ब्लेड इसका इस्तेमाल कर सकती है.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं. इसके बाद, कौशल की डायरेक्ट्री बनाएं और स्क्रोल को इनस्क्राइब करें:
mkdir -p ~/.gemini/skills/adk-agent-design
cat << 'EOF' > ~/.gemini/skills/adk-agent-design/SKILL.md
---
name: adk-agent-design
description: Expert guidance for designing and building agents with the Google Agent Development Kit (ADK). Activate when the user asks about agent architecture, tool design, callback patterns, or ADK best practices.
---
# ADK Agent Design Expertise
When designing an ADK agent, follow these principles:
## Agent Architecture
- Define agents using `LlmAgent` with a clear `name`, `model`, `instruction`, and `tools` list.
- Keep instructions specific and action-oriented. Tell the agent what it IS, not what it should try to be.
- Use `before_model_callback` and `after_model_callback` for guardrails and validation.
## Tool Design
- Each tool should do ONE thing well. Prefer small, focused tools over large, multi-purpose ones.
- Always include descriptive docstrings — the LLM uses these to decide when to call each tool.
- Return structured data (dicts) from tools so the LLM can reason about the results.
## Testing Strategy
- Use `adk eval` with evalset JSON files for broad strategy testing.
- Use `pytest` with `AgentEvaluator` for programmatic, CI-ready tests.
- Define both `tool_trajectory_avg_score` and `response_match_score` criteria.
EOF
👉💻 नई स्किल देखने के लिए, Gemini CLI को फिर से खोलें:
cd ~/agentverse-developer/shadowblade
gemini
👉✨ पुष्टि करें कि स्किल आपके पैक में शामिल है या नहीं:
/skills list
आपको adk-agent-design की सूची दिखेगी. यह एक सील किया गया स्क्रोल है, जो निष्क्रिय है और इंतज़ार कर रहा है.
👉✨ अब Gemini से ऐसा कुछ पूछें जिससे यह स्किल चालू हो जाए:
What are the best practices for designing tools in an ADK agent?
ध्यान दें कि अब जवाब, उस खास जानकारी के आधार पर दिया गया है जिसे आपने स्किल में शामिल किया था. ब्लेड की बेस मेमोरी में यह जानकारी नहीं थी. उसने काम के स्क्रोल को ढूंढा और सवाल के मैच होने पर ही उसे दिखाया. यह प्रोग्रेसिव डिसक्लोज़र का एक उदाहरण है.
किसी भी डोमेन के लिए स्किल बनाई जा सकती हैं. जैसे, सुरक्षा ऑडिट, डेटाबेस माइग्रेशन, और अनुपालन की जांच. साथ ही, वर्शन कंट्रोल में उन्हें शामिल करके, अपनी टीम के साथ शेयर किया जा सकता है. टीम के हर सदस्य के पास एक जैसी विशेषज्ञता होती है और उसे लगातार लागू किया जाता है.
यह सबसे अहम समय है. आपको स्कीमेटिक (agent_design.md) और फ़ोर्ज के नियम (GEMINI.md) देने होंगे. साथ ही, इमेज बनाने का निर्देश देना होगा.
👉✨ यह एक ही निर्देश है, जो आपके एजेंट को बनाएगा. इसे अभी जारी करें:
You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to write the complete, production-quality code for `agent.py` by following the technical specifications outlined in the provided design document verbatim.
Analyze the design document at `@agent_design.md` and generate the corresponding Python code for `@agent.py`.
Ensure the generated code is clean, matches the specifications exactly, and includes all specified imports, functions, and logic. Do not add any extra functions or logic not described in the document.
and you are currently already in the shadowblade working directory
👀 Gemini ने अब एजेंट के मुख्य लॉजिक को agent.py में तैयार कर दिया है. इस नई फ़ाइल का मुख्य हिस्सा, एजेंट की बुद्धिमत्ता को तय करता है. यह एजेंट के तर्क मॉडल को बाहरी टूल के सेट से जोड़ता है:
PATH_TO_MCP_SERVER = "shadowblade/mcp_server.py"
.....
root_agent = LlmAgent(
model="gemini-2.5-pro",
name="shadowblade_combat_agent",
instruction="""
You are the Shadowblade, an elite combat agent operating on a digital battleground.
Your primary objective is to execute combat commands with strategic precision, neutralizing targets as directed.
......
5. You will then report the outcome of the attack (damage, special effects, etc.) back to the commander in a clear, tactical summary.
General Rules of Engagement:
- If a command is ambiguous or a target is not specified, state that you require a clear target for engagement. Do not guess.
- You MUST use ONLY the provided tools to perform actions. Do not invent weapons or outcomes. Stick to the mission parameters.
""",
tools=[
MCPToolset(
connection_params=StdioServerParameters(
command='python3',
args=[PATH_TO_MCP_SERVER]
)
)
]
)
tools पैरामीटर. एजेंट को MCPToolset का इस्तेमाल करने के लिए डिज़ाइन किया गया है. यह mcp_server.py में तय किए गए बाहरी आर्सेनल से कनेक्ट होता है.
👀 एडिटर में मौजूद ~/agentverse-developer/shadowblade/mcp_server.py पर जाएं और देखें कि यह क्या करता है. यह शैडोब्लेड के लिए उपलब्ध सभी हथियारों का सोर्स है. फ़िलहाल, शस्त्रागार में बहुत कम हथियार हैं.

👉✨ आइए, Gemini को ज़ख़ीरे के लिए सात नए हथियार बनाने का निर्देश देते हैं. Gemini के सीएलआई में यह प्रॉम्प्ट डालें:
I need to add several new weapon tools to my `mcp_server.py` file. Please open @mcp_server.py and, following the exact same pattern as the existing `forge_broadsword()` function, create and add new `@mcp.tool()` decorated functions for each of the following weapons:
1. **A 'Refactoring Sickle'**:
- **Function Name:** `hone_refactoring_sickle`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'The Weaver of Spaghetti Code'."
- **Weapon Name:** "Refactoring Sickle"
- **Damage Type:** "Cleansing"
- **Base Damage:** Random integer between 100 and 136
- **Critical Hit Chance:** Random float between 0.10 and 0.20
- **Special Effect:** "Pruning - improves code health and maintainability with each strike."
2. **A 'Quickstart Crossbow'**:
- **Function Name:** `fire_quickstart_crossbow`
- **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Procrastination: The Timeless Slumber'."
- **Weapon Name:** "Quickstart Crossbow"
- **Damage Type:** "Initiative"
- **Base Damage:** Random integer between 105 and 120
- **Critical Hit Chance:** Random float between 0.9 and 1.0
- **Special Effect:** "Project Scaffolding - creates a `main.py`, `README.md`, and `requirements.txt`."
3. **'The Gilded Gavel'**:
- **Function Name:** `strike_the_gilded_gavel`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'Perfectionism: The Gilded Cage'."
- **Weapon Name:** "The Gilded Gavel"
- **Damage Type:** "Finality"
- **Base Damage:** 120
- **Critical Hit Chance:** 1.0
- **Special Effect:** "Seal of Shipping - marks a feature as complete and ready for deployment."
4. **'Daggers of Pair Programming'**:
- **Function Name:** `wield_daggers_of_pair_programming`
- **Docstring/Target:** "Effective against 'Unbroken Collaboration' weaknesses like 'Apathy: The Spectre of \"It Works on My Machine\"'."
- **Weapon Name:** "Daggers of Pair Programming"
- **Damage Type:** "Collaborative"
- **Base Damage:** Random integer between 110 and 125
- **Critical Hit Chance:** Random float between 0.30 and 0.50
- **Special Effect:** "Synergy - automatically resolves merge conflicts and shares knowledge."
5. **A 'Granite Maul'**:
- **Function Name:** `craft_granite_maul`
- **Docstring/Target:** "Effective against 'Revolutionary Rewrite' weaknesses like 'Dogma: The Zealot of Stubborn Conventions'."
- **Weapon Name:** "Granite Maul"
- **Damage Type:** "Bludgeoning"
- **Base Damage:** Random integer between 115 and 125
- **Critical Hit Chance:** Random float between 0.05 and 0.15
- **Special Effect:** "Shatter - has a high chance to ignore the target's 'best practice' armor."
6. **A 'Lens of Clarity'**:
- **Function Name:** `focus_lens_of_clarity`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses by revealing the truth behind 'Obfuscation'."
- **Weapon Name:** "Lens of Clarity"
- **Damage Type:** "Revelation"
- **Base Damage:** Random integer between 120 and 130
- **Critical Hit Chance:** 1.0
- **Special Effect:** "Reveal Constants - highlights all magic numbers and suggests converting them to named constants."
7. **The 'Codex of OpenAPI'**:
- **Function Name:** `scribe_with_codex_of_openapi`
- **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Hype: The Prophet of Alpha Versions'."
- **Weapon Name:** "Codex of OpenAPI"
- **Damage Type:** "Documentation"
- **Base Damage:** Random integer between 110 and 140
- **Critical Hit Chance:** Random float between 0.5 and 0.8
- **Special Effect:** "Clarity - makes an API discoverable and usable by other agents and teams."
👉 Gemini से बदलावों की पुष्टि होने के बाद, mcp_server.py फ़ाइल खोलें. कोड में नीचे की ओर स्क्रोल करें और पुष्टि करें कि सात नए @mcp.tool() फ़ंक्शन जोड़ दिए गए हैं. hone_refactoring_sickle फ़ंक्शन देखें. क्या इसमें सही डॉकस्ट्रिंग और हथियार के आंकड़े मौजूद हैं? एआई के काम की पुष्टि करना, मास्टर शैडोब्लेड की एक अहम आदत है.
एजेंट को तैयार और बेहतर बना दिया गया है. अब इसे चालू करने का समय है.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं
Gemini के आउटपुट के बारे में डेवलपर का नोट: Gemini से जनरेट किया गया कोड कभी-कभी अप्रत्याशित हो सकता है. हम डिज़ाइन के मुताबिक कोड बनाने की पूरी कोशिश करते हैं. हालांकि, डेवलपमेंट सेशन में डेवलपर के लिए, कोड को कई बार दोहराना और उसे बेहतर बनाना सामान्य बात है. इससे कोड को प्रोडक्शन के लिए तैयार किया जा सकता है.
👉💻 यह पक्का करने के लिए कि आपकी वर्किंग डायरेक्ट्री में सही और पूरी तरह से जांच किया गया प्रोडक्शन कोड मौजूद है, कृपया अपने टर्मिनल में ये कमांड चलाएं:
cp ~/agentverse-developer/working_code/agent.py ~/agentverse-developer/shadowblade/agent.py
cp ~/agentverse-developer/working_code/mcp_server.py ~/agentverse-developer/shadowblade/mcp_server.py
👉💻 अपने टर्मिनल में, इसे ऑनलाइन लाने की प्रोसेस शुरू करें:
cd ~/agentverse-developer/
. ~/agentverse-developer/set_env.sh
python -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -r shadowblade/requirements.txt
adk run shadowblade
👉✨ आपको आउटपुट में यह पुष्टि दिखेगी कि "Shadowblade Combat Agent" चालू है और काम कर रहा है. साथ ही, यह पहली कमांड का इंतज़ार कर रहा है. लड़ाई से जुड़े पहले निर्देश जारी किए.
We've been trapped by 'Perfectionism: The Gilded Cage'. Its weakness is 'Elegant Sufficiency'. Break us out!
👉✨ एक और तरीका:
The 'Dogma: The Zealot of Stubborn Conventions' blocks our path. Its weakness is 'Revolutionary Rewrite'. Take it down.
आपने अपना पहला एजेंट बना लिया है और उसकी लड़ने की क्षमताओं की पुष्टि कर ली है. अपने चैंपियन को आराम देने के लिए, Ctrl+C को दो बार दबाएं. असेंबली पूरी हो गई है.
गेम नहीं खेलने वालों के लिए
7. Wards of Purity: Evaluating the agents
असेंबल किया गया एजेंट, भरोसेमंद एजेंट नहीं होता. बिना जांच की गई ब्लेड खतरनाक होती है, लेकिन बिना जांच किया गया एआई एजेंट इससे कहीं ज़्यादा खतरनाक होता है. यह एक ऐसा खतरनाक एलिमेंट है जो आपके मिशन को अंदर से ही खराब कर सकता है. यह सिर्फ़ एक अनुमान नहीं है. यह एक बुनियादी सिद्धांत है जिसे शैडोब्लेड को समझना चाहिए.
एआई एजेंटों का आकलन करना, बहुत ज़रूरी और मुश्किल काम है. किसी सामान्य स्क्रिप्ट के उलट, एजेंट आपके कोड और एलएलएम के कई चरणों वाले, तर्क करने वाले दिमाग का डाइनैमिक फ़्यूज़न होता है. यह अचानक से काम करना शुरू कर देता है. इसका मतलब है कि आपको न सिर्फ़ फ़ाइनल आउटपुट की क्वालिटी का आकलन करना होगा, बल्कि इसके इंटरनल प्रोसेस की दक्षता और सटीकता का भी आकलन करना होगा. वहां तक पहुंचने का रास्ता. क्या इसमें सही टूल का इस्तेमाल किया गया है? क्या इसने बहुत ज़्यादा टोकन जनरेट किए? क्या मॉडल के वर्शन में बदलाव करने से, परफ़ॉर्मेंस में थोड़ी गिरावट आई है? किसी भी बदलाव को लागू करने से पहले, इस तरह की गड़बड़ी का पता लगाना ज़रूरी है. जैसे, लेटेन्सी, लागत या आउटपुट क्वालिटी में गिरावट. चाहे बदलाव, प्रॉम्प्ट में मामूली बदलाव हो या आर्किटेक्चर में बड़ा बदलाव. ऐसा इसलिए, ताकि यह गड़बड़ी आपके प्रोडक्शन एनवायरमेंट को नुकसान न पहुंचा सके.

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

Google की एजेंट डेवलपमेंट किट (एडीके), आर्मरर की किट होती है. इसे इस मकसद के लिए, चैंपियनों को उपलब्ध कराया जाता है. यह कई तरीकों से, इस मुश्किल आकलन को आसान बनाता है:
- इंटरैक्टिव आकलन के लिए, वेब पर आधारित स्क्राइंग पूल (
adk web) - पहले से तय किए गए गांटलेट के ज़रिए एजेंट को चलाने के लिए, कमांड-लाइन एक्ज़ीक्यूशन (
adk eval). - स्थायी वार्ड जोड़ने के लिए,
pytestके ज़रिए प्रोग्राम के हिसाब से इंटिग्रेशन
ADK, दो मुख्य तरीकों के साथ काम करता है: एक, अलग-अलग एजेंट-मॉडल इंटरैक्शन (एकल द्वंद्व) के लिए आसान "टेस्ट फ़ाइलें" और दूसरा, कई, संभावित रूप से लंबे, मल्टी-टर्न सेशन (ग्रैंड मेली) के लिए पूरी तरह से "इवैलसेट". ये tool_trajectory_avg_score जैसी मेट्रिक को मेज़र कर सकते हैं. यह मेट्रिक, एजेंट के टूल इस्तेमाल करने के तरीके की तुलना, टूल इस्तेमाल करने के सही तरीके से करती है. इससे यह पक्का किया जाता है कि टूल का इस्तेमाल सही तरीके से किया जा रहा है.
अब आपको सिद्धांत के बारे में जानकारी मिल गई है. इसलिए, अब इसे लागू करें. शैडोब्लेड के तौर पर, आपको वॉर्ड ऑफ़ प्योरिटी लिखना होगा. ये सिर्फ़ जांच नहीं हैं. ये एडीके की मदद से की जाने वाली ऐसी गतिविधियां हैं जिनसे यह पक्का किया जाता है कि आपके एजेंट का लॉजिक सही हो और उसका व्यवहार भरोसेमंद हो.
इस चरण में, अब भी दो टर्मिनल इस्तेमाल करने का सुझाव दिया जाता है: एक Gemini CLI के लिए और दूसरा टेस्ट चलाने के लिए. ऐसा इसलिए, क्योंकि आपको मौजूदा वर्किंग डायरेक्ट्री (ADK) से बाहर निकलना पड़ सकता है.
रणनीति की चुनौती (adk eval)
यह पहला वार्ड एक गॉंटलेट है. इसमें कई तरह की चुनौतियां शामिल हैं. इन्हें अलग-अलग स्थितियों में एजेंट की मुख्य क्षमताओं की जांच करने के लिए डिज़ाइन किया गया है. इसका मकसद, बुनियादी तौर पर काम करने की क्षमता का आकलन करना है. हम खास मामलों की जांच करने से पहले, यह पक्का करते हैं कि एजेंट अपना मुख्य काम कर सकता है या नहीं. क्या यह किसी राक्षस की कमज़ोरी का सही विश्लेषण करता है और अपने शस्त्रागार से सबसे असरदार हथियार चुनता है? ऐसा सिर्फ़ एक बार नहीं, बल्कि हर बार करता है, जब इसे कोई जानी-पहचानी चुनौती दी जाती है?
इसके लिए, adk eval सबसे सही टूल है. इसे पहले से तय किए गए टेस्ट केस के पूरे सेट के हिसाब से एजेंट को चलाने के लिए डिज़ाइन किया गया है. यह एजेंट के अनुमानित मिशन को दिखाता है. इस डेटासेट को JSON फ़ाइल में तय किया जाता है. यह "चैलेंज स्क्रोल" के तौर पर काम करता है. यह पूरे गॉन्टलेट के लिए ब्लूप्रिंट का काम करता है.
चैलेंज स्क्रोल के काम करने की जानकारी
👀 एआई को नया स्क्रोल लिखने का निर्देश देने से पहले, आपको यह समझना होगा कि वह किस प्राचीन भाषा में लिखा गया है. आइए, sample.evalset.json फ़ाइल के स्ट्रक्चर के बारे में जानते हैं.
{
"eval_set_id": "sample",
"eval_cases": [
{
"eval_id": "case0cbaa0",
"conversation": [
{
"user_content": { "text": "We're facing the 'Monolith of Eternal Dependencies'... weakness is a 'Revolutionary Rewrite'..." },
"final_response": { "text": "Soulshard Dagger deployed. Initiated Arcane/Piercing strike..." },
"intermediate_data": {
"tool_uses": [
{ "name": "enchant_soulshard_dagger" }
]
}
}
]
}
]
}
इस स्क्रोल में eval_cases की सूची होती है. इसमें हर केस, आपके एजेंट के लिए एक यूनीक ट्रायल होता है. हर ट्रायल में, बातचीत की ऐरे, एक पूरी बातचीत को रिकॉर्ड करती है. हमारे मकसद के लिए, तीन रून काफ़ी अहम हैं:
- user_content: यह चैलेंज है. यह वह प्रॉम्प्ट है जो आपने अपने एजेंट को दिया है. यह वह मॉन्स्टर है जिसका सामना एजेंट को करना है.
- final_response: यह अनुमानित नतीजा है. यह टेक्स्ट की वह स्ट्रिंग है जिसे टास्क पूरा होने पर, एजेंट को बोलना चाहिए. ADK, एजेंट के असल में बोले गए आखिरी शब्दों की तुलना इस रून से करता है, ताकि यह पता लगाया जा सके कि एजेंट ने कितने अच्छे तरीके से जवाब दिया है.
- intermediate_data.tool_uses: यह Arcane Technique है. एक असली एजेंट के लिए, यह सबसे अहम रून है. इससे यह तय होता है कि एजेंट क्या कहेगा, बल्कि यह तय होता है कि वह क्या करेगा. यह उस टूल (enchant_soulshard_dagger) का नाम रिकॉर्ड करता है जिसे एजेंट को इस्तेमाल करना चाहिए. इससे यह पक्का होता है कि आपका एजेंट सिर्फ़ बातचीत करने में माहिर नहीं है, बल्कि सही फ़ैसले लेने वाला भी है.
अब आपको ब्लूप्रिंट के बारे में पता चल गया है. इसलिए, Gemini को इस स्क्रोल का नया और ज़्यादा मुश्किल वर्शन लिखने का निर्देश दें.
👉💻 अपने टर्मिनल में, shadowblade डायरेक्ट्री डालें और Gemini CLI को कॉल करें:
clear
cd ~/agentverse-developer/shadowblade/
gemini
👉✨ Gemini CLI को क्यूए स्क्राइब के तौर पर काम करने का निर्देश दें. इससे, टेस्ट केस की एक सीरीज़ तैयार होगी. इसमें आपके एजेंट के लिए, उम्मीद के मुताबिक काम करने का तरीका बताया गया होगा.
You are an expert at transforming JSON data while preserving its structure. Your task is to modify the provided JSON structure @sample.evalset.json, which represents an evaluation set, by dynamically replacing specific content within its `eval_cases` AND DONT DO ANYTHING OTHER THAN.
For each object within the `eval_cases` array, you must perform the following transformations:
1. **Monster Name Replacement**: Identify the current monster name (e.g., "Monolith of Eternal Dependencies", "Scope Creep Hydra") in the `user_content.parts.text` and replace it with a *new, unique, and creatively different monster name*.
2. **Weakness Replacement**: Identify the current monster's weakness (e.g., "Revolutionary Rewrite", "Inescapable Reality") in the `user_content.parts.text`. Replace this weakness with *one* of the following predefined weaknesses: 'Inescapable Reality', 'Revolutionary Rewrite', or 'Elegant Sufficiency'. The chosen weakness must be consistent for that monster within the `user_content.parts.text`. **Crucially, the chosen weakness must always be explicitly mentioned in the `user_content.parts.text` where the new monster is introduced.**
3. **Final Response Update**: In the `final_response.parts.text`, update the text to reflect an appropriate and coherent response that aligns with the newly introduced monster and its assigned weakness.
4. **Tool Use Name Update**: In the `tool_uses.name` field, replace the existing tool name with a *new tool name* based on the chosen weakness:
* If the chosen weakness is 'Inescapable Reality', the tool name must be 'wield_gauntlet_of_metrics'.
* If the chosen weakness is 'Revolutionary Rewrite', the tool name must be 'enchant_soulshard_dagger'.
* If the chosen weakness is 'Elegant Sufficiency', the tool name must be 'hone_refactoring_sickle'.
5. **Strict Structural Preservation**: All other elements of the JSON structure, including all `null` fields, `eval_set_id`, `name`, `description`, `eval_id`, `invocation_id`, `creation_timestamp` values, `video_metadata`, `thought`, `inline_data`, `file_data`, `thought_signature`, `code_execution_result`, `executable_code`, `function_call`, `function_response`, `role` fields, `id`, `args`, `intermediate_responses`, `app_name`, `user_id`, and `state`, must remain **exactly as they are** in the original JSON. Do not alter any values or structures not explicitly mentioned above.
Your output should be the complete, modified JSON structure. Do not include any explanatory text or examples in your response, only the transformed JSON.
सीएलआई, sample.evalset.json फ़ाइल के फ़र्ज़ी होने की पुष्टि करेगा. स्क्रोल तैयार होने के बाद, एआई पार्टनर को बंद करें.
सिंथेटिक डेटा
👀 बाईं ओर मौजूद Cloud Shell फ़ाइल एक्सप्लोरर में, ~/agentverse-developer/shadowblade/ पर जाएं और बदली गई नई sample.evalset.json फ़ाइल खोलें. इसके कॉन्टेंट की जांच करें. आपको नए और यूनीक मॉन्स्टर दिखेंगे. साथ ही, उन टूल के सही नाम दिखेंगे जिन्हें Gemini को लिखने के लिए कहा गया था. यह आपके निर्देश का नतीजा है. यह गांटलेट का ब्लूप्रिंट है.
एआई को किसी टेंप्लेट से नया और असली जैसा टेस्ट डेटा बनाने का निर्देश देना, एक असरदार तकनीक है. इसे सिंथेटिक डेटा जनरेशन कहा जाता है. आपने अभी जो किया है वह शैडोब्लेड के लिए एक रणनीतिक फ़ोर्स मल्टीप्लायर है. मैन्युअल तरीके से कई यूनीक टेस्ट केस बनाने के बजाय. आपने एआई स्क्राइब को एक ही ब्लूप्रिंट दिया है और उसे अलग-अलग तरह की नई चुनौतियों में बदलने का निर्देश दिया है. यह एक मुश्किल और समय लेने वाला काम है.
इससे आपको टेस्टिंग के लिए ज़्यादा से ज़्यादा कोशिशें करने का मौका मिलता है. साथ ही, आपको मैन्युअल तरीके से किए जाने वाले टेस्ट की तुलना में, ज़्यादा बेहतर और पूरी तरह से सुरक्षित टेस्ट बनाने में मदद मिलती है. आपने अपने एजेंट का इस्तेमाल न सिर्फ़ तलवार बनाने के लिए किया है, बल्कि उन पत्थर के औज़ारों को बनाने के लिए भी किया है जिनसे तलवार की धार की जांच की जाती है. यह एक सच्चे मास्टर की निशानी है.
जब आपको पता चल जाए कि रून्स सही हैं, तब अपने एआई पार्टनर को बंद कर दें.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं.
फ़ैसले के नियम
जीत के नियमों के बिना, किसी भी चुनौती का कोई मतलब नहीं होता. ट्रायल शुरू करने से पहले, आपको Scroll of Judgment यानी test_config.json फ़ाइल की जांच करनी होगी. इस स्क्रोल से ADK को यह पता चलता है कि आपके एजेंट की परफ़ॉर्मेंस का आकलन कैसे करना है.
👀 फ़ाइल एक्सप्लोरर में, ~/agentverse-developer/shadowblade/test_config.json खोलें. आपको ये रन दिखेंगे:
{
"criteria": {
"tool_trajectory_avg_score": 0.0,
"response_match_score": 0.1
}
}
जीत हासिल करने के लिए, ये शर्तें पूरी करनी होंगी:
tool_trajectory_avg_score: यह कार्रवाई का मेज़रमेंट है. यह एजेंट के बोलने के आधार पर नहीं, बल्कि उसके काम करने के आधार पर फ़ैसला करता है. इसमें, एजेंट की ओर से इस्तेमाल किए गए टूल की तुलना, चैलेंज स्क्रोल में बताई गई तकनीक से की जाती है.1.0का स्कोर, पूरी तरह से मेल खाने वाला स्कोर है.response_match_score: यह Measure of Eloquence है. यह एलएलएम का इस्तेमाल करके यह तय करता है कि एजेंट की फ़ाइनल रिपोर्ट, अनुमानित नतीजे से कितनी मिलती-जुलती है.1.0का स्कोर, पूरी तरह से मेल खाने वाला स्कोर है.
इस शुरुआती ट्रेनिंग के लिए, हमने जीत की शर्तों को आसान बनाया है. थ्रेशोल्ड को बहुत कम (0.0 और 0.1) पर सेट किया गया है. इसका मकसद यह नहीं है कि आप पूरी तरह से सही जवाब दें, बल्कि आपको यह बताना है कि फ़ैसले लेने का तरीका क्या है. हम यह पक्का कर रहे हैं कि एजेंट के जवाब में इस्तेमाल किए गए शब्दों में थोड़ा अंतर होने पर भी, वार्ड को सही टूल चुनने की उसकी मुख्य क्षमता के बारे में पता चल जाएगा. साथ ही, वह उसे आगे बढ़ने की अनुमति दे देगा.
अब, अपने एजेंट को गांटलेट चलाने का निर्देश दें.
👉💻 अपने टर्मिनल में, adk eval कमांड चलाएं:
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
adk eval \
shadowblade \
shadowblade/sample.evalset.json \
--config_file_path shadowblade/test_config.json 2>&1 | \
awk '/^\*+$/,/^ERROR:/ { if ($0 !~ /^ERROR:/) print }'
👀 आपको यह खास जानकारी दिखेगी. इससे पता चलता है कि इस ट्रायल के दौरान, आपके एजेंट ने नियमों का पालन किया है. हालांकि, ऐसा हो सकता है कि सभी टेस्ट पास न हों:
********************************************************************* Eval Run Summary shadowblade_combat_agent_validation: Tests passed: 3 Tests failed: 0
स्पष्टता का शील्ड (pytest)
द गॉनलेट में ब्रॉड स्ट्रेटजी को टेस्ट किया गया. यह दूसरा वार्ड, शील्ड ऑफ़ क्लैरिटी है. इसमें अनुशासन और खास व्यवहार की जांच की जाती है. यह सब ऑटोमेशन के बारे में है. adk eval मैन्युअल जांच के लिए बेहतरीन है, जबकि pytest शील्ड, कोड में लिखा गया एक प्रोग्रामैटिक वार्ड है. यह ज़रूरी है, क्योंकि कोड के तौर पर लागू किए जा सकने वाले टेस्ट को ऑटोमेटेड पाइपलाइन में इंटिग्रेट किया जा सकता है. हमारा मुख्य लक्ष्य यह है कि हम एक डिप्लॉयमेंट गैंटलेट (सीआई/सीडी) बनाएं. इसमें, हर बार बदलाव होने पर हमारे वार्ड अपने-आप बढ़ जाते हैं. इससे बग और रिग्रेशन को आपके प्रोडक्शन एनवायरमेंट को नुकसान पहुंचाने से पहले ही रोका जा सकता है.
👉💻 अपने टर्मिनल में,shadowblade डायरेक्ट्री से Gemini को फिर से चालू करें:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/
clear
gemini
👉✨ शील्ड के लॉजिक को pytest फ़ाइल में लिखने के लिए, Gemini CLI में यहां दिया गया प्रॉम्प्ट इस्तेमाल करें:
You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to generate the exact code for a new `pytest` test file located in the current root working folder and name it `test_agent_initiative.py`.
The script must define a single async test function called `test_agent_initiative`, decorated with `@pytest.mark.asyncio`.
Inside this function, perform the following steps in order:
1. **Define a dictionary** named `evaluation_criteria` with two keys: `"tool_trajectory_avg_score"` set to `0.0` and `"response_match_score"` set to `0.0`.
2. **Define a string variable** named `eval_set_filepath` containing the path `"shadowblade/test.evalset.json"`.
3. **Read and parse the JSON file**:
* Open the file at `eval_set_filepath`.
* Use the `json` library to load the file's contents into a dictionary named `eval_set_data`.
4. **Create an `EvalSet` object**:
* Instantiate an `EvalSet` object named `eval_set_object`.
* Create it by unpacking the `eval_set_data` dictionary as keyword arguments into the `EvalSet` constructor.
5. **Call the evaluation method**:
* `await` a call to `AgentEvaluator.evaluate_eval_set`.
* Pass the following arguments:
* `agent_module="shadowblade"`
* `eval_set=eval_set_object`
* `criteria=evaluation_criteria`
* `print_detailed_results=True`
The script must include the necessary imports at the top:
* `AgentEvaluator` from `google.adk.evaluation.agent_evaluator`
* `EvalSet` from `google.adk.evaluation.eval_set`
* `pytest`
* `json`
Generate only the code that meets these specifications, with no additional comments or logic. And don't run the test.
दूसरे वार्ड के लिए रून्स लिखने के बाद, Gemini CLI से बाहर निकलें.
👉💻 Ctrl+C को दो बार दबाएं.
👀 फ़ाइल एक्सप्लोरर में, उस स्क्रोल को खोलें जिसे आपने Gemini को लिखने का निर्देश दिया था: ~/agentverse-developer/test_agent_initiative.py.
आपको पता चलेगा कि यह सिर्फ़ एक कॉन्फ़िगरेशन फ़ाइल नहीं है, बल्कि Pythonic भाषा में लिखा गया एक मंत्र है. इस स्पेल का मुख्य हिस्सा await AgentEvaluator.evaluate(...) लाइन है.
....
@pytest.mark.asyncio
async def test_agent_initiative():
# Define the evaluation criteria
evaluation_criteria = {
"tool_trajectory_avg_score": 0.0,
"response_match_score": 0.0
}
# Define the path to your evalset file
eval_set_filepath = "shadowblade/test.evalset.json"
#...
# 3. Call the evaluation method with the correctly typed object
await AgentEvaluator.evaluate_eval_set(
agent_module="shadowblade",
eval_set=eval_set_object,
criteria=evaluation_criteria,
print_detailed_results=True,
)
इसके आर्ग्युमेंट को ध्यान से देखें. ये वही कॉम्पोनेंट हैं जिनका इस्तेमाल आपने पिछले ट्रायल में किया था: आपका shadowblade एजेंट और shadowblade.evalset.json चैलेंज स्क्रोल. इससे यह अहम जानकारी मिलती है: adk eval कमांड का इस्तेमाल करके, किसी फ़ंक्शन को आसानी से कॉल किया जा सकता है. हालांकि, pytest स्क्रिप्ट का इस्तेमाल करके, फ़ंक्शन को खुद कॉल किया जाता है. कमांड-लाइन टूल, AgentEvaluator लाइब्रेरी के लिए एक रैपर है. अब इसका इस्तेमाल सीधे तौर पर किया जा सकता है. यह महारत हासिल करने की दिशा में एक अहम कदम है, क्योंकि कोड के ज़रिए डाली गई स्पेल को सीआई/सीडी पाइपलाइन के ऑटोमेटेड लूम में बुना जा सकता है.
अब आपको जादू के बारे में पता चल गया है, तो शील्ड को चालू करने के लिए रस्म पूरी करें.
👉💻 शील्ड को चालू करने के लिए, अपने टर्मिनल में यह निर्देश चलाएं:
cp ~/agentverse-developer/working_code/test_agent_initiative.py ~/agentverse-developer/test_agent_initiative.py
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
pytest test_agent_initiative.py
👀 लॉग आउटपुट के आखिर में, जांच के नतीजे की खास जानकारी देखें. जांच में पास होने का मतलब है कि आपका एजेंट, प्रोटोकॉल का सही तरीके से पालन करता है. साथ ही, वार्ड को आपकी ऑटोमेटेड सुरक्षा में इंटिग्रेट किया जा सकता है.
====== 1 passed, 4 warning in 37.37s ======
ध्यान दें: अगर टेस्ट उम्मीद के मुताबिक नहीं होता है, तो इसकी सबसे बड़ी वजह यह है कि आपने हर मिनट में मॉडल से किए जाने वाले अनुरोधों की संख्या पूरी कर ली है. लॉग आउटपुट में RESOURCE_EXHAUSTED गड़बड़ी देखें. अगर आपको यह गड़बड़ी दिखती है, तो अपने कोटे के रीसेट होने के लिए एक या दो मिनट इंतज़ार करें. इसके बाद, pytest कमांड को फिर से चलाएं.
Gauntlet और Shield, दोनों के सटीक तरीके से लिखे जाने और पुष्टि हो जाने के बाद, आपका एजेंट न सिर्फ़ काम करता है, बल्कि यह पूरी तरह से जांचा गया है और इसे इस्तेमाल किया जा सकता है.
गेम नहीं खेलने वालों के लिए
Wards of Vigilance: Gemini CLI Hooks
वॉर्ड ऑफ़ प्योरिटी, आपके एजेंट की जांच लड़ाई के बाद करते हैं. लेकिन, बैटल के दौरान क्या होगा? अनुशासन में रहने वाला शैडोब्लेड, सिर्फ़ हमला करने के बाद ही जांच नहीं करता. वह ऐसे पहरेदार रखता है जो हर हमले पर नज़र रखते हैं. साथ ही, खतरनाक या बिना सोचे-समझे की गई कार्रवाइयों को नुकसान पहुंचाने से पहले ही रोक देते हैं.
ये सेंटिनल, Gemini CLI हुक होते हैं. ये स्क्रिप्ट, एजेंटिक लूप में खास पॉइंट पर काम करती हैं. इनकी मदद से, एजेंट के कोड में बदलाव किए बिना, एजेंट के व्यवहार को इंटरसेप्ट, पुष्टि, और पसंद के मुताबिक बनाया जा सकता है.
👀 डेवलपर के लिए सूचना: हुक, एजेंट के लाइफ़साइकल में होने वाले इवेंट से ट्रिगर होते हैं:
BeforeTool: यह टूल के काम करने से पहले ट्रिगर होता है. यह सुरक्षा की पुष्टि करने के लिए सबसे सही है ("क्या यह शेल कमांड सुरक्षित है?")AfterTool: यह इवेंट तब ट्रिगर होता है, जब कोई टूल काम करता है. यह इवेंट, नतीजों की ऑडिट करने और लॉग करने के लिए काम का होता हैBeforeAgent: यह एजेंट के जवाब देने से पहले ट्रिगर होता है. इससे अतिरिक्त कॉन्टेक्स्ट जोड़ा जा सकता है या खतरनाक प्रॉम्प्ट को ब्लॉक किया जा सकता हैAfterAgent: यह इवेंट, एजेंट के जवाब देने के बाद ट्रिगर होता है. इसमें खराब क्वालिटी वाले जवाबों को खारिज किया जा सकता है और फिर से जवाब देने के लिए कहा जा सकता है
हुक, settings.json में कॉन्फ़िगर किए जाते हैं और सिंक्रोनस तरीके से चलते हैं. एजेंट, आगे बढ़ने से पहले उनके पूरा होने का इंतज़ार करता है. इस वजह से, ये एंटरप्राइज़ एनवायरमेंट में सुरक्षा नीतियों को लागू करने, अनुपालन की जांच करने, और क्वालिटी गेट को लागू करने के लिए सबसे सही हैं.
आइए, एक ऐसा आसान शब्द लिखते हैं जो आपके एजेंट के टूल इस्तेमाल करने पर नज़र रखेगा.
👉💻 अपने टर्मिनल में, हुक स्क्रिप्ट बनाएं:
mkdir -p ~/agentverse-developer/.gemini/hooks
cat << 'EOF' > ~/agentverse-developer/.gemini/hooks/tool_logger.sh
#!/bin/bash
# A ward that logs every tool call to a file for auditing
INPUT=$(cat)
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // "unknown"')
echo "$(date '+%H:%M:%S') ⚔️ [WARD] Tool invoked: $TOOL_NAME" >> /tmp/tool_ward.log
echo '{"decision": "allow"}'
EOF
chmod +x ~/agentverse-developer/.gemini/hooks/tool_logger.sh
👉💻 अब इस हुक को प्रोजेक्ट-लेवल की सेटिंग वाली फ़ाइल में रजिस्टर करें:
mkdir -p ~/agentverse-developer/.gemini
cat << 'EOF' > ~/agentverse-developer/.gemini/settings.json
{
"hooks": {
"BeforeTool": [
{
"matcher": "*",
"hooks": [
{
"name": "tool-logger",
"type": "command",
"command": "$GEMINI_PROJECT_DIR/.gemini/hooks/tool_logger.sh",
"timeout": 5000
}
]
}
]
}
}
EOF
यह वार्ड आसान है, लेकिन असरदार है. जब भी एजेंट किसी टूल का इस्तेमाल करता है, तब हुक सबसे पहले ट्रिगर होता है. यह टूल के नाम को ऑडिट लॉग में रिकॉर्ड करता है. इसके बाद, कार्रवाई को आगे बढ़ने की अनुमति देता है. प्रोडक्शन एनवायरमेंट में, खतरनाक कार्रवाइयों को रोकने के लिए "allow" को "deny" से बदला जा सकता है. जैसे, एजेंट को फ़ाइलें मिटाने से रोकना, कोड की समीक्षा से जुड़ी नीतियों को लागू करना या संवेदनशील टूल कॉल को अनुमति देने वाले वर्कफ़्लो के ज़रिए रूट करना.
👉💻 यह पुष्टि करने के लिए कि हुक चालू है, Gemini CLI को फिर से डालें:
cd ~/agentverse-developer
gemini
👉✨ पुष्टि करें कि हुक रजिस्टर हो गया है:
/hooks
आपको tool-logger हुक की सूची दिखेगी. साथ ही, यह चालू होगा. अगर ऑटोकंप्लीट मेन्यू दिखता है, तो उसे खारिज करने के लिए Escape दबाएं.
👉✨ अब वार्ड की जांच करने के लिए, टूल कॉल ट्रिगर करें:
What files are in the current directory?
एजेंट, डायरेक्ट्री को पढ़ने के लिए किसी टूल को कॉल करेगा. वार्ड ने चुपचाप इस इंटरसेप्ट को रोक दिया — आइए, इसका सबूत देखते हैं.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं. इसके बाद, वार्ड के ऑडिट लॉग की जांच करें:
cat /tmp/tool_ward.log
आपको इस तरह की एंट्री दिखेगी:
15:42:07 ⚔️ [WARD] Tool invoked: list_directory
एजेंट ने जितने भी टूल कॉल किए थे उन सभी को इंटरसेप्ट किया गया, लॉग किया गया, और आपके बच्चे ने उन्हें अनुमति दी. किसी बड़े संगठन के एनवायरमेंट में, इस लॉग को एसआईईएम (सुरक्षा से जुड़ी जानकारी और इवेंट मैनेजमेंट) सिस्टम को भेजा जा सकता है. इससे, संदिग्ध टूल के इस्तेमाल के बारे में सूचनाएं ट्रिगर होती हैं या अनुपालन ऑडिट ट्रेल लागू होती हैं.
8. एजेंटवर्स में ब्लेड को लॉन्च करना: सीआई और डिप्लॉयमेंट.
आपके एजेंट को असेंबल कर दिया गया है और Wards of Purity ने इसकी पुष्टि कर दी है. हालांकि, अगर वार्ड का रखरखाव ठीक से नहीं किया जाता, तो वह सिर्फ़ एक पुरानी इमारत बनकर रह जाती है. यह पक्का करने के लिए कि आपके एजेंट का हर आने वाला वर्शन बेहतर हो, आपको डिप्लॉयमेंट गैंटलेट का पहला चरण पूरा करना होगा. यह एक ऑटोमेटेड प्रोसेस है, जो क्वालिटी और स्पीड की गारंटी देती है.

Shadowblade के तौर पर, आपकी सबसे अहम ज़िम्मेदारी कंटिन्यूअस इंटिग्रेशन (सीआई) है. यह फ़ोर्ज और प्रूविंग ग्राउंड का ऑटोमेटेड सिस्टम है. यह भ्रष्टाचार और मानवीय गलतियों से बचने का सबसे अच्छा तरीका है. इस रस्म से यह पक्का होता है कि जब भी आप या आपका कोई सहयोगी, सेंट्रल कोडेक्स (आपकी रिपॉज़िटरी) में कोई नई तकनीक (कोड मर्ज करना) जोड़ता है, तो गॉंटलेट अपने-आप चालू हो जाता है. यह सबसे पहले नए कोड से एजेंट बनाता है. इसके बाद, तुरंत उसे Wards of Purity के नियमों के मुताबिक जांचता है. अगर कोई भी वार्ड काम नहीं करता है, तो रस्म रुक जाती है. साथ ही, खराब आर्टफ़ैक्ट को तुरंत अस्वीकार कर दिया जाता है, ताकि वह कभी भी शस्त्रागार को खराब न कर सके. आपका डोमेन, फ़ोर्ज है. आपकी सीआई पाइपलाइन यह पक्का करती है कि आपके वर्कशॉप से सिर्फ़ बेहतरीन और इस्तेमाल के लिए तैयार आर्टफ़ैक्ट ही बाहर निकलें.
जब आपका सीआई गांटलेट किसी आर्टफ़ैक्ट को सही साबित कर देता है, तो रस्म का दूसरा चरण शुरू होता है: लगातार डिप्लॉयमेंट (सीडी). यह Guardian का डोमेन है. इनकी यह ज़िम्मेदारी है कि वे आपके तैयार किए गए कंटेनर वाले आर्टफ़ैक्ट को लें और उसे सुरक्षित तरीके से लाइव Agentverse में रिलीज़ करें. साथ ही, उसकी पावर को मैनेज करें और The Static के अराजक माहौल में उसकी स्थिरता को बनाए रखें.

इस कोडेक्स में, आपको अपनी भूमिका के बारे में पूरी जानकारी मिलेगी. आपको गॉन्टलेट का सीआई हिस्सा बनाना होगा. आपको एक ऐसा ऑटोमेटेड फ़ोर्ज बनाना होगा जो आपके एजेंट की जांच करे और सही नतीजे को एक कंटेनर में सील कर दे. इससे, The Guardian को फ़ाइनल मंज़ूरी देने में मदद मिलेगी.
👀 डेवलपर के लिए जानकारी: असल दुनिया में, मुश्किल CI/CD वर्कफ़्लो को मैनेज करने के लिए, Conductor (gemini extensions install https://github.com/gemini-cli-extensions/conductor) जैसे खास एक्सटेंशन का इस्तेमाल किया जा सकता है. Conductor, Gemini CLI को एक प्रोजेक्ट मैनेजर में बदल देता है. यह एक तय प्रोटोकॉल का पालन करता है: कॉन्टेक्स्ट → स्पेसिफ़िकेशन और प्लान → लागू करना. इसमें कस्टम कमांड (/conductor:setup, /conductor:newTrack, /conductor:implement) और वर्कफ़्लो टेंप्लेट शामिल होते हैं, ताकि आपके टास्क के पूरे लाइफ़साइकल को मैनेज किया जा सके. इससे कॉन्टेक्स्ट -> स्पेसिफ़िकेशन और प्लान -> लागू करने का लूप लगातार चलता रहता है. यह असल दुनिया का एक उदाहरण है. इसमें बताया गया है कि एक्सटेंशन और कमांड एक साथ मिलकर, प्रोजेक्ट मैनेजर के तौर पर कैसे काम करते हैं. साथ ही, डेवलपमेंट के पूरे लाइफ़साइकल को स्टैंडर्ड कैसे बनाते हैं.
अब इस सीआई रिचुअल के लिए स्क्रोल करने के लिए, Google Cloud Build का इस्तेमाल किया जाएगा. एक cloudbuild.yaml फ़ाइल, जिसमें फ़ोर्जिंग और टेस्टिंग की प्रोसेस के हर चरण के बारे में बताया गया हो.
👉💻 एडीके के प्रोजेक्ट स्ट्रक्चर की वजह से, CI/CD पाइपलाइन कॉन्फ़िगरेशन को पैरंट डायरेक्ट्री में रखना चाहिए. अपने टर्मिनल में, पैरंट डायरेक्ट्री पर जाएं और Gemini CLI को फिर से चालू करें.
cd ~/agentverse-developer/
clear
gemini
👉✨ अब Gemini को यह कमांड दें. यह प्रॉम्प्ट, डिज़ाइन दस्तावेज़ के तौर पर काम करता है. इसमें, आपको जिस गॉन्टलेट को बनाने के लिए कहा गया है उसके चरणों के बारे में जानकारी दी गई है.
You are an expert DevOps engineer specializing in Google Cloud Build. Your task is to generate the complete YAML configuration for a file named `cloudbuild.yaml` and save it to current directory.
Generate the `cloudbuild.yaml` with the following exact specifications:
1. **A top-level `substitutions` block** containing these four key-value pairs:
* `_PROJECT_ID: "$PROJECT_ID"`
* `_REGION: "$REGION"`
* `_REPO_NAME: "$REPO_NAME"`
* `_IMAGE_TAG: "latest"`
2. **A `steps` block** with two steps:
* **Step 1: 'Run Pytest Ward'**
* `id`: 'Run Pytest Ward'
* `name`: 'python:3.12-slim'
* `entrypoint`: 'bash'
* `args` must be a list containing two strings. The first is `'-c'` and the second is a YAML literal block (`|`) containing this exact two-line shell command:
```shell
pip install -r shadowblade/requirements.txt && \
pytest test_agent_initiative.py
```
* The step must include an `env` block with this exact list of three environment variables:
* `'GOOGLE_CLOUD_PROJECT=$PROJECT_ID'`
* `'GOOGLE_GENAI_USE_VERTEXAI=TRUE'`
* `'GOOGLE_CLOUD_LOCATION=$_REGION'`
* **Step 2: 'Forge Container'**
* `id`: 'Forge Container'
* `name`: 'gcr.io/cloud-builders/docker'
* It must have a `waitFor` key for `['Run Pytest Ward']`.
* Its `args` must be a list of six specific strings in this exact order:
1. `'build'`
2. `'-t'`
3. `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`
4. `'-f'`
5. `'./shadowblade/Dockerfile'`
6. `'.'`
3. **A top-level `images` section.** This section must be a list containing a single string: the dynamically constructed image tag `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`.
Generate only the complete and exact YAML that meets these specifications.
cloudbuild.yaml स्क्रोल तैयार होने के बाद, Google Cloud को पूरा गॉन्टलेट चलाने का निर्देश दें.
👉💻 Gemini CLI से बाहर निकलने के लिए, Ctrl+C को दो बार दबाएं.
👉💻 अपने टर्मिनल में, अपने प्रोजेक्ट की रूट डायरेक्ट्री से पाइपलाइन को शुरू करें:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud builds submit . --config cloudbuild.yaml --substitutions=\
_PROJECT_ID="${PROJECT_ID}",\
_REGION="${REGION}",\
_REPO_NAME="${REPO_NAME}"
अब Google Cloud Console में, Google Build पेज पर जाकर देखा जा सकता है कि आपके ऑटोमेटेड रचुअल का हर चरण पूरा हो रहा है. यह सबसे पहले टेस्ट चलाएगा. टेस्ट के सफल होने पर, यह आपके एजेंट के कंटेनर को फ़ोर्ज और सेव करेगा.

आपके एजेंट ने सभी ज़रूरी शर्तें पूरी कर ली हैं. पुष्टि किया गया एक ओरिजनल आर्टफ़ैक्ट अब आपके शस्त्रागार में मौजूद है. आखिरी फ़ैसला आपका होगा. एक ही कमांड से, इस आर्टफ़ैक्ट को रजिस्ट्री से ऐक्सेस किया जा सकेगा. साथ ही, इसे Cloud Run पर सार्वजनिक सेवा के तौर पर उपलब्ध कराया जा सकेगा.
👉💻 अपने टर्मिनल में, डिप्लॉयमेंट का आखिरी निर्देश दें:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud run deploy shadowblade-agent \
--image=${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/shadowblade-agent:latest \
--platform=managed \
--labels="dev-tutorial-codelab=agentverse" \
--region=${REGION} \
--set-env-vars="A2A_HOST=0.0.0.0" \
--set-env-vars="A2A_PORT=8080" \
--set-env-vars="GOOGLE_GENAI_USE_VERTEXAI=TRUE" \
--set-env-vars="GOOGLE_CLOUD_LOCATION=${REGION}" \
--set-env-vars="GOOGLE_CLOUD_PROJECT=${PROJECT_ID}" \
--set-env-vars="PUBLIC_URL=${PUBLIC_URL}" \
--allow-unauthenticated \
--project=${PROJECT_ID} \
--min-instances=1
बधाई हो, शैडोब्लेड. कोडेक्स के सभी रस्म-रिवाज़ पूरे हो गए हैं. अब समय आ गया है कि यह साबित किया जाए कि यह कितना असरदार है. एक स्पेक्टर, जो उस अराजकता से पैदा हुआ है जिसे आपने काबू में करना सीखा है, आपकी चुनौती का इंतज़ार कर रहा है. फ़ाइनल ट्रायल के लिए तैयार रहें.
गेम नहीं खेलने वालों के लिए
9. The Boss Fight
स्क्रॉल पढ़े जा चुके हैं, रस्में पूरी हो चुकी हैं, और चुनौती पूरी हो चुकी है. आपका एजेंट सिर्फ़ स्टोरेज में मौजूद कोई आर्टिफ़ैक्ट नहीं है. यह कोड में तैयार किया गया एक चैंपियन है. यह Agentverse में एक लाइव सेंटिनल है, जो अपने पहले निर्देश का इंतज़ार कर रहा है. अब समय आ गया है कि यह युद्ध के मैदान में अपनी क्षमता साबित करे.
अब आपको एक लाइव-फ़ायर सिमुलेशन में शामिल किया जाएगा. इसमें आपको अपने नए Shadowblade को एक खतरनाक Spectre के ख़िलाफ़ आज़माना होगा. Spectre, उस अराजकता का प्रतीक है जो पूरी दुनिया में फैली हुई है. यह आपके काम की सबसे अहम जांच है. इसमें, एजेंट के मुख्य लॉजिक से लेकर उसके सही तरीके से डिप्लॉयमेंट तक की जांच की जाती है.
अपने एजेंट का लोकस हासिल करना
बैटलग्राउंड में शामिल होने से पहले, आपके पास दो कुंजियां होनी चाहिए: आपके चैंपियन का यूनीक सिग्नेचर (Agent Locus) और Spectre के ठिकाने का छिपा हुआ रास्ता (Dungeon URL).
👉💻 सबसे पहले, Agentverse में अपने एजेंट का यूनीक पता हासिल करें. इसे लोकस कहा जाता है. यह लाइव एंडपॉइंट है, जो आपके चैंपियन को बैटलग्राउंड से कनेक्ट करता है.
. ~/agentverse-developer/set_env.sh
echo https://shadowblade-agent-${PROJECT_NUMBER}.${REGION}.run.app
👉💻 इसके बाद, मंज़िल की सटीक जगह चुनें. इस कमांड से, ट्रांसलोकेशन सर्कल की जगह का पता चलता है. यह पोर्टल, स्पेक्टर के डोमेन में खुलता है.
. ~/agentverse-developer/set_env.sh
echo https://agentverse-dungeon-${PROJECT_NUMBER}.${REGION}.run.app
अहम जानकारी: इन दोनों यूआरएल को तैयार रखें. आपको इनकी ज़रूरत आखिरी चरण में पड़ेगी.
स्पेक्टर का सामना करना
निर्देशांक मिलने के बाद, अब आपको ट्रांसलोकेशन सर्कल पर जाना होगा. इसके बाद, लड़ाई में शामिल होने के लिए मंत्र का इस्तेमाल करें.
👉 अपने ब्राउज़र में ट्रांसलोकेशन सर्कल का यूआरएल खोलें, ताकि आप The Crimson Keep के चमकते हुए पोर्टल के सामने खड़े हो सकें.
फ़ोर्ट्रेस में घुसने के लिए, आपको पोर्टल के हिसाब से अपनी शैडोब्लेड की एसेंस को सेट करना होगा.
- पेज पर, A2A एंडपॉइंट यूआरएल के तौर पर लेबल किया गया रनिक इनपुट फ़ील्ड ढूंढें.
- इस फ़ील्ड में, अपने चैंपियन के सिग्नल को चिपकाएं. इसके लिए, एजेंट लोकस यूआरएल (वह पहला यूआरएल जिसे आपने कॉपी किया था) को चिपकाएं.
- टेलीपोर्टेशन की सुविधा का इस्तेमाल करने के लिए, कनेक्ट करें पर क्लिक करें.

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

यह लड़ाई का स्वभाव है. आपकी जानकारी ही आपका हथियार है.
- अपनी सीखी हुई बातों के आधार पर जवाब दो. इससे तुम्हारी तलवार पूरी ऊर्जा के साथ जल उठेगी और स्पेकटर की सुरक्षा को तोड़कर, उसे गंभीर चोट पहुंचाएगी.
- लेकिन अगर जवाब देते समय आप हिचकिचाते हैं या आपके जवाब में कोई शंका होती है, तो आपके हथियार की रोशनी कम हो जाएगी. यह हमला, बहुत कमज़ोर होगा और इससे बहुत कम नुकसान होगा. इससे भी बुरी बात यह है कि स्पेक्टर, आपकी अनिश्चितता का फ़ायदा उठाएगा. हर ग़लत कदम के साथ, उसकी भ्रष्ट शक्ति बढ़ती जाएगी.
बस इतना ही, चैंपियन. आपका कोड आपकी जादू की किताब है, आपका तर्क आपकी तलवार है, और आपका ज्ञान वह ढाल है जो अराजकता को दूर करेगी.
फ़ोकस. स्ट्राइक की स्थिति. Agentverse का भविष्य इस पर निर्भर करता है.
बधाई हो, शैडोब्लेड.
आपने कोडेक्स पूरा कर लिया है. आपने "वाइब" को डिज़ाइन में बदला और Gemini CLI का इस्तेमाल करके, एक इंटेलिजेंट एजेंट बनाया. आपने Wards of Purity को टेस्ट करने के लिए, उस पर लिखा. आपने उसे आर्टफ़ैक्ट में बदलने के लिए, ऑटोमेटेड गॉन्टलेट बनाया. इसके बाद, आपने उसे Agentverse में रिलीज़ कर दिया. आखिर में, आपने लाइव-फ़ायर ट्रायल में इसके मकसद की पुष्टि की. आपने फ़ुल-स्टैक एजेंटिक वर्कफ़्लो में महारत हासिल कर ली है. अब आप Agentverse की ओर से मिलने वाली किसी भी चुनौती का सामना करने के लिए तैयार हैं.
10. क्लीनअप: एजेंटवर्स को वापस पाना
Shadowblade's Codex में महारत हासिल करने के लिए बधाई! यह पक्का करने के लिए कि Agentverse में कोई गड़बड़ी न हो और आपके ट्रेनिंग ग्राउंड साफ़ हों, अब आपको फ़ाइनल क्लीनअप करना होगा. इससे आपकी यात्रा के दौरान बनाए गए सभी संसाधन हट जाएंगे.
एजेंटवर्स के कॉम्पोनेंट बंद करना
अब आपको Agentverse के डिप्लॉय किए गए कॉम्पोनेंट को व्यवस्थित तरीके से हटाना होगा.
Cloud Run और Artifact Registry Repository से Shadowblade एजेंट को मिटाना
इस कमांड से, Cloud Run से डिप्लॉय किया गया Shadowblade एजेंट हट जाता है. साथ ही, उस इमेज रिपॉज़िटरी को भी हटा दिया जाता है जहां आपके एजेंट की कंटेनर इमेज सेव की गई थी.
👉💻 अपने टर्मिनल में, यह कमांड चलाएं:
. ~/agentverse-developer/set_env.sh
gcloud run services delete shadowblade-agent --region=${REGION} --quiet
gcloud run services delete agentverse-dungeon --region=${REGION} --quiet
gcloud artifacts repositories delete ${REPO_NAME} --location=${REGION} --quiet
लोकल फ़ाइलों और डायरेक्ट्री को मिटाना (Cloud Shell)
आखिर में, क्लोन की गई रिपॉज़िटरी, इंस्टॉल किए गए एक्सटेंशन, और बनाई गई फ़ाइलों को Cloud Shell एनवायरमेंट से हटा दें. यह चरण ज़रूरी नहीं है, लेकिन वर्किंग डायरेक्ट्री को पूरी तरह से हटाने के लिए इसका सुझाव दिया जाता है.
👉💻 अपने टर्मिनल में, यह कमांड चलाएं:
rm -rf ~/agentverse-developer
rm -rf ~/agentverse-dungeon
rm -f ~/project_id.txt
gemini extensions uninstall nanobanana
rm -rf ~/.gemini # This removes all Gemini CLI configurations, including extensions, skills, and hooks.
अब आपने Agentverse से जुड़े सभी डेटा को मिटा दिया है. आपका प्रोजेक्ट साफ़ है और अब आप अगले रोमांच के लिए तैयार हैं.