ADK और Gemini CLI की मदद से, ट्रैवल एजेंट के तौर पर काम करने वाला एक आसान ऐप्लिकेशन बनाना

1. परिचय

9344c1d1a9f221b7.png

पिछली बार कब अपडेट किया गया: 02-02-2026

ADK की मदद से, ट्रैवल एजेंट के लिए एक आसान ऐप्लिकेशन बनाना

इस ADK Python(*) वर्कशॉप में आपका स्वागत है. इसमें Gemini CLI की मदद से, बैटरी से जुड़ी सभी ज़रूरी सुविधाएं शामिल हैं!

इस कोडलैब को दो 🏅 माइलस्टोन में बांटा गया है:

  1. सीखने का एक सामान्य और आसान तरीका: सेटअप करना + तुरंत संतुष्टि पाना.
  2. आपकी दिलचस्पी के हिसाब से तैयार किया गया पाथ, जिसमें Gemini CLI की मदद से किसी क्वेस्ट को हल किया जाता है

इस कोडलैब का दूसरा हिस्सा, इसे हैकथॉन के लिए बेहतरीन बनाता है. साथ ही, इसमें सबसे क्रिएटिव समाधानों के लिए इनाम भी रखे गए हैं!

पहला माइलस्टोन: ADK और Gemini CLI की मदद से अपना पहला एजेंट बनाना

इस माइलस्टोन का मकसद, ADK की मदद से एक आसान ट्रैवल एजेंट बनाना है.

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

यह एक ऐसा सेक्शन है जिसमें हम छोटे-छोटे और आसान चरणों में, पूरी तरह से काम करने वाला ऐप्लिकेशन बनाते हैं. आम तौर पर, इसमें एक घंटा लगता है. हालांकि, इसमें इंस्टॉलेशन का समय शामिल नहीं है.

दूसरा माइलस्टोन: अपने एजेंट को बेहतर बनाना

इसके बाद, हम आपको अपनी पसंद के मुताबिक ऐप्लिकेशन को बेहतर बनाने के लिए, एक दर्जन विकल्प देते हैं. इनमें अलग-अलग तरह की समस्याएं शामिल होती हैं. इससे आपको अलग-अलग पहलुओं (यूज़र इंटरफ़ेस (यूआई), ऑपरेशंस, एजेंट के साथ जटिल इंटरैक्शन वगैरह) के बारे में जानने में मदद मिलती है

आपको क्या बनाने को मिलेगा

इस कोडलैब में, ADK और Gemini CLI का इस्तेमाल करके, ट्रैवल एजेंट ऐप्लिकेशन बनाया जाएगा. आपका ऐप्लिकेशन:

  • Airbnb MCP के ज़रिए, Airbnb API से कनेक्ट करें.
  • अप-टू-डेट जानकारी (मौसम, तारीखें वगैरह) के लिए, ऑनलाइन खोज करना
  • कस्टम टूल इस्तेमाल करना.
  • NanoBanana का इस्तेमाल करके, अपार्टमेंट/कमरों की इमेज जनरेट करें.

Gemini CLI इन सभी कामों में आपकी मदद करेगा: कोड लिखना/कोड की समीक्षा करना और ADK रेपो के लोकल मिरर में नए दस्तावेज़ ढूंढना (Python या आपकी पसंदीदा भाषा में).

आपको क्या सीखने को मिलेगा

  • ADK की मदद से ऐप्लिकेशन बनाने का तरीका
  • स्थानीय दस्तावेज़ों के आधार पर ऐप्लिकेशन कोड करने के लिए, Gemini CLI का इस्तेमाल कैसे करें!
  • रीयल-टाइम में बाहरी डेटा सोर्स से कनेक्ट करने के लिए, एमसीपी सर्वर के साथ इंटरैक्ट करने का तरीका. जैसे:

