A2A 實戰:用一個簡單案例體驗多 Agent 協作的魅力

雖然 A2A(Agent-to-Agent)協議自發布以來,熱度似乎不及 MCP 等其他新興技術,但作爲未來可能在 AI 代理交互中扮演關鍵角色的協議,它依然值得我們深入瞭解。

今天,我們就通過一個簡單的 UI 界面,來親身體驗一下 A2A 協議下的多 Agent 協作流程。即使你對這個領域還比較陌生,也能輕鬆上手!

🧠 什麼是 A2A?簡要說明工作流程

我們的演示系統由以下幾個核心部分組成:

🛠️ 第一步:構建一個 A2A Server

我們先實現一個簡單的天氣查詢服務,模擬一個具備 “天氣預告” 和“空氣質量報告”能力的 Agent。

async def execute(
        self,
        context: RequestContext,
        event_queue: EventQueue,
    ) -> None:
        text="""未來 3 天的天氣如下:1. 明天(2025年6月1日):晴天;2. 後天(2025年6月2日):小雨;3. 大後天(2025年6月3日):大雨。"""
        event_queue.enqueue_event(
            completed_task(
                context.task_id,
                context.context_id,
                [new_artifact(parts=[Part(root=TextPart(text=text))], )],
                [context.message],
            )
        )
    async def cancel(
        self, request: RequestContext, event_queue: EventQueue
    ) -> Task | None:
        raise ServerError(error=UnsupportedOperationError())

啓動 Server 代碼示例:

def main(host: str, port: int):
    capabilities = AgentCapabilities(streaming=False)
    forecast_skill = AgentSkill(
        id='天氣預告',
        name='天氣預告',
        description='給出某地的天氣預告',
        tags=['天氣''預告'],
        examples=['給我紐約未來 7 天的天氣預告'],
    )
    air_quality_skill = AgentSkill(
        id='空氣質量報告',
        name='空氣質量報告',
        description='給出某地當前時間的空氣質量報告,不做預告',
        tags=['空氣''質量'],
        examples=['給我紐約當前的空氣質量報告'],
    )
    agent_card = AgentCard(
        name='天氣 Agent',
        description='提供天氣相關的查詢功能',
        url=f'http://{host}:{port}',
        version='1.0.0',
        defaultInputModes=['text'],
        defaultOutputModes=['text'],
        capabilities=capabilities,
        skills=[forecast_skill, air_quality_skill],
    )
    request_handler = DefaultRequestHandler(
        agent_executor=WeatherAgentExecutor(),
        task_store=InMemoryTaskStore(),
    )
    server = A2AStarletteApplication(
        agent_card=agent_card, http_handler=request_handler
    )
    import uvicorn
    uvicorn.run(server.build(), host=host, port=port)
if __name__ == '__main__':
    main("127.0.0.1", 10000)

🚀 第二步:部署 A2A Client

我們可以直接使用 Google 提供的官方示例項目來搭建 Client 端:

GitHub 地址:https://github.com/google-a2a/a2a-samples

進入 UI 示例目錄:

cd demo/ui

創建 .env 文件並配置 API_KEY,如果對 API_KEY 獲取有問題,可以參考下方的谷歌 API_KEY 申請。

echo "GOOGLE_API_KEY=your_api_key_here" >> .env

啓動 Client:

uv run main.py

訪問本地 UI 頁面:

添加我們剛纔創建的天氣 Agent,即可看到多 Agent 協作的效果:

到此,一個多 Agent 的協作就結束了,當然,小編實現的只有一個 Agent,有興趣的小夥伴可以再自己添加 Agent。

谷歌 API_KEY 申請:

進入到申請頁面,點擊 GET API KEY:https://aistudio.google.com/prompts/new_chat

然後申請一個 key

申請好之後,點擊複製,然後就能得到 API_KEY 了。

💡 小結 & 建議

雖然目前 A2A 協議在國內資料較少,且依賴 Google 平臺的部分功能(如 API_KEY),但其在 AI Agent 生態中的潛力不容忽視。

如果你對多 Agent 架構、分佈式 AI 系統感興趣,不妨現在就開始瞭解 A2A,提前佈局未來的技術趨勢。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/084YYYYvYAtHyMJBFd7RcA