A2A 實戰:用一個簡單案例體驗多 Agent 協作的魅力
雖然 A2A(Agent-to-Agent)協議自發布以來,熱度似乎不及 MCP 等其他新興技術,但作爲未來可能在 AI 代理交互中扮演關鍵角色的協議,它依然值得我們深入瞭解。
今天,我們就通過一個簡單的 UI 界面,來親身體驗一下 A2A 協議下的多 Agent 協作流程。即使你對這個領域還比較陌生,也能輕鬆上手!
🧠 什麼是 A2A?簡要說明工作流程
我們的演示系統由以下幾個核心部分組成:
-
前端頁面
:使用 Google 的開源框架 Mesop 構建,負責用戶與 Host Agent 的交互。
-
Host Agent
:作爲主控代理,協調用戶請求並調用遠程 Agent。
-
Remote Agent
:運行於 Google ADK 環境中的 A2A Client,每個 Remote Agent 會從 A2A Server 獲取 Agent Card,然後執行對應任務。
🛠️ 第一步:構建一個 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