ADK की मदद से एआई एजेंट बनाना: टूल की मदद से बेहतर बनाना

1. शुरू करने से पहले

"ADK की मदद से एआई एजेंट बनाना" सीरीज़ के दूसरे पार्ट में आपका स्वागत है! इस कोडलैब में, आपको एक बुनियादी एआई एजेंट को कई तरह के टूल इस्तेमाल करने की अनुमति देने का तरीका बताया जाएगा.

शुरू करने के लिए, इस गाइड में दो विकल्प दिए गए हैं: एक विकल्प उन लोगों के लिए है जो ' ADK की मदद से एआई एजेंट बनाना: बुनियादी बातें' कोडलैब से आगे बढ़ रहे हैं. दूसरा विकल्प उन लोगों के लिए है जो नए सिरे से शुरुआत कर रहे हैं. इन दोनों पाथ से, आपको शुरू करने के लिए ज़रूरी बेस एजेंट कोड मिल जाएगा.

इस कोडलैब के आखिर तक, आपके पास अपने निजी असिस्टेंट एजेंट को अलग-अलग कामों के लिए टूल उपलब्ध कराने का विकल्प होगा. साथ ही, इस सीरीज़ के आने वाले हिस्सों में, हम इसे एक बेहतर मल्टी-एजेंट सिस्टम (एमएएस) में बदल देंगे.

इस कोडलैब को इस छोटे किए गए यूआरएल से भी ऐक्सेस किया जा सकता है: goo.gle/adk-using-tools.

ज़रूरी शर्तें

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

  • टूल के तौर पर कस्टम Python फ़ंक्शन बनाकर, अपने एजेंट को नई स्किल सिखाएं.
  • Google Search जैसे बिल्ट-इन टूल का इस्तेमाल करके, अपने एजेंट को रीयल-टाइम जानकारी से कनेक्ट करें.
  • मुश्किल टास्क के लिए, खास सब-एजेंट बनाकर मल्टी-टूल एजेंट को स्ट्रक्चर करें.
  • क्षमताएं बढ़ाने के लिए, LangChain जैसे लोकप्रिय एआई फ़्रेमवर्क से टूल इंटिग्रेट करें.

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

  • काम करने वाला कंप्यूटर और भरोसेमंद वाई-फ़ाई
  • Google Cloud Console को ऐक्सेस करने के लिए, Chrome जैसे ब्राउज़र का इस्तेमाल करें
  • चीज़ें जानने की दिलचस्पी और कुछ नया सीखने की इच्छा

2. परिचय

ADK की मदद से बनाए गए बुनियादी एजेंट में, एक शक्तिशाली एलएलएम होता है. हालाँकि, इसकी कुछ सीमाएं भी होती हैं: यह अपनी ट्रेनिंग की तारीख के बाद बनाई गई जानकारी को ऐक्सेस नहीं कर सकता. साथ ही, यह बाहरी सेवाओं के साथ इंटरैक्ट नहीं कर सकता. यह एक ऐसी समझदार असिस्टेंट की तरह है जो लाइब्रेरी में बंद है. उसके पास फ़ोन या इंटरनेट की सुविधा नहीं है. किसी एजेंट को वाकई में मददगार बनाने के लिए, हमें उसे टूल देने होंगे.

टूल को इस तरह समझें कि वे एआई असिस्टेंट को बाहरी दुनिया का ऐक्सेस देते हैं: जैसे, कैलकुलेटर, वेब ब्राउज़र या किसी कंपनी के डेटाबेस का ऐक्सेस. ADK में, टूल कोड का एक मॉड्यूलर हिस्सा होता है. इससे एजेंट को कुछ खास कार्रवाइयां करने की अनुमति मिलती है. जैसे, रीयल-टाइम डेटा देखना या किसी बाहरी एपीआई को कॉल करना. टूल का इस्तेमाल करने से, इसकी क्षमताएं सिर्फ़ बातचीत करने से कहीं ज़्यादा बढ़ जाती हैं.

