当前位置: 首页 > news >正文

实践官方的 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.xdnf.cn/news/393553.html

相关文章:

  • 理解c++中explicit关键字的作用
  • Ai学习之LLM
  • python-Pandas库详细教程
  • C++蓝桥杯真题(题目+解析+流程图)(特殊运算符+四叶玫瑰数+质因数的个数+最大的矩形纸片+数字游戏+活动人数)
  • ADC接口
  • 职场心得总结(1)-如何获得晋升
  • Java快速上手之实验七
  • 2025-05-11 Unity 网络基础11——UnityWebRequest 使用
  • 【数据结构】前言
  • JVM内存结构有哪些?HashMap和HashTable的区别?
  • 编程技能:字符串函数02,strcpy
  • 解决SSH连接华为云服务器ESC经常性断连问题
  • 数据结构实验9.1:静态查找表的基本操作
  • C++:template(函数模板)
  • GitLab搭建与使用(SSH和Docker)两种方式
  • [学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
  • HTTP 错误状态码以及常用解决方案
  • C++进阶--使用红黑树封装map和set
  • 原型链与继承机制:继承背后的秘密
  • Baklib内容中台的核心架构是什么?
  • 蓝桥杯14届国赛 班级活动
  • 反向代理对于 网络安全中服务器的一些思考
  • MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
  • JS | 正则 · 常用正则表达式速查表
  • Go语言——kratos微服务框架使用
  • Google语法整理
  • 《软件项目管理》笔记二
  • 从 TTS 到 TTRL:无标签数据强化学习探索与展望
  • CMOS内存的地址空间在主内存空间中吗?
  • Java Solon-MCP 实现 MCP 实践全解析:SSE 与 STDIO 通信模式详解