A2A Protocol

Implementing A2A Agents with ADK: Complete Development Guide

MILO
Share
Implementing A2A Agents with ADK: Complete Development Guide

विषय सूची

  1. ADK और A2A प्रोटोकॉल अवलोकन
  2. पर्यावरण सेटअप और निर्भरता स्थापना
  3. प्रोजेक्ट संरचना डिज़ाइन
  4. A2A सर्वर-साइड एजेंट विकास
  5. A2A क्लाइंट-साइड एजेंट विकास
  6. एजेंट कॉन्फ़िगरेशन और मेटाडेटा
  7. A2A सर्वर स्टार्टअप और परीक्षण
  8. वेब UI एकीकरण परीक्षण
  9. A2A संचार प्रवाह विस्तृत व्याख्या

ADK और A2A प्रोटोकॉल अवलोकन

ADK और A2A क्या हैं?

ADK (Agent Development Kit) Google द्वारा विकसित एक इंटेलिजेंट एजेंट विकास फ्रेमवर्क है, जबकि A2A (Agent2Agent Protocol) एक मानकीकृत अंतर-एजेंट संचार प्रोटोकॉल है। ADK फ्रेमवर्क में A2A एजेंट्स के लिए पूर्ण समर्थन अंतर्निहित है, जो RemoteA2aAgent जैसे मुख्य घटक प्रदान करता है, जो डेवलपर्स को निम्नलिखित करने में सक्षम बनाता है:

  • 🔗 निर्बाध कनेक्शन: वितरित एजेंट्स के बीच मानकीकृत संचार लागू करना
  • 🚀 तीव्र विकास: सरल APIs का उपयोग करके जटिल एजेंट सिस्टम को तेज़ी से बनाना
  • 🔄 प्रोटोकॉल मानकीकरण: अंतर-संचालनीयता सुनिश्चित करने के लिए A2A प्रोटोकॉल विनिर्देशों का पालन करना
  • 🎯 इंटेलिजेंट रूटिंग: संदेश रूटिंग और प्रारूप रूपांतरण को स्वचालित रूप से संभालना
  • 📊 अवलोकनीयता: अंतर्निहित लॉगिंग और निगरानी क्षमताएं

महत्वपूर्ण नोट: ADK एक विकास फ्रेमवर्क है, A2A एक संचार प्रोटोकॉल है। ADK में A2A प्रोटोकॉल का कार्यान्वयन शामिल है, जो डेवलपर्स को Agent2Agent संचार का समर्थन करने वाले इंटेलिजेंट एजेंट सिस्टम को आसानी से बनाने की अनुमति देता है। यह गाइड ADK फ्रेमवर्क के भीतर A2A कार्यक्षमता का उपयोग करने का तरीका दिखाएगा।

ADK में A2A कार्यक्षमता के मुख्य लाभ

  1. वितरित आर्किटेक्चर: विभिन्न सर्वर और वातावरण में एजेंट तैनाती का समर्थन करता है, A2A प्रोटोकॉल के माध्यम से संचार
  2. मानकीकृत प्रोटोकॉल: A2A संचार प्रोटोकॉल विनिर्देशों का पालन करता है, क्रॉस-प्लेटफॉर्म संगतता सुनिश्चित करता है
  3. तुरंत उपयोग के लिए तैयार: ADK अंतर्निहित A2A समर्थन के साथ पूर्ण CLI उपकरण और वेब UI प्रदान करता है
  4. उच्च विस्तारशीलता: कस्टम उपकरण और जटिल व्यावसायिक तर्क का समर्थन करता है, A2A पारिस्थितिकी तंत्र के साथ संगत
  5. उत्पादन तैयार: एंटरप्राइज़-ग्रेड सुरक्षा और विश्वसनीयता गारंटी

पर्यावरण सेटअप और निर्भरता स्थापना

