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

A2A Hello World搭建

概念

Task

Agent接受任务,并基于任务进行持续沟通,直至完成任务所需交付物

Artifact

工件,表示任务的最终交付物

Message

任务进行时,中间产出的结果和沟通。

Part

文件对象,传出text、file等类型

Agent Card

暴露agent的能力和配置信息,如skill、url、capability

API

TaskManager

接受提交的任务,进行任务等对象的管理,例如更新任务状态,发送流式信息到client等。并由其最终调用Agent完成任务。

可以继承InMemoryTaskManager(来自google官方示例的common模块中)
关键需要自己实现的函数:
on_send_task:接收同步任务,当agent的capability定义streaming为false时,client调用此方法。 on_send_task_subscribe:接收任务,并异步流式输出到client,streaming为true时client调用。

已实现的方法:
upsert_task :向taskmanager提交一个task
update_store: 更新一个已托管的task状态
enqueue_events_for_sse:向发送队列插入一个流式task message
dequeue_events_for_sse:向发送队列取出流式task message

对象:
TaskStatusUpdateEvent:task更新时间,包括task id、taskstatus、final。final用于控制本次对话是否都已返回,即结束后关闭流式。
TaskStatus:记录taskstatus和message
taskstatus:表示任务状态,submmitted、working、completed、input required
message:role角色、parts文件。

Agent

整合llm和mcp能力,完成具体的task。
agent可以使用多种框架实现,例如langgraph、crewai、google_adk等都可以整合llm和mcp。
AgentSkill:agent的技能,每个技能声明一个AgentSkill对象
AgentCapabilities:定义agent能力,如streaming等。
AgentCard:组装skill和capability,并指定名字、描述、例子、标签、服务url、版本,暴露给调用方。
A2AServer类:组装agentcard和taskmanager启动服务。

Client

用户通过client调用agent,client可以向agent提交task、获取task状态等。
Cient就是创建一个循环,获取到用户的输入后发送给agent,并根据agent的task状态确定下一个操作,例如让用户补充输入、或者已完成任务。

相关资源

基于资源1和2可以实现从0的agent2agent搭建,并支持llm和mcp。

  1. https://github.com/langchain-ai/langchain-mcp-adapters?tab=readme-ov-file#client
    搭建agent的从0开始示例,支持llm和mcp工具的集成。使用langchain openai快速构建对话客户端,再使用langgraph组装llm对话和mcptools。
  2. https://google.github.io/A2A/tutorials/python/10-next-steps/
    从0搭建一个A2A应用
  3. https://github.com/google/A2A/tree/main/samples/python/agents
    google给出的完整的A2A示例,可直接运行。但是代码已经很多了,刚开始理解困难,先从0搭建比较好
http://www.dtcms.com/a/179589.html

相关文章:

  • CTF杂项入门(BUUCTF-Misc第一页)
  • 智能外呼机器人的核心优势
  • 手撕基于AMQP协议的简易消息队列-7(客户端模块的编写)
  • 安装Pod网络插件时pod状态变为ImagePullBackOff
  • 贵州安全员考试内容有哪些?
  • VB自动获取彩票网页数据指南
  • VUE——自定义指令
  • MySQL基础关键_012_事务
  • PH热榜 | 2025-05-08
  • element-ui form 组件源码分享
  • GoogLeNet详解
  • 常用 svg ICON
  • 详细聊聊 Synchronized,以及锁的升级过程
  • Cursor+AI辅助编程-优先完成需求工程结构化拆解
  • 1分区 1-113 多线不起总线启
  • Optimum详解
  • LeetCode 216.组合总和 III:回溯算法实现与剪枝优化
  • 日拱一卒 | RNA-seq数据质控(1)
  • 400种行业劳动合同模板
  • 从零到精通:GoFrame ORM 使用指南 - 特性、实践与经验分享
  • vfrom表单设计器使用事件机制控制字段显示隐藏
  • SpringAI实现AI应用-自定义顾问(Advisor)
  • Kubernetes HPA 深度解析:生产环境自动扩缩容实战指南
  • 计算机网络笔记(十六)——3.3使用广播信道的数据链路层
  • 高效文件夹迁移工具,轻松实现批量文件管理
  • PVP鼠标推荐(deepseek)
  • 谷歌 Gemma 大模型安装步骤
  • Salesforce认证体系大升级!7月21日正式上线新平台
  • 第37次CCF--机器人饲养
  • C31-形参与实参的区别