ADK में तीन कैटगरी के टूल उपलब्ध हैं:

  1. फ़ंक्शन टूल: ये ऐसे कस्टम टूल होते हैं जिन्हें आपने अपने ऐप्लिकेशन की खास ज़रूरतों को पूरा करने के लिए डेवलप किया है. जैसे, पहले से तय किए गए फ़ंक्शन और एजेंट.
  2. पहले से मौजूद टूल: फ़्रेमवर्क में, सामान्य कार्रवाइयों के लिए इस्तेमाल किए जा सकने वाले टूल उपलब्ध होते हैं. जैसे, Google Search और कोड एक्ज़ीक्यूट करना.
  3. तीसरे पक्ष के टूल: Serper जैसी लोकप्रिय बाहरी लाइब्रेरी और LangChain और CrewAI के टूल.

ADK एजेंट के साथ टूल इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, आधिकारिक दस्तावेज़ देखें. इस कोडलैब में, हम अपने सामान्य एजेंट में ऐसे टूल जोड़ेंगे जिनसे वह एक बेहतरीन निजी यात्रा सहायक बन जाएगा. आइए, शुरू करें!

3. शुरू करना: आपका बेस एजेंट

किसी एजेंट को टूल इस्तेमाल करने की अनुमति देने से पहले, आपके पास एक बेसिक एजेंट होना चाहिए. अपनी प्रोग्रेस के हिसाब से सबसे सही पाथ चुनें.

पाथ A: फ़ाउंडेशन कोडलैब से आगे बढ़ना

अगर आपने " ADK की मदद से एआई एजेंट बनाना: बुनियादी बातें" कोडलैब अभी-अभी पूरा किया है, तो आप तैयार हैं. अपनी मौजूदा ai-agents-adk प्रोजेक्ट डायरेक्ट्री में काम जारी रखा जा सकता है.

पाथ B: नए सिरे से शुरू करना

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

  1. Google Cloud की सेवाओं को कॉन्फ़िगर करना
  2. Python का वर्चुअल एनवायरमेंट बनाना
  3. एजेंट बनाना
  4. डेवलपमेंट यूज़र इंटरफ़ेस (यूआई) पर एजेंट को चलाना

इन चरणों को पूरा करने के बाद, लर्निंग की आपकी यात्रा शुरू हो जाएगी.

4. मुद्रा बदलने के लिए कस्टम टूल बनाना

इस चरण में, आपको ADK का इस्तेमाल करके एक सामान्य एआई एजेंट बनाने और उसे डेवलपमेंट यूज़र इंटरफ़ेस (यूआई) पर चलाने का तरीका पता होना चाहिए.

मान लें कि आपको अगले महीने जापान की यात्रा करनी है और आपको मुद्रा के मौजूदा एक्सचेंज रेट की जानकारी चाहिए. एजेंट से पूछें "सिंगापुर डॉलर को जापानी येन में बदलने का रेट क्या है?"

a8f38e3c404ada9c.png

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

इस समस्या को हल करने के लिए, हम एक Python फ़ंक्शन लागू करेंगे. इससे REST API के ज़रिए विनिमय दरें वापस मिलेंगी. साथ ही, इसे एजेंट के लिए फ़ंक्शन टूल के तौर पर इंटिग्रेट किया जाएगा.

टर्मिनल विंडो में, कीबोर्ड शॉर्टकट Ctrl + C का इस्तेमाल करके, एजेंट की प्रोसेस को बंद करें.

custom_functions.py फ़ाइल बनाएं

टर्मिनल में यह कमांड टाइप करके, personal_assistant फ़ोल्डर में custom_functions.py नाम की Python फ़ाइल बनाएं.

touch personal_assistant/custom_functions.py

आपके फ़ोल्डर का स्ट्रक्चर ऐसा दिखना चाहिए:

ai-agents-adk/
└── personal_assistant/
    ├── .env
    ├── __init__.py
    ├── agent.py
    └── custom_functions.py

कोड एडिटर में मौजूद custom_functions.py खोलें. इस फ़ाइल में, Python फ़ंक्शन होगा. यह फ़ंक्शन, बाहरी एपीआई से मुद्रा के एक्सचेंज रेट का डेटा पाने के लिए ज़िम्मेदार होगा.

यहां दिए गए कोड को कॉपी करके, इसमें चिपकाएं:

import requests

# define a function to get exchange rate
def get_fx_rate(base: str, target: str):
        """
        Fetches the current exchange rate between two currencies.

        Args:
                base: The base currency (e.g., "SGD").
                target: The target currency (e.g., "JPY").

        Returns:
                The exchange rate information as a json response,
                or None if the rate could not be fetched.
        """
        base_url = "https://hexarate.paikama.co/api/rates/latest"
        api_url = f"{base_url}/{base}?target={target}"

        response = requests.get(api_url)
        if response.status_code == 200:
                return response.json()