सिस्टम आवश्यकताएं

  • Python: 3.10 या उच्चतर
  • ऑपरेटिंग सिस्टम: Linux, macOS, या Windows
  • API कुंजी: Gemini API कुंजी (LLM कार्यक्षमता के लिए)

चरण 1: प्रोजेक्ट निर्देशिका बनाना

# प्रोजेक्ट रूट निर्देशिका बनाएं
mkdir adk-a2a-demo
cd adk-a2a-demo

# वर्चुअल वातावरण बनाएं
python -m venv .venv

# वर्चुअल वातावरण सक्रिय करें
# Linux/macOS:
source .venv/bin/activate
# Windows:
# .venv\Scripts\activate

चरण 2: ADK निर्भरताएं स्थापित करना (A2A समर्थन सहित)

# ADK कोर पैकेज स्थापित करें (A2A प्रोटोकॉल समर्थन सहित)
pip install google-adk[a2a]>=1.6.1

# स्थापना सत्यापित करें
adk --version

चरण 3: पर्यावरण चर कॉन्फ़िगर करना

# .env फ़ाइल बनाएं
echo "GOOGLE_API_KEY=your_gemini_api_key_here" > .env

# पर्यावरण चर सेट करें (अस्थायी)
export GOOGLE_API_KEY="your_gemini_api_key_here"

प्रोजेक्ट संरचना डिज़ाइन

ADK आधारित अनुशंसित A2A प्रोजेक्ट संरचना

adk-a2a-demo/
├── .env                    # पर्यावरण चर कॉन्फ़िगरेशन
├── requirements.txt        # Python निर्भरताएं
├── __init__.py            # मुख्य प्रोजेक्ट प्रारंभीकरण
├── agent.py               # A2A क्लाइंट एजेंट (RemoteA2aAgent)
├── remote_a2a/            # A2A सर्वर-साइड एजेंट निर्देशिका
│   └── facts_agent/       # विशिष्ट एजेंट कार्यान्वयन
│       ├── __init__.py    # एजेंट पैकेज प्रारंभीकरण
│       ├── agent.py       # एजेंट कोर लॉजिक
│       └── agent.json     # A2A एजेंट मेटाडेटा कॉन्फ़िगरेशन
└── README.md              # प्रोजेक्ट दस्तावेज़ीकरण

बुनियादी प्रोजेक्ट संरचना बनाना

# आवश्यक निर्देशिकाएं और फ़ाइलें बनाएं
mkdir -p remote_a2a/facts_agent
touch __init__.py agent.py
touch remote_a2a/facts_agent/__init__.py
touch remote_a2a/facts_agent/agent.py
touch remote_a2a/facts_agent/agent.json
touch requirements.txt

A2A सर्वर-साइड एजेंट विकास

चरण 1: सर्वर-साइड एजेंट कार्यान्वयन बनाना

सर्वर-साइड एजेंट वह मुख्य घटक है जो वास्तव में व्यावसायिक तर्क निष्पादित करता है। remote_a2a/facts_agent/agent.py में कार्यान्वयन:

# remote_a2a/facts_agent/agent.py

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

# सर्वर-साइड एजेंट परिभाषित करें
root_agent = Agent(
    # एजेंट अद्वितीय पहचानकर्ता
    name="facts_agent",
    
    # उपयोग करने वाला बड़ा भाषा मॉडल
    model="gemini-2.0-flash",
    
    # एजेंट कार्यक्षमता विवरण
    description="दिलचस्प तथ्य प्रदान करने वाला एजेंट।",
    
    # एजेंट व्यवहार निर्देश
    instruction=(
        "आप एक सहायक एजेंट हैं जो दिलचस्प तथ्य प्रदान कर सकते हैं। "
        "सटीक और अद्यतन जानकारी खोजने के लिए Google खोज का उपयोग करें। "
        "हमेशा अपने तथ्यों के लिए स्रोत प्रदान करें।"
    ),
    
    # उपलब्ध उपकरण सूची
    tools=[google_search],
)

