|
简介
Python A2A 是 Google 的智能体到智能体 (Agent-to-Agent, A2A) 协议的实现,旨在标准化 AI 智能体之间的通信。该协议解决了 AI 生态系统中的一个主要挑战:使不同的 AI 服务能够无需自定义转换层即可无缝通信。
随着 AI 领域分化为各种专业服务,每种服务都有自己的 API 格式和参数,开发人员花费过多时间构建通信基础设施,而不是专注于 AI 逻辑。Python A2A 通过提供一种标准化的方式让 AI 智能体互相交流,解决了这个问题,无论它们的底层实现如何。
Python A2A 入门
安装
核心概念
Python A2A 实现了 A2A 协议的几个关键概念:
- 1. 消息结构:定义了文本、函数调用和响应的格式
- 2. 对话线程:支持在多次交互中维护上下文
- 3. 函数调用:智能体暴露和调用函数的标准化方式
- 4. 错误处理:一致的错误格式
构建您的第一个 A2A 智能体
让我们从一个简单的回声智能体开始,它会响应消息:
from python_a2a import A2AServer, Message, TextContent, MessageRole, run_server
class EchoAgent(A2AServer): """一个简单的智能体,用前缀回显消息。"""
def handle_message(self, message): if message.content.type == "text": return Message( content=TextContent(text=f"Echo: {message.content.text}"), role=MessageRole.AGENT, parent_message_id=message.message_id, conversation_id=message.conversation_id )
现在,让我们创建一个客户端来与我们的智能体交流:
from python_a2a import A2AClient, Message, TextContent, MessageRole
智能体之间的函数调用
A2A 的强大功能之一是标准化的函数调用。这是一个提供数学函数的计算器智能体:
import math from python_a2a import ( A2AServer, Message, TextContent, FunctionCallContent, FunctionResponseContent, FunctionParameter, MessageRole, run_server )
class CalculatorAgent(A2AServer): """提供数学计算函数的智能体。"""
def handle_message(self, message): if message.content.type == "text": return Message( content=TextContent( text="我是一个计算器智能体。你可以调用我的函数:\n" "- calculate: 基础算术 (operation, a, b)\n" "- sqrt: 平方根 (value)" ), role=MessageRole.AGENT, parent_message_id=message.message_id, conversation_id=message.conversation_id )
elif message.content.type == "function_call": function_name = message.content.name params = {p.name: p.value for p in message.content.parameters}
try: if function_name == "calculate": operation = params.get("operation", "add") a = float(params.get("a", 0)) b = float(params.get("b", 0))
if operation == "add": result = a + b elif operation == "subtract": result = a - b elif operation == "multiply": result = a * b elif operation == "divide": if b == 0: raise ValueError("不能除以零") result = a / b else: raise ValueError(f"未知操作: {operation}")
return Message( content=FunctionResponseContent( name="calculate", response={"result": result} ), role=MessageRole.AGENT, parent_message_id=message.message_id, conversation_id=message.conversation_id )
elif function_name == "sqrt": value = float(params.get("value", 0)) if value < 0: raise ValueError("不能计算负数的平方根")
result = math.sqrt(value) return Message( content=FunctionResponseContent( name="sqrt", response={"result": result} ), role=MessageRole.AGENT, parent_message_id=message.message_id, conversation_id=message.conversation_id )
except Exception as e: return Message( content=FunctionResponseContent( name=function_name, response={"error": str(e)} ), role=MessageRole.AGENT, parent_message_id=message.message_id, conversation_id=message.conversation_id )
if __name__ == "__main__": agent = CalculatorAgent() run_server(agent, host="0.0.0.0", port=5001)
以下是如何调用计算器智能体的函数:
from python_a2a import ( A2AClient, Message, FunctionCallContent, FunctionParameter, MessageRole )
client = A2AClient("http://localhost:5001/a2a")
基于 LLM 的智能体
Python A2A 包含了与流行 LLM 提供商的即用型集成。这是一个由 OpenAI 驱动的智能体:
import os from python_a2a import OpenAIA2AServer, run_server
同样,您可以创建一个由 Anthropic Claude 驱动的智能体:
import os from python_a2a import ClaudeA2AServer, run_server
多智能体工作流
A2A 的真正威力在于连接多个智能体。让我们构建一个研究助手工作流:
from python_a2a import ( A2AClient, Message, TextContent, MessageRole, Conversation )
def research_workflow(query):
高级示例:使用 A2A 进行天气和行程规划
这是一个示例,展示了 A2A 如何简化智能体之间的通信:
from python_a2a import A2AClient, Message, TextContent, MessageRole
管理对话
Python A2A 提供了一个 Conversation 类来管理多轮交互:
from python_a2a import Conversation, MessageRole, A2AClient
错误处理
Python A2A 提供标准化的错误处理:
from python_a2a import A2AClient, Message, TextContent, MessageRole
client = A2AClient("http://localhost:5001/a2a")
try: message = Message( content=TextContent(text="你好"), role=MessageRole.USER ) response = client.send_message(message)
except ConnectionError as e: print(f"连接错误: {e}")
except TimeoutError as e: print(f"超时错误: {e}")
except Exception as e: print(f"意外错误: {e}")
创建自定义 A2A 智能体
以下是创建您自己的 A2A 兼容智能体的模板:
from python_a2a import A2AServer, Message, TextContent, MessageRole, run_server
class MyCustomAgent(A2AServer): def __init__(self, **kwargs): super().__init__(**kwargs)
结论
Python A2A 提供了一种标准化的方式让 AI
智能体进行通信,使构建多智能体系统变得更加容易。通过采用这个协议,您可以:
- 1. 减少在通信基础设施上花费的开发时间
- 2. 轻松切换和升级智能体实现
- 3. 构建模块化、可扩展的 AI 系统
- 4. 利用专业智能体完成不同任务
A2A 协议及其 Python 实现正在帮助构建一个未来,在这个未来中,AI 系统可以像乐高积木一样组合,让专业智能体无缝合作。
欲了解更多信息,请查看 Python A2A 的 GitHub 仓库、PyPI 页面和文档。
Python A2A: Google 的智能体到智能体协议的全面指南
来源:https://www.cnblogs.com/sing1ee/p/18828654 |