अब agent.py फ़ाइल में बदलाव करें: get_fx_rate फ़ंक्शन को इंपोर्ट करें और इसे FunctionTool के तौर पर असाइन करें.

agent.py फ़ाइल अपडेट करें

इस कोड ब्लॉक को कॉपी करें और agent.py फ़ाइल के मौजूदा कॉन्टेंट की जगह इसे चिपकाएं:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool

from .custom_functions import get_fx_rate

root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction='Answer user questions to the best of your knowledge',
    tools=[FunctionTool(get_fx_rate)]
)

बदलाव करने के बाद, एजेंट को फिर से शुरू करने के लिए यह टाइप करें:

adk web

जब एजेंट उपलब्ध हो जाए, तो उससे वही सवाल दोबारा पूछें, "सिंगापुर डॉलर से जापानी येन का एक्सचेंज रेट क्या है?"

इस बार, आपको get_fx_rate टूल की दी गई मुद्रा बदलने की सही दर दिखेगी.

4f671fe04f8421f5.png

करंसी एक्सचेंज से जुड़ा कोई भी सवाल पूछें.

5. पहले से मौजूद Google Search टूल के साथ इंटिग्रेट करना

अब एजेंट, मुद्रा बदलने की दरें बता सकता है. इसलिए, अगला टास्क अगले महीने के मौसम का पूर्वानुमान पाना है. एजेंट से यह सवाल पूछें, "जापान के टोक्यो शहर में अगले महीने मौसम कैसा रहेगा?"

96c175077957fdd0.png

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

अच्छी बात यह है कि एजेंट डेवलपमेंट किट (एडीके) में, पहले से मौजूद टूल का एक सुइट उपलब्ध है. इसमें Google Search भी शामिल है. ये टूल इस्तेमाल के लिए तैयार हैं. इससे, हमारा एजेंट बाहरी दुनिया से आसानी से इंटरैक्ट कर पाता है.

एजेंट को Google Search टूल से लैस करने के लिए, आपको मल्टी-एजेंट पैटर्न लागू करना होगा. सबसे पहले, आपको एक खास एजेंट बनाना होगा. इसका काम सिर्फ़ Google पर खोज करना होगा. इसके बाद, इस नए Google Search एजेंट को टूल के तौर पर हमारे मुख्य personal_assistant को असाइन करें. इसका तरीका यहां बताया गया है:

custom_agents.py फ़ाइल बनाएं

अब टर्मिनल में यह कमांड चलाकर, personal_assistant फ़ोल्डर में custom_agents.py नाम की Python फ़ाइल बनाएं:

touch personal_assistant/custom_agents.py

अब आपके फ़ोल्डर का स्ट्रक्चर ऐसा दिखना चाहिए:

ai-agents-adk/
└── personal_assistant/
    ├── .env
    ├── __init__.py
    ├── agent.py
    ├── custom_functions.py
    └── custom_agents.py

इस फ़ाइल में, खास google_search_agent का कोड होगा. कोड एडिटर का इस्तेमाल करके, इस कोड को custom_agents.py फ़ाइल में कॉपी करें.

from google.adk.agents import Agent
from google.adk.tools import google_search


# Create an agent with google search tool as a search specialist
google_search_agent = Agent(
    model='gemini-2.5-flash',
    name='google_search_agent',
    description='A search agent that uses google search to get latest information about current events, weather, or business hours.',
    instruction='Use google search to answer user questions about real-time, logistical information.',
    tools=[google_search],
)

फ़ाइल बन जाने के बाद, यहां दिए गए तरीके से agent.py फ़ाइल को अपडेट करें.

agent.py फ़ाइल अपडेट करें

इस कोड ब्लॉक को कॉपी करें और agent.py फ़ाइल के मौजूदा कॉन्टेंट की जगह इसे चिपकाएं:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools.agent_tool import AgentTool

from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent


root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    tools=[
        FunctionTool(get_fx_rate), 
        AgentTool(agent=google_search_agent),
    ]
)