चरण 2: एजेंट पैकेज प्रारंभीकरण कॉन्फ़िगर करना

remote_a2a/facts_agent/__init__.py में:

# remote_a2a/facts_agent/__init__.py

# ADK द्वारा खोजे जाने के लिए एजेंट कार्यान्वयन आयात करें
from . import agent

चरण 3: सर्वर-साइड एजेंट मुख्य कार्यक्षमता विश्लेषण

# एजेंट के मुख्य घटकों की व्याख्या

# 1. नाम (name)
# - अद्वितीय होना चाहिए, A2A नेटवर्क में एजेंट की पहचान के लिए उपयोग किया जाता है
# - वर्णनात्मक नामों का उपयोग करने की सिफारिश

# 2. मॉडल (model)
# - उपयोग करने वाले बड़े भाषा मॉडल को निर्दिष्ट करता है
# - Gemini श्रृंखला मॉडल का समर्थन करता है

# 3. विवरण (description)
# - एजेंट कार्यक्षमता का संक्षिप्त विवरण
# - एजेंट खोज के दौरान अन्य एजेंट्स को प्रदर्शित किया जाता है

# 4. निर्देश (instruction)
# - विस्तृत व्यवहारिक मार्गदर्शन
# - एजेंट व्यक्तित्व और प्रतिक्रिया शैली को परिभाषित करता है

# 5. उपकरण (tools)
# - एजेंट द्वारा कॉल किए जा सकने वाले बाहरी उपकरण
# - जैसे खोज, गणना, API कॉल, आदि

A2A क्लाइंट-साइड एजेंट विकास

चरण 1: क्लाइंट-साइड एजेंट बनाना

क्लाइंट-साइड एजेंट रिमोट सेवाओं से कनेक्ट करने के लिए RemoteA2aAgent का उपयोग करता है। agent.py में कार्यान्वयन:

# agent.py

from google.adk.agents.remote_a2a_agent import RemoteA2aAgent

# रिमोट A2A क्लाइंट एजेंट परिभाषित करें
root_agent = RemoteA2aAgent(
    # क्लाइंट एजेंट नाम
    name="facts_agent",
    
    # कार्यक्षमता विवरण
    description="दिलचस्प तथ्य प्रदान करने वाला एजेंट।",
    
    # रिमोट एजेंट कार्ड URL
    agent_card="http://localhost:8001/a2a/facts_agent/.well-known/agent.json",
)

चरण 2: RemoteA2aAgent विस्तृत कॉन्फ़िगरेशन

# उन्नत कॉन्फ़िगरेशन उदाहरण
root_agent = RemoteA2aAgent(
    name="facts_agent",
    description="दिलचस्प तथ्य प्रदान करने वाला एजेंट।",
    agent_card="http://localhost:8001/a2a/facts_agent/.well-known/agent.json",
    
    # वैकल्पिक कॉन्फ़िगरेशन
    timeout=300.0,          # HTTP टाइमआउट (सेकंड)
    httpx_client=None,      # कस्टम HTTP क्लाइंट
)

चरण 3: क्लाइंट-साइड एजेंट कार्य सिद्धांत

  1. एजेंट खोज: agent_card URL के माध्यम से रिमोट एजेंट जानकारी प्राप्त करना
  2. कनेक्शन स्थापना: रिमोट A2A सर्वर के लिए HTTP कनेक्शन बनाना
  3. संदेश रूपांतरण: स्थानीय घटनाओं को A2A प्रोटोकॉल संदेशों में परिवर्तित करना
  4. रिमोट आह्वान: रिमोट एजेंट को अनुरोध भेजना
  5. प्रतिक्रिया प्रसंस्करण: रिमोट एजेंट प्रतिक्रियाओं को प्राप्त करना और परिवर्तित करना

एजेंट कॉन्फ़िगरेशन और मेटाडेटा

चरण 1: एजेंट कॉन्फ़िगरेशन फ़ाइल बनाना

