實踐官方的 A2A SDK Python

內容列表

  • ??注意
  • ??我的環境
  • ??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. 1.?基礎消息處理:能夠接收和響應簡單的文本消息
  2. 2.?流式響應:支持分塊返回消息內容
  3. 3.?任務管理:支持任務狀態查詢和取消操作
  4. 4.?錯誤處理:包含基本的錯誤處理機制

A2AProtocol.ai

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80385.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

langchain 接入國內搜索api——百度AI搜索

為什么使用百度AI搜索 學習langchain的過程中,遇到使用search api的時候,發現langchain官方文檔中支持的搜索工具大多是國外的,例如google search或bing search,收費不說,很多還連接不上(工具 | LangChain…

[強化學習的數學原理—趙世鈺老師]學習筆記01-基本概念

[強化學習的數學原理—趙世鈺老師]學習筆記01-基本概念 1.1 網格世界的例子1.2 狀態和動作1.3 狀態轉移1.4 策略1.5 獎勵1.6 軌跡、回報、回合1.6.1 軌跡和回報1.6.2 回合 1.7 馬爾可夫決策過程 本人為強化學習小白,為了在后續科研的過程中能夠較好的結合強化學習來…

Java開發經驗——阿里巴巴編碼規范經驗總結2

摘要 這篇文章是關于Java開發中阿里巴巴編碼規范的經驗總結。它強調了避免使用Apache BeanUtils進行屬性復制,因為它效率低下且類型轉換不安全。推薦使用Spring BeanUtils、Hutool BeanUtil、MapStruct或手動賦值等替代方案。文章還指出不應在視圖模板中加入復雜邏…

Java大師成長計劃之第18天:Java Memory Model與Volatile關鍵字

📢 友情提示: 本文由銀河易創AI(https://ai.eaigx.com)平臺gpt-4o-mini模型輔助創作完成,旨在提供靈感參考與技術分享,文中關鍵數據、代碼與結論建議通過官方渠道驗證。 在Java多線程編程中,線程…

js前端分片傳輸大文件+mongoose后端解析

最近一直在完善mongoose做webserver的項目,其中程序升級要通過前端傳輸升級包到服務器。 因為第一次寫前端代碼,分片傳輸的邏輯,網上一堆,大同小異,而且版本啊,API不一致的問題,導致頭疼的很。后…

MiniMind:3塊錢成本 + 2小時!訓練自己的0.02B的大模型。minimind源碼解讀、MOE架構

大家好,我是此林。 目錄 1. 前言 2. minimind模型源碼解讀 1. MiniMind Config部分 1.1. 基礎參數 1.2. MOE配置 2. MiniMind Model 部分 2.1. MiniMindForCausalLM: 用于語言建模任務 2.2. 主干模型 MiniMindModel 2.3. MiniMindBlock: 模型的基本構建塊…

引言:Client Hello 為何是 HTTPS 安全的核心?

當用戶在瀏覽器中輸入 https:// 時,看似簡單的操作背后,隱藏著一場加密通信的“暗戰”。Client Hello 作為 TLS 握手的首個消息,不僅決定了后續通信的加密強度,還可能成為攻擊者的突破口。據統計,超過 35% 的網站因 TL…

Dockerfile 完全指南:從入門到最佳實踐

Dockerfile 完全指南:從入門到最佳實踐 1. Dockerfile 簡介與作用 Dockerfile 是一個文本文件,包含了一系列用于構建 Docker 鏡像的指令。它允許開發者通過簡單的指令定義鏡像的構建過程,實現自動化、可重復的鏡像構建。 主要作用&#xf…

Python httpx庫終極指南

一、發展歷程與技術定位 1.1 歷史演進 起源:httpx 由 Encode 團隊開發,于 2019 年首次發布,目標是提供一個現代化的 HTTP 客戶端,支持同步和異步操作,并兼容 HTTP/1.1 和 HTTP/2。背景: requests 庫雖然功…

app加固

1、什么是加固? 我們之前講的逆向,大多數都是用加密算法去加密一些明文字符串,然后把得到的結果用 Base64、Hex等進行編碼后提交。加固其實也一樣,只不過他通常加密的是 dex文件而已。但是 dex 文件加密以后,安卓系統是沒法直接運行的。所以加固的核心&…

Win全兼容!五五 Excel Word 轉 PDF 工具解決多場景轉換難題

各位辦公小能手們!今天給你們介紹一款超牛的工具——五五Excel Word批量轉PDF工具V5.5版。這玩意兒專注搞批量格式轉換,能把Excel(.xls/.xlsx)和Word(.doc/.docx)文檔唰唰地變成PDF格式。 先說說它的核心功…

springCloud/Alibaba常用中間件之Nacos服務注冊與發現

文章目錄 SpringCloud Alibaba:依賴版本補充六、Nacos:服務注冊與發現1、下載安裝Nacos2、服務注冊1. 導入依賴(這里以服務提供者為例)2. 修改配置文件和主啟動類3. 創建業務類4. 測試 3.服務映射1. 導入依賴2. 修改配置文件和主啟動類3. 創建業務類和RestTemplate配置類用來提…

uniapp中score-view中的文字無法換行問題。

項目場景: 今天遇到一個很惡心的問題,uniapp中的文字突然無法換行了。得..就介樣 原因分析: 提示:經過一fan研究后發現 scroll-view為了能夠橫向滾動設置了white-space: nowrap; 強制不換行 解決起來最先想到的是,父…

【STM32 學習筆記】I2C通信協議

注:通信協議的設計背景 3:00~10:13 I2C 通訊協議(Inter-Integrated Circuit)是由Phiilps公司開發的,由于它引腳少,硬件實現簡單,可擴展性強, 不需要USART、CAN等通訊協議的外部收發設備,現在被廣…

【網絡原理】數據鏈路層

目錄 一. 以太網 二. 以太網數據幀 三. MAC地址 四. MTU 五. ARP協議 六. DNS 一. 以太網 以太網是一種基于有線或無線介質的計算機網絡技術,定義了物理層和數據鏈路層的協議,用于在局域網中傳輸數據幀。 二. 以太網數據幀 1)目標地址 …

控制臺打印帶格式內容

1. 場景 很多軟件會在控制臺打印帶顏色和格式的文字,需要使用轉義符實現這個功能。 2. 詳細說明 2.1.轉義符說明 樣式開始:\033[參數1;參數2;參數3m 可以多個參數疊加,若同一類型的參數(如字體顏色)設置了多個&…

[6-2] 定時器定時中斷定時器外部時鐘 江協科技學習筆記(41個知識點)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41

數據庫的脫敏策略

數據庫的脫敏策略:就是屏蔽敏感的數據 脫敏策略三要求: (1)表對象 (2)生效條件(脫敏列、脫敏函數) (3)二元組 常見的脫敏策略規則: 替換、重排、…

Python序列化的學習筆記

1. Npy&Numpy O4-mini-Cursor:如果.npy文件里包含了「Python對象」而非純數值數組時,就必須在加載時加上allow_pickleTrue。

[思維模式-27]:《本質思考力》-7- 逆向思考的原理與應用

目錄 一、什么是逆向思考 1.1、逆向思考的六大核心思維模式 1.2、逆向思考的四大實踐方法 1. 假設倒置法 2. 缺陷重構法 3. 用戶反推法 4. 規則解構法 1.3、逆向思考的經典案例庫 1. 商業創新:從“賣產品”到“賣服務” 2. 用戶體驗:從“功能滿…