आइए, कोड में मौजूद नए पैटर्न के बारे में जानते हैं:

  • नया स्पेशलिस्ट एजेंट: हमने एक नया एजेंट, google_search_agent बनाया है. इसके बारे में खास जानकारी और यह ध्यान रखें कि इसका सिर्फ़ एक टूल google_search है. यह खोज से जुड़ा विशेषज्ञ है.
  • agent_tool.AgentTool: यह ADK का एक खास रैपर है. यह पूरे एजेंट (google_search_agent) को लेता है और इसे एक स्टैंडर्ड टूल की तरह दिखाता है और काम करता है.
  • ज़्यादा स्मार्ट **root_agent**: हमारे root_agent में अब एक नया टूल है: AgentTool(agent=google_search_agent). इसे वेब पर खोजने का तरीका नहीं पता है. हालांकि, इसे यह पता है कि इसके पास एक ऐसा टूल है जिसे खोज से जुड़े टास्क सौंपे जा सकते हैं.

ध्यान दें कि root_agent से निर्देश वाला फ़ील्ड हटा दिया गया है. इसके निर्देशों को अब उन टूल के हिसाब से तय किया जाता है जो इसके लिए उपलब्ध हैं.

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

अब, टाइप करें

adk web

टर्मिनल में जाकर इंस्टेंस शुरू करें. इसके बाद, एजेंट से यह सवाल फिर से पूछें: "जापान के टोक्यो शहर में अगले महीने का मौसम कैसा रहेगा?"

9771716f64132c54.png

एजेंट अब नई जानकारी पाने के लिए, google_search_agent का इस्तेमाल कर रहा है

आप मौजूदा एक्सचेंज के बारे में भी सवाल पूछ सकते हैं. अब एजेंट को, सवाल के हिसाब से सही टूल का इस्तेमाल करना चाहिए.

2a8e6525a9f5a4ee.png

बेझिझक होकर अन्य सवाल पूछें, जिनके लिए एजेंट को रीयल-टाइम में जानकारी की ज़रूरत होती है. साथ ही, देखें कि यह उपलब्ध टूल का इस्तेमाल करके क्वेरी को कैसे हैंडल करता है.

6. LangChain के Wikipedia टूल का इस्तेमाल करना

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

google_search_agent को संस्कृति और इतिहास से जुड़े तथ्यों के बारे में जानकारी मिल सकती है. हालांकि, Wikipedia जैसे किसी खास सोर्स से मिली जानकारी ज़्यादा व्यवस्थित और भरोसेमंद होती है.

अच्छी बात यह है कि ADK को इस तरह से डिज़ाइन किया गया है कि इसे आसानी से बढ़ाया जा सकता है. इससे आपको CrewAI और LangChain जैसे अन्य एआई एजेंट फ़्रेमवर्क के टूल को आसानी से इंटिग्रेट करने में मदद मिलती है. यह इंटरऑपरेबिलिटी बहुत ज़रूरी है, क्योंकि इससे डेवलपमेंट में कम समय लगता है. साथ ही, मौजूदा टूल का दोबारा इस्तेमाल किया जा सकता है. इस उदाहरण के लिए, हम LangChain के Wikipedia टूल का इस्तेमाल करेंगे.

सबसे पहले, चालू एजेंट प्रोसेस (Ctrl + C) को रोकें. इसके बाद, मौजूदा Python वर्चुअल एनवायरमेंट में अतिरिक्त लाइब्रेरी इंस्टॉल करें. इसके लिए, टर्मिनल में ये कमांड टाइप करें.

uv pip install langchain-community wikipedia

third_party_tools.py फ़ाइल बनाएं

अब, टर्मिनल में यह कमांड चलाकर personal_assistant फ़ोल्डर में third_party_tools.py नाम की Python फ़ाइल बनाएं:

touch personal_assistant/third_party_tools.py

अब आपके फ़ोल्डर का स्ट्रक्चर ऐसा दिखना चाहिए:

ai-agents-adk/
└── personal_assistant/
    ├── .env
    ├── __init__.py
    ├── agent.py
    ├── custom_functions.py
    ├── custom_agents.py
    └── third_party_tools.py

इस फ़ाइल में, LangChain Wikipedia टूल को लागू करने के बारे में जानकारी होगी. नीचे दिए गए कोड को, क्लाउड एडिटर का इस्तेमाल करके third_party_tools.py में कॉपी करें:

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

