Python A2A: Google 的智能体到智能体协议的全面指南
<p><span style="font-size: 1.5em">简介</span></p><p>Python A2A 是 Google 的智能体到智能体 (Agent-to-Agent, A2A) 协议的实现,旨在标准化 AI 智能体之间的通信。该协议解决了 AI 生态系统中的一个主要挑战:使不同的 AI 服务能够无需自定义转换层即可无缝通信。</p>
<p>随着 AI 领域分化为各种专业服务,每种服务都有自己的 API 格式和参数,开发人员花费过多时间构建通信基础设施,而不是专注于 AI 逻辑。Python A2A 通过提供一种标准化的方式让 AI 智能体互相交流,解决了这个问题,无论它们的底层实现如何。</p>
<h2 id="1" data-heading="true">Python A2A 入门</h2>
<h3 id="2" data-heading="true">安装</h3>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-bash"><span class="hljs-comment"># 基本安装<br>pip install python-a2a<br><br><span class="hljs-comment"># 用于 OpenAI 集成<br>pip install <span class="hljs-string">"python-a2a"<br><br><span class="hljs-comment"># 用于 Anthropic Claude 集成<br>pip install <span class="hljs-string">"python-a2a"<br><br><span class="hljs-comment"># 安装所有可选依赖<br>pip install <span class="hljs-string">"python-a2a"</span></span></span></span></span></span></span></code></span></pre>
<h2 id="3" data-heading="true">核心概念</h2>
<p>Python A2A 实现了 A2A 协议的几个关键概念:</p>
<ol>
<li>1. <strong>消息结构</strong>:定义了文本、函数调用和响应的格式</li>
<li>2. <strong>对话线程</strong>:支持在多次交互中维护上下文</li>
<li>3. <strong>函数调用</strong>:智能体暴露和调用函数的标准化方式</li>
<li>4. <strong>错误处理</strong>:一致的错误格式</li>
</ol>
<h2 id="4" data-heading="true">构建您的第一个 A2A 智能体</h2>
<p>让我们从一个简单的回声智能体开始,它会响应消息:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import A2AServer, Message, TextContent, MessageRole, run_server<br><br><span class="hljs-keyword">class <span class="hljs-title class_">EchoAgent(<span class="hljs-title class_ inherited__">A2AServer):<br> <span class="hljs-string">"""一个简单的智能体,用前缀回显消息。"""<br><br> <span class="hljs-keyword">def <span class="hljs-title function_">handle_message(<span class="hljs-params">self, message):<br> <span class="hljs-keyword">if message.content.<span class="hljs-built_in">type == <span class="hljs-string">"text":<br> <span class="hljs-keyword">return Message(<br> content=TextContent(text=<span class="hljs-string">f"Echo: <span class="hljs-subst">{message.content.text}"),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br><span class="hljs-comment"># 运行服务器<br><span class="hljs-keyword">if __name__ == <span class="hljs-string">"__main__":<br> agent = EchoAgent()<br> run_server(agent, host=<span class="hljs-string">"0.0.0.0", port=<span class="hljs-number">5000)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<p>现在,让我们创建一个客户端来与我们的智能体交流:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import A2AClient, Message, TextContent, MessageRole<br><br><span class="hljs-comment"># 创建一个客户端来与我们的智能体交流<br>client = A2AClient(<span class="hljs-string">"http://localhost:5000/a2a")<br><br><span class="hljs-comment"># 发送消息<br>message = Message(<br> content=TextContent(text=<span class="hljs-string">"Hello, is this thing on?"),<br> role=MessageRole.USER<br>)<br>response = client.send_message(message)<br><br><span class="hljs-comment"># 打印响应<br><span class="hljs-built_in">print(<span class="hljs-string">f"Agent says: <span class="hljs-subst">{response.content.text}")</span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="5" data-heading="true">智能体之间的函数调用</h2>
<p>A2A 的强大功能之一是标准化的函数调用。这是一个提供数学函数的计算器智能体:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">import math<br><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import (<br> A2AServer, Message, TextContent, FunctionCallContent,<br> FunctionResponseContent, FunctionParameter, MessageRole, run_server<br>)<br><br><span class="hljs-keyword">class <span class="hljs-title class_">CalculatorAgent(<span class="hljs-title class_ inherited__">A2AServer):<br> <span class="hljs-string">"""提供数学计算函数的智能体。"""<br><br> <span class="hljs-keyword">def <span class="hljs-title function_">handle_message(<span class="hljs-params">self, message):<br> <span class="hljs-keyword">if message.content.<span class="hljs-built_in">type == <span class="hljs-string">"text":<br> <span class="hljs-keyword">return Message(<br> content=TextContent(<br> text=<span class="hljs-string">"我是一个计算器智能体。你可以调用我的函数:\n"<br> <span class="hljs-string">"- calculate: 基础算术 (operation, a, b)\n"<br> <span class="hljs-string">"- sqrt: 平方根 (value)"<br> ),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br> <span class="hljs-keyword">elif message.content.<span class="hljs-built_in">type == <span class="hljs-string">"function_call":<br> function_name = message.content.name<br> params = {p.name: p.value <span class="hljs-keyword">for p <span class="hljs-keyword">in message.content.parameters}<br><br> <span class="hljs-keyword">try:<br> <span class="hljs-keyword">if function_name == <span class="hljs-string">"calculate":<br> operation = params.get(<span class="hljs-string">"operation", <span class="hljs-string">"add")<br> a = <span class="hljs-built_in">float(params.get(<span class="hljs-string">"a", <span class="hljs-number">0))<br> b = <span class="hljs-built_in">float(params.get(<span class="hljs-string">"b", <span class="hljs-number">0))<br><br> <span class="hljs-keyword">if operation == <span class="hljs-string">"add":<br> result = a + b<br> <span class="hljs-keyword">elif operation == <span class="hljs-string">"subtract":<br> result = a - b<br> <span class="hljs-keyword">elif operation == <span class="hljs-string">"multiply":<br> result = a * b<br> <span class="hljs-keyword">elif operation == <span class="hljs-string">"divide":<br> <span class="hljs-keyword">if b == <span class="hljs-number">0:<br> <span class="hljs-keyword">raise ValueError(<span class="hljs-string">"不能除以零")<br> result = a / b<br> <span class="hljs-keyword">else:<br> <span class="hljs-keyword">raise ValueError(<span class="hljs-string">f"未知操作: <span class="hljs-subst">{operation}")<br><br> <span class="hljs-keyword">return Message(<br> content=FunctionResponseContent(<br> name=<span class="hljs-string">"calculate",<br> response={<span class="hljs-string">"result": result}<br> ),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br> <span class="hljs-keyword">elif function_name == <span class="hljs-string">"sqrt":<br> value = <span class="hljs-built_in">float(params.get(<span class="hljs-string">"value", <span class="hljs-number">0))<br> <span class="hljs-keyword">if value < <span class="hljs-number">0:<br> <span class="hljs-keyword">raise ValueError(<span class="hljs-string">"不能计算负数的平方根")<br><br> result = math.sqrt(value)<br> <span class="hljs-keyword">return Message(<br> content=FunctionResponseContent(<br> name=<span class="hljs-string">"sqrt",<br> response={<span class="hljs-string">"result": result}<br> ),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br> <span class="hljs-keyword">except Exception <span class="hljs-keyword">as e:<br> <span class="hljs-keyword">return Message(<br> content=FunctionResponseContent(<br> name=function_name,<br> response={<span class="hljs-string">"error": <span class="hljs-built_in">str(e)}<br> ),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br><span class="hljs-keyword">if __name__ == <span class="hljs-string">"__main__":<br> agent = CalculatorAgent()<br> run_server(agent, host=<span class="hljs-string">"0.0.0.0", port=<span class="hljs-number">5001)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<p>以下是如何调用计算器智能体的函数:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import (<br> A2AClient, Message, FunctionCallContent,<br> FunctionParameter, MessageRole<br>)<br><br>client = A2AClient(<span class="hljs-string">"http://localhost:5001/a2a")<br><br><span class="hljs-comment"># 创建一个函数调用消息<br>function_call = Message(<br> content=FunctionCallContent(<br> name=<span class="hljs-string">"calculate",<br> parameters=[<br> FunctionParameter(name=<span class="hljs-string">"operation", value=<span class="hljs-string">"add"),<br> FunctionParameter(name=<span class="hljs-string">"a", value=<span class="hljs-number">5),<br> FunctionParameter(name=<span class="hljs-string">"b", value=<span class="hljs-number">3)<br> ]<br> ),<br> role=MessageRole.USER<br>)<br><br>response = client.send_message(function_call)<br><br><span class="hljs-keyword">if response.content.<span class="hljs-built_in">type == <span class="hljs-string">"function_response":<br> result = response.content.response.get(<span class="hljs-string">"result")<br> <span class="hljs-keyword">if result <span class="hljs-keyword">is <span class="hljs-keyword">not <span class="hljs-literal">None:<br> <span class="hljs-built_in">print(<span class="hljs-string">f"Result: <span class="hljs-subst">{result}") <span class="hljs-comment"># 输出: Result: 8</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="6" data-heading="true">基于 LLM 的智能体</h2>
<p>Python A2A 包含了与流行 LLM 提供商的即用型集成。这是一个由 OpenAI 驱动的智能体:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">import os<br><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import OpenAIA2AServer, run_server<br><br><span class="hljs-comment"># 创建一个由 OpenAI 驱动的智能体<br>agent = OpenAIA2AServer(<br> api_key=os.environ[<span class="hljs-string">"OPENAI_API_KEY"],<br> model=<span class="hljs-string">"gpt-4",<br> system_prompt=<span class="hljs-string">"你是一个有帮助的 AI 助手。"<br>)<br><br><span class="hljs-comment"># 运行服务器<br><span class="hljs-keyword">if __name__ == <span class="hljs-string">"__main__":<br> run_server(agent, host=<span class="hljs-string">"0.0.0.0", port=<span class="hljs-number">5002)</span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<p>同样,您可以创建一个由 Anthropic Claude 驱动的智能体:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">import os<br><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import ClaudeA2AServer, run_server<br><br><span class="hljs-comment"># 创建一个由 Anthropic Claude 驱动的智能体<br>agent = ClaudeA2AServer(<br> api_key=os.environ[<span class="hljs-string">"ANTHROPIC_API_KEY"],<br> model=<span class="hljs-string">"claude-3-opus-20240229",<br> system_prompt=<span class="hljs-string">"你是一个有帮助的 AI 助手。"<br>)<br><br><span class="hljs-comment"># 运行服务器<br><span class="hljs-keyword">if __name__ == <span class="hljs-string">"__main__":<br> run_server(agent, host=<span class="hljs-string">"0.0.0.0", port=<span class="hljs-number">5003)</span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="7" data-heading="true">多智能体工作流</h2>
<p>A2A 的真正威力在于连接多个智能体。让我们构建一个研究助手工作流:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import (<br> A2AClient, Message, TextContent, MessageRole, Conversation<br>)<br><br><span class="hljs-keyword">def <span class="hljs-title function_">research_workflow(<span class="hljs-params">query):<br> <span class="hljs-comment"># 连接到专业智能体<br> llm_client = A2AClient(<span class="hljs-string">"http://localhost:5002/a2a") <span class="hljs-comment"># LLM 智能体<br> search_client = A2AClient(<span class="hljs-string">"http://localhost:5003/a2a") <span class="hljs-comment"># 搜索智能体<br> summarize_client = A2AClient(<span class="hljs-string">"http://localhost:5004/a2a") <span class="hljs-comment"># 总结智能体<br><br> <span class="hljs-comment"># 在对话中跟踪整个工作流<br> conversation = Conversation()<br> conversation.create_text_message(<br> text=<span class="hljs-string">f"研究问题: <span class="hljs-subst">{query}",<br> role=MessageRole.USER<br> )<br><br> <span class="hljs-comment"># 步骤 1: 生成搜索查询<br> <span class="hljs-built_in">print(<span class="hljs-string">"生成搜索查询...")<br> search_request = Message(<br> content=TextContent(<br> text=<span class="hljs-string">f"基于这个研究问题: '<span class="hljs-subst">{query}', "<br> <span class="hljs-string">f"生成 3 个特定的搜索查询,以帮助找到相关信息。"<br> ),<br> role=MessageRole.USER<br> )<br> search_queries_response = llm_client.send_message(search_request)<br> conversation.add_message(search_queries_response)<br><br> <span class="hljs-comment"># 步骤 2: 检索信息<br> <span class="hljs-built_in">print(<span class="hljs-string">"检索信息...")<br> search_message = Message(<br> content=TextContent(<br> text=<span class="hljs-string">f"搜索信息以回答: <span class="hljs-subst">{query}\n\n"<br> <span class="hljs-string">f"使用这些查询:\n<span class="hljs-subst">{search_queries_response.content.text}"<br> ),<br> role=MessageRole.USER<br> )<br> search_results = search_client.send_message(search_message)<br> conversation.add_message(search_results)<br><br> <span class="hljs-comment"># 步骤 3: 综合信息<br> <span class="hljs-built_in">print(<span class="hljs-string">"综合信息...")<br> summarize_message = Message(<br> content=TextContent(<br> text=<span class="hljs-string">f"综合这些信息来回答问题: '<span class="hljs-subst">{query}'\n\n"<br> <span class="hljs-string">f"信息:\n<span class="hljs-subst">{search_results.content.text}"<br> ),<br> role=MessageRole.USER<br> )<br> summary_response = summarize_client.send_message(summarize_message)<br> conversation.add_message(summary_response)<br><br> <span class="hljs-comment"># 将最终答案添加到对话中<br> conversation.create_text_message(<br> text=<span class="hljs-string">f"你的研究问题的答案:\n\n<span class="hljs-subst">{summary_response.content.text}",<br> role=MessageRole.AGENT<br> )<br><br> <span class="hljs-keyword">return conversation<br><br><span class="hljs-comment"># 使用示例<br><span class="hljs-keyword">if __name__ == <span class="hljs-string">"__main__":<br> query = <span class="hljs-built_in">input(<span class="hljs-string">"你的研究问题是什么? ")<br> result = research_workflow(query)<br> <span class="hljs-built_in">print(<span class="hljs-string">"\n研究完成!")<br> <span class="hljs-built_in">print(<span class="hljs-string">"=" * <span class="hljs-number">50)<br> <span class="hljs-built_in">print(result.messages[-<span class="hljs-number">1].content.text)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="8" data-heading="true">高级示例:使用 A2A 进行天气和行程规划</h2>
<p>这是一个示例,展示了 A2A 如何简化智能体之间的通信:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import A2AClient, Message, TextContent, MessageRole<br><br><span class="hljs-comment"># 使用 A2A: 任何智能体 -> 任何其他智能体<br><span class="hljs-keyword">def <span class="hljs-title function_">plan_trip(<span class="hljs-params">location):<br> <span class="hljs-comment"># 连接到专业智能体 - 都使用相同的协议<br> weather_client = A2AClient(<span class="hljs-string">"http://localhost:5001/a2a")<br> openai_client = A2AClient(<span class="hljs-string">"http://localhost:5002/a2a")<br><br> <span class="hljs-comment"># 询问天气智能体<br> weather_message = Message(<br> content=TextContent(text=<span class="hljs-string">f"请问<span class="hljs-subst">{location}的天气预报如何?"),<br> role=MessageRole.USER<br> )<br> weather_response = weather_client.send_message(weather_message)<br><br> <span class="hljs-comment"># 询问 OpenAI 智能体,包括天气信息<br> planning_message = Message(<br> content=TextContent(<br> text=<span class="hljs-string">f"我正在计划前往<span class="hljs-subst">{location}的旅行。天气预报: <span class="hljs-subst">{weather_response.content.text}"<br> <span class="hljs-string">f"请推荐一些活动。"<br> ),<br> role=MessageRole.USER<br> )<br> planning_response = openai_client.send_message(planning_message)<br><br> <span class="hljs-keyword">return planning_response.content.text<br><br><span class="hljs-comment"># 这适用于任何兼容 A2A 的智能体 - 无需自定义适配器!</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="9" data-heading="true">管理对话</h2>
<p>Python A2A 提供了一个 <code>Conversation</code> 类来管理多轮交互:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import Conversation, MessageRole, A2AClient<br><br><span class="hljs-comment"># 创建一个新对话<br>conversation = Conversation()<br><br><span class="hljs-comment"># 添加用户消息<br>conversation.create_text_message(<br> text=<span class="hljs-string">"今天天气怎么样?",<br> role=MessageRole.USER<br>)<br><br><span class="hljs-comment"># 连接到一个智能体<br>weather_agent = A2AClient(<span class="hljs-string">"http://localhost:5001/a2a")<br><br><span class="hljs-comment"># 发送对话中的最后一条消息<br>last_message = conversation.messages[-<span class="hljs-number">1]<br>response = weather_agent.send_message(last_message)<br><br><span class="hljs-comment"># 将响应添加到对话中<br>conversation.add_message(response)<br><br><span class="hljs-comment"># 继续对话<br>conversation.create_text_message(<br> text=<span class="hljs-string">"谢谢!我需要带伞吗?",<br> role=MessageRole.USER<br>)<br><br><span class="hljs-comment"># 发送新消息,包括对话历史<br>response = weather_agent.send_message(<br> conversation.messages[-<span class="hljs-number">1],<br> conversation_id=conversation.conversation_id<br>)<br><br><span class="hljs-comment"># 也添加这个响应<br>conversation.add_message(response)<br><br><span class="hljs-comment"># 打印整个对话<br><span class="hljs-keyword">for msg <span class="hljs-keyword">in conversation.messages:<br> role = <span class="hljs-string">"用户" <span class="hljs-keyword">if msg.role == MessageRole.USER <span class="hljs-keyword">else <span class="hljs-string">"智能体"<br> <span class="hljs-built_in">print(<span class="hljs-string">f"<span class="hljs-subst">{role}: <span class="hljs-subst">{msg.content.text}")</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="10" data-heading="true">错误处理</h2>
<p>Python A2A 提供标准化的错误处理:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import A2AClient, Message, TextContent, MessageRole<br><br>client = A2AClient(<span class="hljs-string">"http://localhost:5001/a2a")<br><br><span class="hljs-keyword">try:<br> message = Message(<br> content=TextContent(text=<span class="hljs-string">"你好"),<br> role=MessageRole.USER<br> )<br> response = client.send_message(message)<br><br><span class="hljs-keyword">except ConnectionError <span class="hljs-keyword">as e:<br> <span class="hljs-built_in">print(<span class="hljs-string">f"连接错误: <span class="hljs-subst">{e}")<br><br><span class="hljs-keyword">except TimeoutError <span class="hljs-keyword">as e:<br> <span class="hljs-built_in">print(<span class="hljs-string">f"超时错误: <span class="hljs-subst">{e}")<br><br><span class="hljs-keyword">except Exception <span class="hljs-keyword">as e:<br> <span class="hljs-built_in">print(<span class="hljs-string">f"意外错误: <span class="hljs-subst">{e}")</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="11" data-heading="true">创建自定义 A2A 智能体</h2>
<p>以下是创建您自己的 A2A 兼容智能体的模板:</p>
<pre class="hljs code__pre"><span class="mac-sign"><code class="language-python"><span class="hljs-keyword">from python_a2a <span class="hljs-keyword">import A2AServer, Message, TextContent, MessageRole, run_server<br><br><span class="hljs-keyword">class <span class="hljs-title class_">MyCustomAgent(<span class="hljs-title class_ inherited__">A2AServer):<br> <span class="hljs-keyword">def <span class="hljs-title function_">__init__(<span class="hljs-params">self, **kwargs):<br> <span class="hljs-built_in">super().__init__(**kwargs)<br> <span class="hljs-comment"># 在这里初始化您的智能体特定组件<br><br> <span class="hljs-keyword">def <span class="hljs-title function_">handle_message(<span class="hljs-params">self, message):<br> <span class="hljs-string">"""处理收到的消息并返回响应。<br><br> 这是处理智能体消息的主要入口点。<br> """<br> <span class="hljs-keyword">if message.content.<span class="hljs-built_in">type == <span class="hljs-string">"text":<br> <span class="hljs-comment"># 处理文本消息<br> user_text = message.content.text<br><br> <span class="hljs-comment"># 生成您的响应(替换为您的逻辑)<br> response_text = <span class="hljs-string">f"你说: <span class="hljs-subst">{user_text}"<br><br> <span class="hljs-keyword">return Message(<br> content=TextContent(text=response_text),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br> <span class="hljs-keyword">elif message.content.<span class="hljs-built_in">type == <span class="hljs-string">"function_call":<br> <span class="hljs-comment"># 处理函数调用(如果您的智能体支持)<br> <span class="hljs-comment"># ...<br> <span class="hljs-keyword">pass<br><br> <span class="hljs-comment"># 如果没有其他条件匹配,返回默认响应<br> <span class="hljs-keyword">return Message(<br> content=TextContent(text=<span class="hljs-string">"我不知道如何处理这种消息类型。"),<br> role=MessageRole.AGENT,<br> parent_message_id=message.message_id,<br> conversation_id=message.conversation_id<br> )<br><br><span class="hljs-comment"># 运行您的智能体<br><span class="hljs-keyword">if __name__ == <span class="hljs-string">"__main__":<br> my_agent = MyCustomAgent()<br> run_server(my_agent, host=<span class="hljs-string">"0.0.0.0", port=<span class="hljs-number">5005)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span></pre>
<h2 id="12" data-heading="true">结论</h2>
<p>Python A2A 提供了一种标准化的方式让 AI</p>
<p>智能体进行通信,使构建多智能体系统变得更加容易。通过采用这个协议,您可以:</p>
<ol>
<li>1. 减少在通信基础设施上花费的开发时间</li>
<li>2. 轻松切换和升级智能体实现</li>
<li>3. 构建模块化、可扩展的 AI 系统</li>
<li>4. 利用专业智能体完成不同任务</li>
</ol>
<p>A2A 协议及其 Python 实现正在帮助构建一个未来,在这个未来中,AI 系统可以像乐高积木一样组合,让专业智能体无缝合作。</p>
<p>欲了解更多信息,请查看 Python A2A 的 GitHub 仓库、PyPI 页面和文档。</p>
<p>Python A2A: Google 的智能体到智能体协议的全面指南</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/sing1ee/p/18828654
頁:
[1]