A2A Protocol

BeeAI Framework आधारित A2A सेवा कार्यान्वयन दस्तावेज़

MILO
Share
BeeAI Framework A2A Service Implementation Guide

अवलोकन

यह दस्तावेज़ BeeAI Framework का उपयोग करके Agent2Agent (A2A) संचार को कैसे लागू करना है, इसका प्रदर्शन करता है, जिसमें सर्वर-साइड (Agent) और क्लाइंट-साइड (Host) दोनों के पूर्ण कार्यान्वयन शामिल हैं। यह उदाहरण वेब खोज और मौसम क्वेरी क्षमताओं के साथ एक बुद्धिमान चैट एजेंट का प्रदर्शन करता है।

आर्किटेक्चर अवलोकन

sequenceDiagram
    participant User as उपयोगकर्ता
    participant Client as BeeAI Chat Client
    participant Server as BeeAI Chat Agent
    participant LLM as Ollama (granite3.3:8b)
    participant Tools as टूल संग्रह
    
    User->>Client: चैट संदेश इनपुट
    Client->>Server: HTTP अनुरोध (A2A Protocol)
    Server->>LLM: उपयोगकर्ता अनुरोध प्रसंस्करण
    LLM->>Tools: टूल कॉल (खोज/मौसम आदि)
    Tools-->>LLM: टूल परिणाम वापसी
    LLM-->>Server: प्रतिक्रिया उत्पन्न करना
    Server-->>Client: A2A प्रतिक्रिया वापसी
    Client-->>User: चैट परिणाम प्रदर्शन

परियोजना संरचना

samples/python/
├── agents/beeai-chat/          # A2A सर्वर (Agent)
│   ├── __main__.py            # सर्वर मुख्य प्रोग्राम
│   ├── pyproject.toml         # निर्भरता कॉन्फ़िगरेशन
│   ├── Dockerfile             # कंटेनराइज़ेशन कॉन्फ़िगरेशन
│   └── README.md              # सर्वर दस्तावेज़ीकरण
└── hosts/beeai-chat/           # A2A क्लाइंट (Host)
    ├── __main__.py            # क्लाइंट मुख्य प्रोग्राम
    ├── console_reader.py      # कंसोल इंटरैक्शन इंटरफ़ेस
    ├── pyproject.toml         # निर्भरता कॉन्फ़िगरेशन
    ├── Dockerfile             # कंटेनराइज़ेशन कॉन्फ़िगरेशन
    └── README.md              # क्लाइंट दस्तावेज़ीकरण

पर्यावरण सेटअप

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

  • Python 3.11 या उच्चतर
  • uv पैकेज मैनेजर
  • Ollama स्थानीय LLM सेवा

uv इंस्टॉल करें

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# या pip का उपयोग करें
pip install uv

Ollama और मॉडल इंस्टॉल करें

# Ollama इंस्टॉल करें
curl -fsSL https://ollama.com/install.sh | sh

# आवश्यक मॉडल डाउनलोड करें
ollama pull granite3.3:8b

A2A सर्वर कार्यान्वयन (Agent)

मुख्य कार्यान्वयन विश्लेषण

सर्वर BeeAI Framework के RequirementAgent और A2AServer का उपयोग करके बुद्धिमान एजेंट सेवाएं प्रदान करता है:

def main() -> None:
    # LLM मॉडल कॉन्फ़िगर करें
    llm = ChatModel.from_name(os.environ.get("BEEAI_MODEL", "ollama:granite3.3:8b"))
    
    # टूल कॉन्फ़िगरेशन के साथ एजेंट बनाएं
    agent = RequirementAgent(
        llm=llm,
        tools=[ThinkTool(), DuckDuckGoSearchTool(), OpenMeteoTool(), WikipediaTool()],
        memory=UnconstrainedMemory(),
    )

    # A2A सर्वर शुरू करें
    A2AServer(
        config=A2AServerConfig(port=int(os.environ.get("A2A_PORT", 9999))), 
        memory_manager=LRUMemoryManager(maxsize=100)
    ).register(agent).serve()

मुख्य विशेषताएं

  • टूल एकीकरण: सोच, वेब खोज, मौसम क्वेरी, Wikipedia क्वेरी का समर्थन करता है
  • मेमोरी प्रबंधन: सत्र स्थिति प्रबंधित करने के लिए LRU कैश का उपयोग करता है
  • पर्यावरण कॉन्फ़िगरेशन: पर्यावरण चर के माध्यम से मॉडल और पोर्ट कॉन्फ़िगरेशन का समर्थन करता है

uv के साथ सर्वर चलाएं