# Configure the Wikipedia LangChain tool to act as our cultural guide
langchain_wikipedia_tool = WikipediaQueryRun(
    api_wrapper=WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=3000)
)

# Give the tool a more specific description for our agent
langchain_wikipedia_tool.description = (
    "Provides deep historical and cultural information on landmarks, concepts, and places."
    "Use this for 'tell me about' or 'what is the history of' type questions."
)

agent.py फ़ाइल अपडेट करें

अब नीचे दिए गए कॉन्टेंट के साथ agent.py फ़ाइल को अपडेट करें:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools.agent_tool import AgentTool
from google.adk.tools.langchain_tool import LangchainTool

from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent
from .third_party_tools import langchain_wikipedia_tool


root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    tools=[
        FunctionTool(get_fx_rate), 
        AgentTool(agent=google_search_agent),
        LangchainTool(langchain_wikipedia_tool),
    ]
)

अब, टाइप करें

adk web

टर्मिनल में "क्योटो के इतिहास के बारे में बताओ" लिखकर, एजेंट से यह सवाल पूछें. इसके लिए, आपको टर्मिनल में इंस्टेंस शुरू करना होगा.

862ec3546a8fbb5f.png

एजेंट, इस क्वेरी को पुरानी क्वेरी के तौर पर सही तरीके से पहचानता है और इसके लिए, Wikipedia टूल का इस्तेमाल करता है. तीसरे पक्ष के टूल को इंटिग्रेट करके और उसे कोई खास भूमिका देकर, आपने अपने एजेंट को ज़्यादा स्मार्ट और यात्रा की योजना बनाने के लिए ज़्यादा मददगार बना दिया है.

एजेंट ने यह विकल्प कैसे चुना, यह देखने के लिए adk web यूज़र इंटरफ़ेस (यूआई) में इवेंट इंस्पेक्टर का इस्तेमाल किया जा सकता है. इवेंट टैब पर क्लिक करें. इसके बाद, सबसे हाल के functionCall इवेंट पर क्लिक करें.

e3f388b64d08e666.png

इंस्पेक्टर, उपलब्ध सभी टूल की सूची दिखाता है. साथ ही, उस टूल के tool_code को हाइलाइट करता है जिसे एजेंट ने लागू किया था.

135c9a1068d6c58f.png

7. डेटा साफ़ करना (ज़रूरी नहीं)

इस कोडलैब में, लंबे समय तक चलने वाले किसी भी प्रॉडक्ट का इस्तेमाल नहीं किया गया है. इसलिए, अपने चालू एजेंट सेशन (जैसे, आपके टर्मिनल में adk web इंस्टेंस) को रोकने के लिए, टर्मिनल में Ctrl + C दबाना काफ़ी है.

एजेंट प्रोजेक्ट के फ़ोल्डर और फ़ाइलें मिटाना

अगर आपको सिर्फ़ अपने Cloud Shell एनवायरमेंट से कोड हटाना है, तो इन कमांड का इस्तेमाल करें:

cd ~
rm -rf ai-agents-adk

Vertex AI API बंद करना

पहले से चालू किए गए Vertex AI API को बंद करने के लिए, यह कमांड चलाएं:

gcloud services disable aiplatform.googleapis.com

पूरे Google Cloud प्रोजेक्ट को बंद करना

अगर आपको अपना Google Cloud प्रोजेक्ट पूरी तरह से बंद करना है, तो निर्देशों के लिए आधिकारिक गाइड देखें.

8. नतीजा

बधाई हो! आपने पर्सनल असिस्टेंट एजेंट को कस्टम फ़ंक्शन और रीयल-टाइम में Google Search ऐक्सेस करने की सुविधा दे दी है. Google ADK के साथ टूल इस्तेमाल करने के बारे में यह आधिकारिक दस्तावेज़ पढ़ें.

सबसे अहम बात यह है कि आपने एआई एजेंट बनाने के लिए, बुनियादी आर्किटेक्चरल पैटर्न के बारे में जाना. इसमें, टूल के तौर पर खास एजेंट का इस्तेमाल करना शामिल है. आपने एक खास google_search_agent बनाकर उसे अपने root_agent को दिया है. इससे आपने एक एजेंट बनाने से लेकर, एक आसान लेकिन असरदार मल्टी-एजेंट सिस्टम बनाने की दिशा में पहला कदम बढ़ा लिया है.

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