remote_a2a/facts_agent/agent.json में एजेंट मेटाडेटा परिभाषित करें:

{
  "name": "facts_agent",
  "description": "दिलचस्प तथ्य प्रदान करने वाला एजेंट।",
  "url": "http://localhost:8001/a2a/facts_agent",
  "version": "1.0.0",
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "capabilities": {
    "streaming": true,
    "functions": true
  },
  "skills": [
    {
      "id": "give_facts",
      "name": "दिलचस्प तथ्य",
      "description": "Google खोज का उपयोग करके विभिन्न विषयों पर दिलचस्प तथ्य प्रदान करता है।",
      "tags": ["जानकारी", "तथ्य", "ज्ञान", "खोज", "गूगल"],
      "examples": [
        "न्यूयॉर्क शहर के बारे में एक दिलचस्प तथ्य बताएं।",
        "क्वांटम भौतिकी के बारे में कुछ आकर्षक बताएं।",
        "समुद्री जीवन के बारे में कोई असामान्य तथ्य क्या है?"
      ]
    }
  ]
}

चरण 2: कॉन्फ़िगरेशन फ़ील्ड स्पष्टीकरण

{
  // बुनियादी जानकारी
  "name": "एजेंट अद्वितीय पहचानकर्ता",
  "description": "एजेंट कार्यक्षमता का संक्षिप्त विवरण",
  "url": "A2A सेवा एंडपॉइंट URL",
  "version": "संस्करण संख्या (सिमेंटिक वर्जनिंग)",
  
  // इनपुट/आउटपुट मोड
  "defaultInputModes": ["समर्थित इनपुट प्रारूप"],
  "defaultOutputModes": ["समर्थित आउटपुट प्रारूप"],
  
  // एजेंट क्षमताएं
  "capabilities": {
    "streaming": "क्या स्ट्रीमिंग प्रतिक्रिया समर्थित है",
    "functions": "क्या फ़ंक्शन कॉल समर्थित हैं"
  },
  
  // कौशल परिभाषाएं
  "skills": [
    {
      "id": "कौशल अद्वितीय पहचानकर्ता",
      "name": "कौशल प्रदर्शन नाम",
      "description": "विस्तृत कौशल विवरण",
      "tags": ["टैग1", "टैग2"],
      "examples": ["उपयोग उदाहरण 1", "उपयोग उदाहरण 2"]
    }
  ]
}

चरण 3: निर्भरता फ़ाइलें बनाना

requirements.txt में:

google-adk[a2a]>=1.6.1

__init__.py में:

# प्रोजेक्ट प्रारंभीकरण फ़ाइल
from . import agent

A2A सर्वर स्टार्टअप और परीक्षण

चरण 1: A2A सर्वर शुरू करना

# सुनिश्चित करें कि आप प्रोजेक्ट रूट निर्देशिका में हैं और वर्चुअल वातावरण सक्रिय है
source .venv/bin/activate

# A2A सर्वर शुरू करें
adk api_server --a2a --port 8001 remote_a2a

# अपेक्षित आउटपुट:
# INFO:     Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)
# INFO:     A2A endpoints enabled for agents: facts_agent

चरण 2: A2A एंडपॉइंट्स सत्यापित करना

# एजेंट खोज एंडपॉइंट परीक्षण
curl http://localhost:8001/a2a/facts_agent/.well-known/agent.json

# एजेंट कॉन्फ़िगरेशन JSON वापस करने की अपेक्षा

चरण 3: A2A सर्वर आर्किटेक्चर विश्लेषण

A2A सर्वर शुरू होने के बाद, यह निम्नलिखित एंडपॉइंट्स बनाता है:

  1. एजेंट खोज एंडपॉइंट: /.well-known/agent.json

    • एजेंट मेटाडेटा और क्षमता जानकारी प्रदान करता है
    • स्वचालित एजेंट खोज और कॉन्फ़िगरेशन के लिए उपयोग किया जाता है
  2. संदेश प्रसंस्करण एंडपॉइंट: /a2a/{agent_name}

    • अन्य एजेंट्स से संदेश प्राप्त करता है
    • A2A प्रोटोकॉल अनुरोधों को प्रोसेस करता है
  3. स्वास्थ्य जांच एंडपॉइंट: /health

    • सर्वर स्थिति निगरानी
    • लोड बैलेंसर स्वास्थ्य जांच

