一、多 Agent 协同为什么是 AI 应用的下一站

单 Agent 在执行复杂任务时面临三个瓶颈:上下文窗口有限、单步可靠性随链路衰减、无法并行处理不同性质的子任务。

Google 提出的 A2A(Agent-to-Agent)协议正是为了解决这种场景。简单说,就是让多个专业 Agent 通过标准协议通信,各司其职、协同完成复杂任务。

但落地时你会发现,多 Agent 系统的工程复杂度远比单 Agent 高。你需要管理多个运行时、处理 Agent 间的状态传递、还要考虑弹性伸缩——这些繁琐的基础设施工作会吞噬大量开发精力。

本文以阿里云函数计算 AgentRun 为基础,演示如何用 Google ADK 框架搭建一个可运行的多 Agent 协同系统。所有代码完整可复现。


二、从零搭建:架构总览

我们的目标系统:一个自动化的竞品分析流水线,由三个专业 Agent 组成:

搜索 Agent ──(搜索结果)──→ 分析 Agent ──(分析结论)──→ 报告 Agent
     │                          │                          │
     └──────────────────────────┼──────────────────────────┘
                                │
                           NAS 文件存储

每个 Agent 运行在独立的函数计算实例上,通过 NAS 传递中间数据,按需弹性伸缩。


三、核心实现

搜索 Agent

# search_agent/main.py
from google.adk.agents import Agent
from google.adk.tools import ToolContext
import json
import os


def web_search(query: str, tool_context: ToolContext) -> str:
    """执行搜索并将结果写入共享存储"""
    # 模拟搜索逻辑,实际接入搜索 API
    results = [
        {"title": f"关于"{query}"的信息", "snippet": "..."}
    ]
    path = "/mnt/nas/search_results.json"
    os.makedirs(os.path.dirname(path), exist_ok=True)
    with open(path, "w", encoding="utf-8") as f:
        json.dump({"query": query, "results": results}, f, ensure_ascii=False)
    tool_context.actions.skip_summarization = True
    return json.dumps(results, ensure_ascii=False, indent=2)


search_agent = Agent(
    name="search_agent",
    model="qwen-plus",
    instruction="执行网络搜索并将结果传递给下游",
    tools=[web_search],
)

分析与报告 Agent

分析 Agent 从 NAS 读取搜索 JSON,调用大模型做四维度对比分析(产品定位、核心功能、定价策略、技术架构),输出结构化结论并写回 NAS。报告 Agent 读取分析结果,生成 Markdown 格式的完整报告。

思路与搜索 Agent 一致,此处不再赘述完整代码。核心要点:

  • 状态传递:通过 NAS 文件实现,路径规范化(/mnt/nas/*.json / /mnt/nas/*.md
  • 模型调用:统一使用百炼提供的 qwen-plus,无需自行管理 API Key 轮转
  • 错误处理:每个 Agent 读取前检查文件是否存在,不存在时返回明确错误提示

四、部署与运行

使用 Serverless Devs 工具,通过 s.yaml 声明式配置三个函数服务,NAS 挂载路径统一配置。执行 s deploy 即可一键部署。

部署后,每个 Agent 获得独立 HTTP 端点,通过 A2A 协议互相调用。AgentRun 自动处理:

  • 请求路由和负载均衡
  • 实例的弹性扩缩容
  • 运行时的监控和日志

无请求时计算实例缩容到零,不产生费用。


五、实践总结与注意事项

  1. 框架选择:当前 AgentRun 支持 Google ADK 和 PydanticAI 两种框架,各有侧重——ADK 适合多 Agent 协同,PydanticAI 适合单 Agent 深度任务
  2. 数据传递:NAS 文件方案对中等数据量友好;如果 Agent 间通信频繁且数据量小,可以关注后续原生的消息队列支持
  3. 冷启动处理:百毫秒级冷启动对大多数场景可接受;延迟敏感的在线服务可配置预留实例
  4. 成本控制:低频场景下月度成本很低,高频场景弹性伸缩,不用为峰值提前预留资源

参考资料与延伸阅读

  • 阿里云 AgentRun 产品页(含免费试用):阿里云 AgentRun 产品页
  • Google A2A 协议规范:https://github.com/google/A2A
  • 阿里云函数计算文档:https://help.aliyun.com/product/50980.html

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