內容列表
- ??注意
- ??我的環境
- ??A2A SDK Python
注意
這只是一個原型,并且在快速的變化,本篇教程也隨時可能過期,可以在A2AProtocol blog最終更新的文章。
我的環境
- ? Python 3.13
- ? uv: uv 0.7.2 (Homebrew 2025-04-30)
- ? Warp
- ? Ollama 0.6.7 (支持Qwen3)
- ? macOs Sequoia 15.4.1
A2A SDK Python
克隆最新的代碼:
git?clone?git@github.com:google/A2A.git
創建虛擬環境
``bash
cd A2A/a2a-python-sdk
創建虛擬環境
uv venv
激活
source .venv/bin/activate
###?安裝?A2A?SDK
```bash
uv?pip?install?-e?.
運行 A2A Server
cd?a2a-python-sdk/examples/helloworlduv?run?python?__main__.py
輸出如下:
??Preparing?packages...?(16/18)
black??????------------------------------?481.31?KiB/1.39?MiB
ruff???????------------------------------?454.19?KiB/9.87?MiB?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Uninstalled?4?packages?in?20ms
Installed?25?packages?in?40ms
INFO:?????Started?server?process?[46538]
INFO:?????Waiting?for?application?startup.
INFO:?????Application?startup?complete.
INFO:?????Uvicorn?running?on?http://0.0.0.0:9999?(Press?CTRL+C?to?quit)
INFO:?????127.0.0.1:49177?-?"GET?/.well-known/agent.json?HTTP/1.1"?200?OK
INFO:?????127.0.0.1:49179?-?"POST?/?HTTP/1.1"?200?OK
INFO:?????127.0.0.1:49181?-?"POST?/?HTTP/1.1"?200?OK
運行 A2A client
在一個新的終端窗口,激活 venv,進入目錄?a2a-python-sdk/examples/helloworld,然后執行:
uv?run?python?test_client.py
輸入如下
{'id':?'d220c3d7335e40478e1745d28d54155f',?'jsonrpc':?'2.0',?'result':?{'messageId':?'ac094ba7-f56c-41e3-85cf-a813406c65d4',?'parts':?[{'text':?'Hello?World',?'type':?'text'}],?'role':?'agent'}}
Received?an?instance?of?Message,?getTask?and?cancelTask?are?not?applicable?for?invocation
{'id':?'403b8991269b42659d6349f34e8bf579',?'jsonrpc':?'2.0',?'result':?{'final':?False,?'messageId':?'0b56aa9d-25ca-4f2a-b397-7247c0081e94',?'parts':?[{'text':?'Hello?',?'type':?'text'}],?'role':?'agent'}}
{'id':?'403b8991269b42659d6349f34e8bf579',?'jsonrpc':?'2.0',?'result':?{'final':?True,?'messageId':?'16dce67d-e4e6-4943-bad9-933412ad94ed',?'parts':?[{'text':?'World',?'type':?'text'}],?'role':?'agent'}}
例子完成。
Hello World 說明
這是一個簡單的 A2A (Agent-to-Agent) SDK 示例,展示了如何創建一個基礎的 Agent 服務。該示例實現了一個簡單的 Hello World Agent,它能夠響應消息并返回 "Hello World"。
項目結構
helloworld/
├──?__main__.py??????????#?主程序入口,配置和啟動?Agent?服務
├──?agent_executor.py????#?Agent?執行器實現
└──?test_client.py???????#?測試客戶端示例
核心組件
1. Agent 服務配置 (__main__.py
)
- ? 定義了 Agent 的技能(Skill):一個簡單的 "hello_world" 技能
- ? 創建了 Agent 卡片(AgentCard),包含 Agent 的基本信息和能力
- ? 配置并啟動 A2A 服務器,監聽在?
localhost:9999
2. Agent 執行器 (agent_executor.py
)
- ??
HelloWorldAgent
?類:實現基本的消息處理邏輯- ??
invoke()
: 同步返回 "Hello World" - ??
stream()
: 流式返回 "Hello World"(分兩部分返回)
- ??
- ??
HelloWorldAgentExecutor
?類:處理各種消息請求- ? 支持普通消息發送
- ? 支持流式消息發送
- ? 處理取消任務和重新訂閱請求
3. 測試客戶端 (test_client.py
)
- ? 演示如何連接到 Agent 服務
- ? 展示如何發送消息
- ? 展示如何獲取任務狀態
- ? 展示如何取消任務
- ? 展示如何使用流式消息
工作流程
功能特點
- 1.?基礎消息處理:能夠接收和響應簡單的文本消息
- 2.?流式響應:支持分塊返回消息內容
- 3.?任務管理:支持任務狀態查詢和取消操作
- 4.?錯誤處理:包含基本的錯誤處理機制
A2AProtocol.ai