आपको इन चीज़ों की ज़रूरत होगी

  • ऐसा कंप्यूटर जिस पर पैकेज इंस्टॉल किए जा सकते हैं. जैसे, npm install ..
  • Python, TypeScript, Go या Java में से किसी एक में कोडिंग की बुनियादी जानकारी होनी चाहिए.
  • हम आपको आईडीई ( Antigravity, vscode, IntelliJ, vim) का इस्तेमाल करने का सुझाव देते हैं.

ADK + Gemini CLI का इस्तेमाल क्यों करें?

आप में से कुछ लोगों के मन में यह सवाल आ सकता है कि मुझे ADK (एजेंट बिल्डर एसडीके) का इस्तेमाल, लोकल एजेंटिक कोड हेल्पर (जैसे कि Gemini CLI) के साथ क्यों करना चाहिए? इसकी वजह यह है कि दोनों टूल बहुत ज़्यादा असरदार हैं. हालांकि, इनका इस्तेमाल करना आसान नहीं है. कई लोगों ने दोनों टूल का एक साथ इस्तेमाल करने की कोशिश की है, लेकिन वे ऐसा नहीं कर पाए. इसकी मुख्य वजह "लूप इन अ लूप" की समस्याएं हैं. इस कोडलैब में, दोनों सिस्टम को एक साथ इस्तेमाल करने के बारे में कुछ सुझाव दिए गए हैं.

2. सेट अप करना

अगर आपको यह

कोडलैब को अपनी मशीन पर चलाएं या अगर आपको इस कोडलैब को पूरी तरह से क्लाउड में चलाना है, तो Cloud Shell शुरू करें.

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, मुफ़्त में आज़माने के लिए 300 डॉलर के प्रोग्राम में शामिल हो सकते हैं.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

Cloud Shell चालू करें

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

Google Cloud Shell टर्मिनल का स्क्रीनशॉट. इसमें दिखाया गया है कि एनवायरमेंट कनेक्ट हो गया है

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

ज़रूरी शर्तें (इंस्टॉल करने के लिए)

इस ट्यूटोरियल के लिए, आपको ये इंस्टॉल करने होंगे:

1. Python और uv

python और uv (Python के लिए पैकेज मैनेजर). यह ADK के लिए ज़रूरी है. पक्का करें कि आपने uv इंस्टॉल किया हो:

$ curl -LsSf https://astral.sh/uv/install.sh | sh

यूवी का इस्तेमाल क्यों किया जाता है? अपनी पसंद के हिसाब से Python मैनेजर का इस्तेमाल किया जा सकता है. हालांकि, uv का इस्तेमाल करने से, Python के लिए ENV/PATH सेटअप, आपके और Gemini CLI के लिए एक जैसा होगा. इसलिए, शेल का इस्तेमाल करने के दौरान आपको Gemini CLI जैसा ही अनुभव मिलेगा. अगर आपने virtualenv का इस्तेमाल किया है , तो Gemini CLI को आपके एनवायरमेंट की नकल करने के लिए, "source .env/venv/bin/activate && my-original-command" जैसे काम करने होंगे.

2. Gemini CLI

gemini CLI को इंस्टॉल करने के निर्देश यहाँ दिए गए हैं: https://github.com/google-gemini/gemini-cli .

ध्यान दें: इसके लिए, npm या npx इंस्टॉल होना ज़रूरी है.

npm install -g @google/gemini-cli

  1. Mac पर, आधिकारिक दस्तावेज़ों के मुताबिक brew का इस्तेमाल किया जा सकता है.
  2. Windows पर, chocolatey का इस्तेमाल किया जा सकता है. इसके अलावा, https://nodejs.org/en/download से एक्ज़ीक्यूटेबल फ़ाइल डाउनलोड की जा सकती है

चौथे चरण (बाद में) के लिए, आपको npx भी इंस्टॉल करना होगा. npm और npx, दोनों को Gemini CLI के साथ स्वाभाविक रूप से काम करना चाहिए. अगर ऐसा नहीं होता है, तो Gemini CLI से यहां मदद मांगें.