git clone https://github.com/a2aproject/a2a-samples.git
# सर्वर डायरेक्टरी में प्रवेश करें
cd samples/python/agents/beeai-chat

# uv के साथ वर्चुअल वातावरण बनाएं और निर्भरताएं इंस्टॉल करें
uv venv
source .venv/bin/activate  # Linux/macOS
uv pip install -e .

# महत्वपूर्ण नोट
uv add "a2a-sdk[http-server]"

# सर्वर शुरू करें
uv run python __main__.py

पर्यावरण चर कॉन्फ़िगरेशन

export BEEAI_MODEL="ollama:granite3.3:8b"  # LLM मॉडल
export A2A_PORT="9999"                     # सर्वर पोर्ट
export OLLAMA_API_BASE="http://localhost:11434"  # Ollama API पता

A2A क्लाइंट कार्यान्वयन (Host)

मुख्य कार्यान्वयन विश्लेषण

क्लाइंट सर्वर के साथ संचार करने के लिए A2AAgent का उपयोग करता है, एक इंटरैक्टिव कंसोल इंटरफ़ेस प्रदान करता है:

async def main() -> None:
    reader = ConsoleReader()
    
    # A2A क्लाइंट बनाएं
    agent = A2AAgent(
        url=os.environ.get("BEEAI_AGENT_URL", "http://127.0.0.1:9999"), 
        memory=UnconstrainedMemory()
    )
    
    # उपयोगकर्ता इनपुट प्रसंस्करण लूप
    for prompt in reader:
        response = await agent.run(prompt).on(
            "update",
            lambda data, _: (reader.write("Agent 🤖 (debug) : ", data)),
        )
        reader.write("Agent 🤖 : ", response.result.text)

इंटरैक्टिव इंटरफ़ेस विशेषताएं

  • रियल-टाइम डिबगिंग: एजेंट प्रसंस्करण के दौरान डिबग जानकारी दिखाता है
  • सुंदर निकास: प्रोग्राम से बाहर निकलने के लिए 'q' इनपुट करें
  • त्रुटि हैंडलिंग: खाली इनपुट और नेटवर्क अपवादों को संभालता है

uv के साथ क्लाइंट चलाएं

# क्लाइंट डायरेक्टरी में प्रवेश करें
cd samples/python/hosts/beeai-chat

# uv के साथ वर्चुअल वातावरण बनाएं और निर्भरताएं इंस्टॉल करें
uv venv
source .venv/bin/activate  # Linux/macOS
uv pip install -e .

# क्लाइंट शुरू करें
uv run python __main__.py

पर्यावरण चर कॉन्फ़िगरेशन

export BEEAI_AGENT_URL="http://127.0.0.1:9999"  # सर्वर पता

पूर्ण निष्पादन प्रवाह

1. सर्वर शुरू करें

# टर्मिनल 1: A2A सर्वर शुरू करें
cd samples/python/agents/beeai-chat
uv venv && source .venv/bin/activate
uv pip install -e .
uv add "a2a-sdk[http-server]"
uv run python __main__.py
# आउटपुट
INFO:     Started server process [73108]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:9999 (Press CTRL+C to quit)

2. क्लाइंट शुरू करें

# टर्मिनल 2: A2A क्लाइंट शुरू करें
cd samples/python/hosts/beeai-chat
uv venv && source .venv/bin/activate
uv pip install -e .
uv run python __main__.py
# आउटपुट
Interactive session has started. To escape, input 'q' and submit.
User 👤 : what is the weather of new york today
Agent 🤖 (debug) :  value={'id': 'cb4059ebd3a44a2f8b428d83bbff8cac', 'jsonrpc': '2.0', 'result': {'contextId': 'b8a8d863-4c7d-48b7-9bdd-2848abccaae3', 'final': False, 'kind': 'status-update', 'status': {'state': 'submitted', 'timestamp': '2025-09-02T07:52:09.588387+00:00'}, 'taskId': '6e0fce64-51f0-4ad3-b0d5-c503b41bf63a'}}
Agent 🤖 (debug) :  value={'id': 'cb4059ebd3a44a2f8b428d83bbff8cac', 'jsonrpc': '2.0', 'result': {'contextId': 'b8a8d863-4c7d-48b7-9bdd-2848abccaae3', 'final': False, 'kind': 'status-update', 'status': {'state': 'working', 'timestamp': '2025-09-02T07:52:09.588564+00:00'}, 'taskId': '6e0fce64-51f0-4ad3-b0d5-c503b41bf63a'}}
Agent 🤖 (debug) :  value={'id': 'cb4059ebd3a44a2f8b428d83bbff8cac', 'jsonrpc': '2.0', 'result': {'contextId': 'b8a8d863-4c7d-48b7-9bdd-2848abccaae3', 'final': True, 'kind': 'status-update', 'status': {'message': {'contextId': 'b8a8d863-4c7d-48b7-9bdd-2848abccaae3', 'kind': 'message', 'messageId': '8dca470e-1665-41af-b0cf-6b47a1488f89', 'parts': [{'kind': 'text', 'text': 'The current weather in New York today is partly cloudy with a temperature of 16.2°C, 82% humidity, and a wind speed of 7 km/h.'}], 'role': 'agent', 'taskId': '6e0fce64-51f0-4ad3-b0d5-c503b41bf63a'}, 'state': 'completed', 'timestamp': '2025-09-02T07:52:39.928963+00:00'}, 'taskId': '6e0fce64-51f0-4ad3-b0d5-c503b41bf63a'}}
Agent 🤖 :  The current weather in New York today is partly cloudy with a temperature of 16.2°C, 82% humidity, and a wind speed of 7 km/h.
User 👤 : 