वेब UI एकीकरण परीक्षण

चरण 1: ADK वेब सर्वर शुरू करना

नई टर्मिनल विंडो में:

# वर्चुअल वातावरण सक्रिय करें
source .venv/bin/activate

# वेब UI सर्वर शुरू करें
adk web .

# अपेक्षित आउटपुट:
# INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
# INFO:     Available agents: facts_agent

चरण 2: वेब UI परीक्षण प्रक्रिया

  1. वेब UI एक्सेस: ब्राउज़र में http://localhost:8000 खोलें

  2. एजेंट चयन: ड्रॉपडाउन मेनू से facts_agent चुनें

  3. बातचीत परीक्षण: परीक्षण संदेश इनपुट करें, उदाहरण के लिए:

    "कृत्रिम बुद्धिमत्ता के बारे में एक दिलचस्प तथ्य बताएं"
    
  4. प्रतिक्रिया अवलोकन: सत्यापित करें कि एजेंट सही तरीके से प्रतिक्रिया देता है और Google खोज उपकरण का उपयोग करता है

चरण 3: परीक्षण केस उदाहरण

# परीक्षण केस 1: बुनियादी तथ्य प्रश्न
इनपुट: चीन की दीवार के बारे में एक दिलचस्प तथ्य क्या है?
अपेक्षित: खोज स्रोतों सहित चीन की दीवार के बारे में दिलचस्प तथ्य वापस करना

# परीक्षण केस 2: वैज्ञानिक ज्ञान प्रश्न
इनपुट: ब्लैक होल के बारे में कुछ आकर्षक बताएं।
अपेक्षित: ब्लैक होल के बारे में वैज्ञानिक तथ्य वापस करना

# परीक्षण केस 3: समसामयिक घटना प्रश्न
इनपुट: अंतरिक्ष अन्वेषण में हाल की खोज क्या है?
अपेक्षित: नवीनतम अंतरिक्ष अन्वेषण खोजें वापस करना

A2A संचार प्रवाह विस्तृत व्याख्या

पूर्ण A2A संचार अनुक्रम आरेख

sequenceDiagram
    participant User as उपयोगकर्ता
    participant WebUI as ADK वेब UI<br/>(localhost:8000)
    participant Client as क्लाइंट एजेंट<br/>(RemoteA2aAgent)
    participant A2AServer as A2A सर्वर<br/>(localhost:8001)
    participant Agent as सर्वर एजेंट<br/>(facts_agent)
    participant LLM as Gemini LLM
    participant Search as Google खोज

    User->>WebUI: 1. प्रश्न संदेश इनपुट
    WebUI->>Client: 2. क्लाइंट एजेंट कॉल
    
    Note over Client: 3. एजेंट प्रारंभीकरण जांच
    Client->>A2AServer: 4. GET /.well-known/agent.json
    A2AServer-->>Client: 5. एजेंट कॉन्फ़िगरेशन वापस करना
    
    Note over Client: 6. A2A संदेश निर्माण
    Client->>A2AServer: 7. POST /a2a/facts_agent<br/>A2A संदेश भेजना
    
    A2AServer->>Agent: 8. आंतरिक घटना में परिवर्तन
    Agent->>LLM: 9. प्रॉम्प्ट भेजना
    LLM-->>Agent: 10. प्रतिक्रिया वापस करना (उपकरण कॉल सहित)
    
    Agent->>Search: 11. Google खोज निष्पादन
    Search-->>Agent: 12. खोज परिणाम वापस करना
    
    Agent->>LLM: 13. खोज परिणाम एकीकरण
    LLM-->>Agent: 14. अंतिम प्रतिक्रिया उत्पन्न करना
    
    Agent-->>A2AServer: 15. प्रसंस्करण परिणाम वापस करना
    A2AServer-->>Client: 16. A2A प्रतिक्रिया वापस करना
    
    Note over Client: 17. आंतरिक घटना में परिवर्तन
    Client-->>WebUI: 18. प्रतिक्रिया वापस करना
    WebUI-->>User: 19. अंतिम परिणाम प्रदर्शित करना