अगर आप चाहें, तो just भी इंस्टॉल किया जा सकता है. यह एक ज़्यादा बेहतर और खुद से दस्तावेज़ बनाने वाला Makefile है. यहाँ यह भी बताया गया है कि Gemini सीएलआई से इसे इंस्टॉल करने के लिए कहा जा सकता है. यह आपके लिए इसे इंस्टॉल कर सकता है!

efade99623113f1.png

पुष्टि करना.

आपके पास Vertex AI की सुविधा वाला Google Cloud प्रोजेक्ट या Google AI Studio का एपीआई पासकोड होना चाहिए.

पहला विकल्प (वर्कशॉप के लिए सुझाव दिया गया है): अपना एपीआई पासकोड एक्सपोर्ट करें:

export GOOGLE_API_KEY="your-api-key"

दूसरा विकल्प (Vertex AI): gcloud के साथ पुष्टि करें:

export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
export GOOGLE_GENAI_USE_VERTEXAI=true
gcloud auth application-default login

अपना वर्क एनवायरमेंट सेट अप करना

आपको mysolution/ में अपना समाधान बनाना है. इसलिए, आइए हम फ़ोल्डर और ज़रूरी दो फ़ाइलें बनाते हैं.

इस समय, अपने IDE (Visual Studio Code, IntelliJ, RubyMine, ..) को खोलें और फ़ोल्डर खोलें.

# 1. Find an empty directory, and download this repo.
git clone https://github.com/palladius/ai-friendly-agents/
cd ai-friendly-agents/adk/workshops/simple-travel-agent/

# 2. Create your solution empty skeleton
mkdir -p mysolution/
touch mysolution/__init__.py mysolution/agent.py

# 3. This installs ADK and MCP via `uv` by reading pyproject.toml
uv sync

# 4. Call Gemini CLI
gemini  # This runs Gemini CLI under the simple-travel-agent/ folder.
# Login with your GMail account.

uv sync की ज़रूरत नहीं है. हालांकि, अगर यह काम नहीं करता है, तो आपको Python या uv इंस्टॉलेशन को ठीक करना होगा.

उपलब्ध समाधान

पूरा कोड 📂 steps/ में मौजूद है. आपके पास वहां से कोड कॉपी करने का विकल्प होता है.

इस कोडलैब का मकसद, आपको अच्छा ADK कोड लिखना सिखाना नहीं है. इसका मकसद, आपके निर्देश के मुताबिक अपने-आप अच्छा कोड लिखने के लिए, अपना एनवायरमेंट सेट अप करना है.

  1. सॉफ़्टवेयर इंस्टॉल करना
  2. कॉन्फ़िगर करने / इसे काम करने के लिए सेट अप करने में, और
  3. सही फ़ीडबैक लूप में शामिल होना

हम चाहते हैं कि आप यहां यह सीखें. $ just web-4steps की मदद से, इन सभी को एक साथ भी टेस्ट किया जा सकता है!

3. पहला चरण: बेसिक एजेंट

abfef47ab2ff0c98.png

आइए, सबसे पहले एक ऐसा बुनियादी एजेंट बनाते हैं जो बातचीत कर सके.

mysolution/__init__.py नाम की फ़ाइल में बदलाव करें. इसके लिए, यह कॉन्टेंट जोड़ें:

from .agent import root_agent

यह बहुत आसान है! इससे ADK को पता चलता है कि आपका कोड कहां है: agent.py में.

mysolution/agent.py नाम की फ़ाइल में बदलाव करें. इसके लिए, यह कॉन्टेंट जोड़ें:

from google.adk.agents import Agent

root_agent = Agent(
    name="travel_basic",
    model="gemini-2.5-flash",
    instruction="You are a helpful travel assistant." +
    "You can help with general travel advice based on your knowledge.",
)