3. इंटरैक्शन उदाहरण

Interactive session has started. To escape, input 'q' and submit.
User 👤 : आज दिल्ली का मौसम कैसा है?
Agent 🤖 (debug) : दिल्ली की मौसम जानकारी प्राप्त की जा रही है...
Agent 🤖 : नवीनतम मौसम डेटा के अनुसार, दिल्ली आज बादल छाए हुए हैं, तापमान 15-22°C, आर्द्रता 65%, और हवा की गति 3m/s है।

User 👤 : कृत्रिम बुद्धिमत्ता में नवीनतम विकास खोजें
Agent 🤖 (debug) : AI संबंधित जानकारी खोजी जा रही है...
Agent 🤖 : खोज परिणामों के आधार पर, AI क्षेत्र में हाल के प्रमुख विकास में शामिल हैं...

User 👤 : q

तकनीकी बिंदु

निर्भरता प्रबंधन

दोनों परियोजनाएं निर्भरताओं को प्रबंधित करने के लिए pyproject.toml का उपयोग करती हैं:

सर्वर निर्भरताएं:

dependencies = [
    "beeai-framework[a2a,search] (>=0.1.36,<0.2.0)"
]

क्लाइंट निर्भरताएं:

dependencies = [
    "beeai-framework[a2a] (>=0.1.36,<0.2.0)",
    "pydantic (>=2.10,<3.0.0)",
]

मेमोरी प्रबंधन

  • सर्वर सत्र संख्या सीमित करने के लिए LRUMemoryManager का उपयोग करता है
  • क्लाइंट और सर्वर दोनों बातचीत इतिहास बनाए रखने के लिए UnconstrainedMemory का उपयोग करते हैं

टूल एकीकरण

सर्वर कई टूल एकीकृत करता है:

  • ThinkTool: आंतरिक सोच और तर्क
  • DuckDuckGoSearchTool: वेब खोज
  • OpenMeteoTool: मौसम क्वेरी
  • WikipediaTool: Wikipedia क्वेरी

विस्तार और अनुकूलन

नए टूल जोड़ना

from beeai_framework.tools.custom import CustomTool

agent = RequirementAgent(
    llm=llm,
    tools=[
        ThinkTool(), 
        DuckDuckGoSearchTool(), 
        OpenMeteoTool(), 
        WikipediaTool(),
        CustomTool()  # कस्टम टूल जोड़ें
    ],
    memory=UnconstrainedMemory(),
)

कस्टम क्लाइंट इंटरफ़ेस

आप GUI या वेब इंटरफ़ेस लागू करने के लिए ConsoleReader को बदल सकते हैं:

class WebInterface:
    async def get_user_input(self):
        # वेब इंटरफ़ेस इनपुट लागू करें
        pass
    
    async def display_response(self, response):
        # वेब इंटरफ़ेस आउटपुट लागू करें
        pass

सारांश

यह कार्यान्वयन दस्तावेज़ BeeAI Framework और uv पैकेज मैनेजर का उपयोग करके एक पूर्ण A2A संचार सिस्टम कैसे बनाना है, इसका प्रदर्शन करता है। सर्वर के बुद्धिमान एजेंट और क्लाइंट के इंटरैक्टिव इंटरफ़ेस के माध्यम से, हमने एक सुविधा-समृद्ध चैटबॉट सिस्टम लागू किया है। इस आर्किटेक्चर में अच्छी स्केलेबिलिटी है और आसानी से नए टूल और सुविधाएं जोड़ सकता है।

अधिक A2A Protocol उदाहरण