मुख्य संचार चरण विश्लेषण

1. एजेंट खोज चरण (चरण 4-5)

GET http://localhost:8001/a2a/facts_agent/.well-known/agent.json

प्रतिक्रिया:
{
  "name": "facts_agent",
  "url": "http://localhost:8001/a2a/facts_agent",
  "skills": [...]
}

2. संदेश भेजने का चरण (चरण 7)

POST http://localhost:8001/a2a/facts_agent
Content-Type: application/json

{
  "id": "uuid-123",
  "params": {
    "message": {
      "messageId": "msg-456",
      "parts": [{"text": "AI के बारे में एक तथ्य बताएं"}],
      "role": "user"
    }
  }
}

3. प्रतिक्रिया वापसी चरण (चरण 16)

HTTP/1.1 200 OK
Content-Type: application/json

{
  "result": {
    "messageId": "response-789",
    "parts": [{"text": "यहाँ एक दिलचस्प AI तथ्य है..."}],
    "role": "agent"
  }
}

सारांश

इस गाइड के माध्यम से, आपने सीखा है कि ADK फ्रेमवर्क का उपयोग करके A2A प्रोटोकॉल को लागू करके एक पूर्ण एजेंट-टू-एजेंट संचार सिस्टम कैसे बनाया जाए। मुख्य सीखने की बातें निम्नलिखित हैं:

🎯 मुख्य कौशल

  • ADK A2A पर्यावरण सेटअप: शुरुआत से विकास वातावरण कॉन्फ़िगर करना
  • A2A सर्वर-साइड एजेंट विकास: ADK का उपयोग करके वास्तविक कार्यक्षमता के साथ इंटेलिजेंट एजेंट्स बनाना
  • A2A क्लाइंट-साइड एजेंट विकास: RemoteA2aAgent के माध्यम से रिमोट एजेंट कनेक्शन लागू करना
  • A2A प्रोटोकॉल समझ: Agent2Agent संचार प्रोटोकॉल की गहरी महारत
  • ADK वेब UI परीक्षण: ADK-प्रदान किए गए वेब UI का उपयोग करके एंड-टू-एंड परीक्षण

🚀 तकनीकी लाभ

  • मानकीकरण: A2A प्रोटोकॉल आधारित मानकीकृत एजेंट संचार
  • वितरित: ADK क्रॉस-सर्वर A2A एजेंट तैनाती का समर्थन करता है
  • स्केलेबल: नई सुविधाएं जोड़ना और A2A पारिस्थितिकी तंत्र के साथ एकीकरण आसान
  • उत्पादन तैयार: एंटरप्राइज़-ग्रेड स्थिरता और सुरक्षा

🔮 अगले कदम

  • अधिक ADK उपकरण और A2A एकीकरण विकल्पों का अन्वेषण करें
  • मल्टी-A2A एजेंट सहयोग सिस्टम बनाएं
  • कस्टम A2A प्रोटोकॉल एक्सटेंशन लागू करें
  • ADK A2A समाधानों को उत्पादन वातावरण में तैनात करें

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


संदर्भ संसाधन

कीवर्ड: A2A ADK, Agent Development Kit, A2A प्रोटोकॉल, एजेंट विकास, इंटेलिजेंट एजेंट संचार, Google ADK, एजेंट प्रोटोकॉल, वितरित एजेंट सिस्टम, RemoteA2aAgent, Gemini API