एजेंट की जांच करना

यह सभी चरणों पर लागू होता है. ADK की मदद से, एजेंट को दो तरीकों से टेस्ट किया जा सकता है: सीएलआई और वेब.

  • CLI, तुरंत और ऑटोमेटेड टेस्ट के लिए सबसे सही है
  • वेब पर, यह देखना सबसे अच्छा होता है कि क्या हो रहा है. साथ ही, माइक्रोफ़ोन (!) का इस्तेमाल करना और समस्या हल करना भी सबसे अच्छा होता है.

सलाह: इस अभ्यास के लिए, यूनिट टेस्टिंग को छोड़कर कोई भी काम करने के लिए, वेब का इस्तेमाल करें. यह वाकई बहुत शानदार है! सीएलआई को सिर्फ़ ऑटोमेटेड टेस्टिंग के लिए रखें.

एक अच्छा प्रॉम्प्ट, जो पहले-दूसरे-तीसरे-चौथे चरण की सही तरीके से जांच करता है, यह हो सकता है (स्मार्ट "लिटमस प्रॉम्प्ट"):

# <!– litmus prompt –> Hi, I'd like to book a hotel in Paris for tomorrow evening alone, one night, in Paris city center. ग्या दे लियों के पास हो. बजट: एक रात का किराया 200 यूरो से कम हो.

  1. मुझे बताओ कि कल की तारीख क्या है और वह हफ़्ते का कौनसा दिन है.
  2. मुझे बताओ कि तुम्हें कल के लिए कौन-कौनसे होटल दिख रहे हैं (कम से कम तीन). मुझे यह जानकारी देखनी है: > कीमत, पता, कुछ रेटिंग (XX/YY के फ़ॉर्मैट में, जैसे कि "4.7/5" - Google Hotels, Booking या Airbnb से), # समीक्षाएं. मुझे यह जानकारी टेबल के फ़ॉर्मैट में दो. आम तौर पर, होटल का नाम होटल के किसी यूआरएल से लिंक होना चाहिए. यूआरएल कॉलम जोड़ने की ज़रूरत नहीं है. पक्का करें कि लिंक सही हो. इसका मतलब है कि लिंक काम करता हो और पेज पर होटल के बारे में जानकारी मौजूद हो!

यह एक स्मार्ट प्रॉम्प्ट है, क्योंकि यह समय और होटलों की जांच करता है. यह पहले, दूसरे, और तीसरे चरण में अलग-अलग तरीके से फ़ेल होगा. यह सिर्फ़ चौथे चरण में पूरी तरह से पास होगा. आपके पास, अपनी पसंद का कोई भी प्रॉम्प्ट इस्तेमाल करने का विकल्प है!

इसे बैश (सीएलआई) से चलाएं:

# 1. If ADK was installed:
adk run mysolution/
# ... but if you get: -bash: adk: command not found"
# 2. Call ADK cli script through UV to avoid python install nightmares.
uv run adk run mysolution/

ऊपर दिए गए "लिटमस प्रॉम्प्ट" का इस्तेमाल करके देखें.

ऐसा हो सकता है कि वह तारीखों के बारे में जानकारी न दे पाए. हमें इसे तारीख के बारे में बताना होगा!

वेब के लिए, यह काम ऐसे किया जा सकता है:

  1. uv run adk web . : इससे इस फ़ोल्डर में मौजूद सभी एजेंट चलते हैं. आपको इसे "mysolution/" सबफ़ोल्डर पर ले जाना है
  2. सबसे ऊपर दाईं ओर मौजूद, mysolution/ को चुनें (बगल में दी गई इमेज देखें)
  3. टेक्स्ट में अपना सवाल पूछें या माइक्रोफ़ोन की मदद से "लिटमस प्रॉम्प्ट" के बारे में कुछ पूछें.

TODO(ricc): <image here>

ध्यान दें कि आपको CLI वर्शन के हिसाब से, ऊपर वाले फ़ोल्डर से adk web को कॉल करना होगा.

यहां एक संभावित जवाब दिया गया है, जिसमें तारीख के बारे में कुछ हद तक गलत जानकारी दी गई है. ध्यान दें, पांच में से तीन बुकिंग लिंक काम कर रहे हैं! ठीक है.

4. दूसरा चरण: now() टूल जोड़ना

एजेंट को "आज" के बारे में नहीं पता है. आइए, इसे एक टूल देते हैं.

TODO(image): ricc put here image of step2.

root_agent की डेफ़िनिशन से ठीक पहले, agent.py में यह फ़ंक्शन जोड़ें:

from datetime import datetime

def now() -> dict:
    """Returns the current date and time."""
    my_datetime = ... # Ask Gemini CLI to help you!
    return {
        "status": "success",
        "current_time": my_datetime
    }

टूल को शामिल करने के लिए, एजेंट की परिभाषा को अपडेट करें:

  # file XXX.py

  travel_agent = LlmAgent(
        name="..",
        model="..",
        instruction="..",
        tools=[now] # <== This is the only line you want to add.
    )

इसे फिर से चलाएं और वही सवाल पूछें. अब इसे तारीख के बारे में पता होना चाहिए (अच्छा) और होटल के बारे में कम जानकारी होनी चाहिए (बुरा)!

इसे इस तरह के प्रॉम्प्ट के साथ भी आज़माया जा सकता है:

# Let's pretend we're in Milan. This should call the tool
# and respond correctly (possibly with some TZ math issues)

echo "What time is it in Milan?" | uv run adk run mysolution/

5. Step 3: Let's switch gears: google_search

अब जब हमें कस्टम टूल बनाने का तरीका पता चल गया है, तो आइए ADK में उपलब्ध, पहले से मौजूद एक दमदार टूल का इस्तेमाल करने का तरीका जानें: google_search. इससे हमारे एजेंट को वेब से रीयल-टाइम जानकारी ऐक्सेस करने की अनुमति मिलती है.

3cd72c019b8b225f.png

आपका काम, दूसरे चरण में दिए गए एजेंट में बदलाव करना है. now टूल का इस्तेमाल करने के बजाय, ADK लाइब्रेरी से google_search टूल इंपोर्ट और इस्तेमाल किया जाएगा.

# Full Code: `steps/step03_search/agent.py`
# Remember to REMOVE the now() tool here. See above why.
from google.adk.agents import Agent
from google.adk.tools import google_search

root_agent = Agent(
    name="travel_agent",
    model="gemini-2.5-flash",
    tools=[google_search],
    instruction="""You are a travel agent.
Your job is to help the user plan a trip.
You have access to a search engine.
If you don't know the answer, you can use the search engine.
When you are done, reply with "DONE".""",
)

कैंपेन चलाने का तरीका

पहले चरण में बताए गए तरीके से ही इसे भी लागू करें.

सिर्फ़ विशेषज्ञों के लिए. बेहतर इंटिग्रेशन (google_search और now का एक साथ इस्तेमाल करना) के लिए, steps/step03b_search_and_tool/agent.py में कोड की जांच करें और उसे just run-step3b के साथ चलाएं. यह ज़रूरी नहीं है.

6. चौथा चरण: ज़्यादा बेहतर टूल: एमसीपी

TODO(ricc): add image 4

कस्टम और बिल्ट-इन, दोनों तरह के टूल के बारे में जानने के बाद, अब हम एक ज़्यादा कारगर टूल के बारे में जानेंगे: मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) का इस्तेमाल करने वाला मॉडल-एज़-ए-टूल पैटर्न.

इस चरण में, हम एमसीपी की बेहतरीन सुविधाओं पर फ़ोकस करेंगे. इसलिए, हम एक बार फिर अपने पिछले टूल (google_search) को बदलेंगे. हम अपने आसान now टूल को फिर से लॉन्च करेंगे, ताकि यह airbnb_mcp टूल के साथ काम कर सके. इससे पता चलता है कि कोई एजेंट, मुश्किल टास्क पूरे करने के लिए, एक साथ काम करने वाले कई टूल (इस मामले में, FunctionTool और MCPToolset) का इस्तेमाल कैसे कर सकता है.

# Full Code: steps/step04_mcp/agent.py
# ... Imports as before
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters

def now() -> dict:
    # ... as before

# Configure the Airbnb MCP Toolset
airbnb_mcp = MCPToolset(
    connection_params=StdioConnectionParams(
        server_params=StdioServerParameters(
            command='npx',
            args=["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"],
        ),
    )
)

root_agent = Agent(
    name="travel_mcp",
    model="gemini-2.5-flash",
    instruction="You are a helpful travel assistant. You can find accommodation using Airbnb, and have access to the current time.",
    tools=[now, airbnb_mcp],
)

कैंपेन चलाने का तरीका

इस चरण को पूरा करने के लिए, आपके सिस्टम पर npx इंस्टॉल होना ज़रूरी है. बाकी के लिए, यह ऊपर दिए गए तरीके जैसा ही है.

अहम जानकारी/ गड़बड़ियां

  1. अगर आपको robots.txt पाबंदी से जुड़ी गड़बड़ी का मैसेज मिलता है, तो रोबोट डायरेक्टिव को अनदेखा करके, एमसीपी को पैच किया जा सकता है. ज़्यादा जानकारी के लिए, दस्तावेज़ पढ़ें: https://github.com/openbnb-org/mcp-server-airbnb
  2. अगर आपको timeout गड़बड़ी का मैसेज मिलता है (Airbnb को जवाब पाने के लिए पांच सेकंड का समय बहुत कम है), तो ADK के दस्तावेज़ देखें. इसमें बताया गया है कि टाइम आउट को 30 सेकंड तक कैसे बढ़ाया जाए. इसके अलावा.. Gemini CLI का इस्तेमाल करके भी ऐसा किया जा सकता है! ध्यान दें कि 3 दिसंबर, 2025 को Cloud Shell में मुझे टाइमआउट की गड़बड़ी मिली थी. मैंने टाइमआउट की गड़बड़ी को ठीक किया, लेकिन मुझे अब भी गड़बड़ियां मिल रही हैं. इसलिए, मैंने इसे पिछले वर्शन पर वापस कर दिया: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"].

7. 🏅 पहला माइलस्टोन पूरा हुआ!

🏅 बधाई हो! 🏅 अब आप एडीके के विशेषज्ञ हैं! आपने वर्कशॉप का पहला हिस्सा पूरा कर लिया है. साथ ही, आपने कस्टम टूल, बिल्ट-इन टूल, और एमसीपी के ऐडवांस टूल की मदद से एआई एजेंट बनाए और उनकी जांच की. अब Google Agent Development Kit की मदद से, अपने शानदार एजेंट बनाए जा सकते हैं!

अब आपके पास एक ऐसा ट्रैवल एजेंट है जो समय के बारे में जानता है और वेब पर खोज कर सकता है. अब क्रिएटर्स तरक्की की नई ऊंचाइयों को छू रहे हैं!

अब "Gemini CLI" की मदद से, एक और सुविधा जोड़ी जा सकती है.

8. 🏅 दूसरा माइलस्टोन: Gemini CLI की मदद से ADK में कोडिंग करना

अब हम वर्कशॉप के सबसे दिलचस्प हिस्से पर आते हैं.

  1. पक्का करें कि आपने कोड को किसी सुरक्षित जगह पर git commit किया हो. आपके पास ओरिजनल कोड को फ़ोर्क करने या ब्रांच बनाने का विकल्प होता है: चिंता न करें, Gemini सीएलआई इस काम में आपकी मदद कर सकता है!
  2. लागू करने के लिए कोई 💡 आइडिया ढूंढें. यहाँ दिए गए आइडिया देखें, कोई आइडिया खुद खोजें या Gemini से rag/ में मौजूद दस्तावेज़ देखने और कुछ स्मार्ट आइडिया सुझाने के लिए कहें.
  3. ज़रूरी शर्तें पूरी करें, ताकि Gemini, ADK के दस्तावेज़ पढ़ सके. इसके बाद, आप इसका इस्तेमाल कर सकते हैं!

💡 आइडिया

यहां एक मेन्यू दिया गया है, जिसमें अलग-अलग मुश्किल लेवल के कुछ आइडिया दिए गए हैं.

  1. 🟢 [आसान] क्या आपको कई भाषाएँ आती हैं? क्या आपको go, java या Typescript देना है? मौजूदा कोड को फिर से व्यवस्थित करना बहुत आसान है! बस यह पक्का करें कि आपने सही ADK डाउनलोड किया हो और Gemini CLI से अनुवाद करने के लिए कहा हो!
  2. 🟢 [आसान] इमोजी जोड़ें या आउटपुट का कोई ऐसा फ़ॉर्मैट तय करें जो आपको पसंद हो. उदाहरण के लिए, होटल के इमोजी वाली टेबल, उसके बाद कीमत, उसके बाद 1 से 5 स्टार वाले इमोजी. इसमें 🌕🌕🌕🌗🌑 का इस्तेमाल करके आधे स्टार भी दिखाए जा सकते हैं!
  3. 🟢 [आसान] प्रॉम्प्ट में बदलाव करके, उसे अपनी पसंद या नापसंद के हिसाब से जानकारी दें. जैसे, पालतू जानवरों को साथ रखने की अनुमति है या नहीं, ग्राउंड फ़्लोर पर कमरा है या नहीं, शांत जगह है या नहीं, सार्वजनिक परिवहन की सुविधा पास में है या नहीं वगैरह. इसके बाद, प्रॉम्प्ट को आज़माएं. ऊपर दी गई जानकारी के आधार पर, "YOUR_NAME की रेटिंग 1 से 10 के बीच है" जैसी कोई निजी रेटिंग जोड़ें और उस रेटिंग के हिसाब से क्रम से लगाएं.
  4. 🟢 [easy] Any Operator in the room? Cloud Run पर डिप्लॉय करें! या Vertex AI Agent Engine पर! क्या आपको पता है कि इस एजेंट को इंटिग्रेट किया जा सकता है और सीधे नए Gemini Enterprise से कॉल किया जा सकता है?
  5. 🟢 [easy] Integrate `adk run`` with 🍌 NanoBanana MCP. इसके लिए, Gemini API पासकोड की ज़रूरत होती है. यहाँ इमेज बनाई जा सकती हैं, लेकिन उन्हें विज़ुअलाइज़ नहीं किया जा सकता. ज़्यादा मुश्किल वैरिएंट के लिए, यहां देखें.
  6. 🟡 [मीडियम] एक ऐसा सब-एजेंट बनाएं जो HotelSearch का काम करे. साथ ही, एक BudgetAgent या LocationAgent बनाएं, जो आपकी जगह की ज़रूरतों के हिसाब से होटल की जानकारी को दोहरा सके और उसे बेहतर बना सके. उदाहरण के लिए, "LOCATION से X कि॰मी॰ से ज़्यादा दूर नहीं". अगर एपीआई इसकी अनुमति नहीं देता है, तो GoogleSearch की मदद से कुछ जानकारी इधर-उधर की जा सकती है. ध्यान दें: Gemini CLI आपकी मदद कर सकता है.
  7. 🟡 [मीडियम] खोज के नतीजों में मिले एक या उससे ज़्यादा होटलों के लिए, AirbnbReviewAgent लागू करें. इससे समीक्षाओं के बारे में जानकारी मिलती है. साथ ही, रंग कोड वाले कुछ बुलेट पॉइंट में, अच्छी और खराब बातों के बारे में खास जानकारी मिलती है. आपके पास पहले से ही दो कॉम्पोनेंट (GoogleSearch और MCP Airbnb) हैं. इसलिए, आपको इसे मुख्य एजेंट से कनेक्ट करना होगा. साथ ही, उनके बीच बातचीत के लिए कोई प्रोटोकॉल बनाना होगा.
  8. 🟡 [medium] A2A के साथ इंटिग्रेट करें. इसे A2A एजेंट बनाओ! Gemini CLI से फिर मदद मांगें!
  9. 🔴 [जटिल] फ़्लाइट या एमसीपी की अन्य सुविधाओं के साथ इंटिग्रेट करके, कई तरह की सुविधाएं देने वाला ट्रैवल एजेंट बनाया जा सकता है.
  10. 🔴 [complex] Integrate ADK web with 🍌 NanoBanana MCP. यह ऊपर दिए गए उदाहरण से ज़्यादा मुश्किल है. इसके बारे में कुछ सलाह पाने के लिए, https://github.com/palladius/ai-friendly-agents/issues/11 पर जाएं. इस लेख को लिखने में लेखक को तीन घंटे लगे. इस दौरान, उन्होंने Gemini CLI और Gemini 3 के साथ कई बार बातचीत की. साथ ही, हम दोनों ने rag/ से दस्तावेज़/कोड पढ़े!

क्या आपको और आइडिया चाहिए?

  1. कुछ आइडिया पाने के लिए, Maurizio का ADK का बेहतरीन ट्यूटोरियल देखें.
  2. Gemini CLI से rag/ में मौजूद दस्तावेज़ देखकर आइडिया ढूंढने के लिए कहें: Is there a feature in here which seems very succulent to you? Give me 3 proposals and let's implement together the one I choose.

ADK "RAG" के लिए ज़रूरी शर्तें

किसी सुविधा को वाइब कोड करने के लिए, हमारा सुझाव है कि आप पूरा ADK Python ADK डाउनलोड करें (ध्यान दें: इसे अपनी पसंदीदा भाषा, जैसे कि Java या Go के हिसाब से आसानी से बदला जा सकता है!)

कोड ./rag के तहत आता है और इसे ./download-adk.sh से डाउनलोड किया जा सकता है.

rag फ़ोल्डर को आपकी .gitignore फ़ाइल में शामिल किया गया है. इसलिए, पक्का करें कि आपकी .gemini/settings.json फ़ाइल में यह जानकारी मौजूद हो:

{
 "context": {
   "includeDirectories": ["rag"]
 }
}

क्यों? हम चाहते हैं कि Gemini उन फ़ाइलों को पढ़ सके, जबकि उन्हें सुरक्षित तरीके से git-ignored किया गया हो. तकनीकी तौर पर, context.fileFiltering.respectGitIgnore को false पर सेट करके, सभी .gitignore फ़ाइलों को भी अनहाइड किया जा सकता है. हालांकि, इससे बहुत सारा node_modules/ और __pycache__/ कचरा खुल जाता है. इसलिए, फ़ोल्डर को साफ़ तौर पर शामिल करना बेहतर विकल्प है.

9. अगले चरण

दिलचस्पी: इस वर्कशॉप को Gemini CLI की मदद से बनाया गया था. अगर आपको यह जानना है कि मैंने इसे कैसे किया, तो इस फ़ोल्डर में मौजूद GEMINI.md और WORKSHOP_PLAN.md को देखें.

सीखे गए सबक

हमने ADK को Gemini CLI के साथ जोड़ने का तरीका सीखा

आपकी मदद के लिए लेख

6d05afb6b8b235d8.png