Serverless AI Agent 实战:用阿里云 AgentRun + Google ADK 搭建多智能体协同工作流

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本文详解如何在阿里云AgentRun上快速搭建基于Google A2A协议的多Agent竞品分析系统:搜索、分析、报告三个专业Agent通过Serverless架构协同工作,内置百炼大模型与NAS共享存储,开箱即用、按量计费,显著降低多Agent落地门槛。

一、为什么你需要关注多 Agent 协同

单 Agent 的能力边界正在被快速触及。

一个典型的例子:你想让 AI 帮你做一次竞品分析。这需要先搜索公开资料、抓取网页、提取关键信息、对比分析、最后生成报告。如果只用一个 Agent,Prompt 会变得极其复杂,上下文窗口很快爆满,而且每一步的可靠性会随着链路拉长急剧下降。

Google 在 2025 年提出的 A2A(Agent-to-Agent)协议 正是为了解决这个问题。它的核心思路很简单:把复杂任务拆成多个专业 Agent,让它们通过标准协议相互通信、协作完成

听起来很美好,但落地面临三个现实问题:

  1. 基础设施:多 Agent 意味着多个运行时,手动管理服务器不现实
  2. 模型接入:每个 Agent 可能需要不同的模型,统一接入成本高
  3. 状态管理:Agent 之间传数据、存中间结果,需要可靠的存储层

阿里云的 函数计算 AgentRun 恰好在这三个问题上给出了一个开箱即用的答案。它基于 Serverless 架构,内置百炼大模型集成,可选配 NAS 文件存储,而且原生支持 Google ADK 框架的多 Agent 协同。

本文带你在 AgentRun 上跑通一个完整的 A2A 多 Agent 工作流。不聊概念,直接上实操。


二、环境准备

2.1 开通服务

访问 AgentRun 控制台(通过链接可体验:AgentRun 控制台体验),完成以下准备:

  • 开通函数计算 FC 服务
  • 开通百炼模型服务(用于调用通义千问等大模型)
  • (可选)开通文件存储 NAS,用于 Agent 间共享数据

2.2 本地开发环境

确保本地安装了以下工具:

# 安装 Serverless Devs 工具
npm install -g @serverless-devs/s

# 配置阿里云凭证
s config add --AccessKeyID <your-ak> --AccessKeySecret <your-sk>

三、场景设计:多 Agent 竞品分析系统

我们要搭建的系统包含三个专业 Agent:

┌──────────────┐    A2A     ┌──────────────┐    A2A     ┌──────────────┐
│  搜索 Agent   │ ────────→ │  分析 Agent   │ ────────→ │  报告 Agent   │
│ (资料收集)    │ 搜索结果   │ (对比分析)    │ 分析结果   │ (生成报告)    │
└──────────────┘           └──────────────┘           └──────────────┘
       │                         │                         │
       └─────────────────────────┼─────────────────────────┘
                                 │
                          ┌──────┴──────┐
                          │  NAS 存储    │
                          │ (共享中间结果)│
                          └─────────────┘

每个 Agent 职责单一:

  • 搜索 Agent:接收用户关键词,调用搜索引擎 API,返回结构化结果
  • 分析 Agent:接收搜索结果,调用大模型做竞品对比分析
  • 报告 Agent:接收分析结果,生成格式化的 Markdown 报告

四、Agent 开发

4.1 搜索 Agent

搜索 Agent 的核心逻辑:接收查询关键词,调用搜索 API,格式化输出。

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


def web_search(query: str, tool_context: ToolContext) -> str:
    """执行网络搜索并返回结构化结果"""
    # 实际场景中使用搜索 API(如 Bing Search API)
    # 这里展示核心逻辑结构
    results = [
        {
   
            "title": f"关于"{
   query}"的搜索结果",
            "snippet": "模拟搜索摘要信息...",
            "url": "https://example.com/result"
        }
    ]

    # 存入 NAS 共享路径,供下游 Agent 读取
    output_path = "/mnt/nas/search_results.json"
    os.makedirs(os.path.dirname(output_path), exist_ok=True)
    with open(output_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="""你是一个专业的搜索 Agent。
当用户提出搜索需求时,调用 web_search 工具执行搜索。
然后将结果传递给下游的分析 Agent。""",
    tools=[web_search],
)

4.2 分析 Agent

分析 Agent 读取搜索结果,调用大模型做深度对比分析。

# analysis_agent/main.py
from google.adk.agents import Agent
import json
import os


def load_search_results() -> str:
    """从 NAS 读取搜索 Agent 的结果"""
    input_path = "/mnt/nas/search_results.json"
    if not os.path.exists(input_path):
        return "未找到搜索结果,请先运行搜索 Agent。"

    with open(input_path, "r", encoding="utf-8") as f:
        data = json.load(f)
    return json.dumps(data, ensure_ascii=False, indent=2)


def save_analysis(analysis_text: str) -> str:
    """将分析结果存入 NAS"""
    output_path = "/mnt/nas/analysis_result.md"
    os.makedirs(os.path.dirname(output_path), exist_ok=True)
    with open(output_path, "w", encoding="utf-8") as f:
        f.write(analysis_text)
    return "分析结果已保存"


analysis_agent = Agent(
    name="analysis_agent",
    model="qwen-plus",
    instruction="""你是一个专业的竞品分析 Agent。
1. 读取搜索 Agent 返回的结果
2. 从产品定位、核心功能、定价策略、技术架构四个维度做对比分析
3. 输出结构化的分析结论
4. 将最终结果保存到 NAS 供报告 Agent 使用""",
    tools=[load_search_results, save_analysis],
)

4.3 报告 Agent

# report_agent/main.py
from google.adk.agents import Agent
import os


def load_analysis() -> str:
    """读取分析 Agent 的输出"""
    input_path = "/mnt/nas/analysis_result.md"
    if not os.path.exists(input_path):
        return "分析结果尚未生成"
    with open(input_path, "r", encoding="utf-8") as f:
        return f.read()


report_agent = Agent(
    name="report_agent",
    model="qwen-plus",
    instruction="""你是一个专业的报告生成 Agent。
1. 读取分析 Agent 的输出
2. 生成一份格式规范的 Markdown 报告
3. 报告包含:摘要、详细对比、结论与建议三部分
4. 确保输出排版清晰,适合直接分享""",
    tools=[load_analysis],
)

五、部署到 AgentRun

5.1 项目结构

multi-agent-analysis/
├── search_agent/
│   ├── main.py
│   └── requirements.txt
├── analysis_agent/
│   ├── main.py
│   └── requirements.txt
├── report_agent/
│   ├── main.py
│   └── requirements.txt
└── s.yaml                    # Serverless Devs 配置

5.2 部署配置

# s.yaml
edition: 4.0.0
name: multi-agent-analysis

services:
  search:
    component: fc
    props:
      region: cn-hangzhou
      serviceName: adk-multi-agent
      functionName: search-agent
      runtime: python3.9
      codeUri: ./search_agent
      handler: main.search_agent
      memorySize: 1024
      # 挂载 NAS 实现 Agent 间文件共享
      nasConfig:
        groupId: 0
        userId: 0
        mountPoints:
          - serverAddr: "xxxxx.cn-hangzhou.nas.aliyuncs.com"
            mountDir: /mnt/nas

  analysis:
    component: fc
    props:
      region: cn-hangzhou
      serviceName: adk-multi-agent
      functionName: analysis-agent
      runtime: python3.9
      codeUri: ./analysis_agent
      handler: main.analysis_agent
      memorySize: 2048
      nasConfig:
        groupId: 0
        userId: 0
        mountPoints:
          - serverAddr: "xxxxx.cn-hangzhou.nas.aliyuncs.com"
            mountDir: /mnt/nas

  report:
    component: fc
    props:
      region: cn-hangzhou
      serviceName: adk-multi-agent
      functionName: report-agent
      runtime: python3.9
      codeUri: ./report_agent
      handler: main.report_agent
      memorySize: 1024
      nasConfig: ...

5.3 一键部署

# 部署全部 Agent
s deploy

# 部署结果示例:
# search-agent: deployed ✓ (URL: https://xxx.cn-hangzhou.fc.aliyuncs.com/...)
# analysis-agent: deployed ✓
# report-agent: deployed ✓

部署完成后,三个 Agent 各自获得一个独立的 HTTP 端点,通过 A2A 协议互相调用,无需额外配置服务发现或负载均衡——Serverless 架构天然处理了这些问题。


六、成本分析

多 Agent 系统的传统部署方式需要至少 3 台 ECS 实例(或一个 K8s 集群),基础成本每月几百到上千元,而且不管有没有请求都要付费。

AgentRun 的 Serverless 模式按实际调用计费:

  • 无请求时:不产生计算费用(NAS 存储除外,约 ¥0.35/GB/月)
  • 低频调用(日均几十次):每月成本可能不到 ¥10
  • 高频调用:弹性伸缩,按需付费,不会因流量骤增而宕机

参考吉利汽车在 AgentRun 上的实际案例:算力成本优化了 33%

如果你想亲自体验 AgentRun 的多 Agent 开发能力,可以通过链接注册并开通:体验 AgentRun 的多 Agent 开发能力


七、局限与注意事项

  1. 框架锁定:Google ADK 和 PydanticAI 是当前支持的两个主要框架,如果你团队用的是 LangGraph 或 CrewAI,需要评估迁移成本
  2. NAS 性能:Agent 间通过 NAS 共享文件是当前推荐的方案,适合中等数据量的场景;高频、小数据量的通信场景建议等待原生消息队列支持
  3. 冷启动:函数计算存在冷启动延迟(通常在百毫秒级),对实时性要求极高的场景需要预热策略

八、总结

本文从零搭建了一个基于 AgentRun + Google ADK 的多 Agent 竞品分析系统。核心收获:

  • A2A 协议让 Agent 间通信标准化,降低了系统复杂度
  • Serverless 架构免去了运维负担,按需付费成本更可控
  • NAS 共享存储解决了 Agent 间的状态传递问题
  • 百炼大模型提供了开箱即用的模型能力,无需自行部署

AI Agent 正在从"能用"走向"好用",而多 Agent 协同是其中最关键的一块拼图。AgentRun 让这块拼图的落地门槛降低了不少。


相关文章
|
21天前
|
存储 人工智能 数据可视化
AI 智能体开发技术方案
企业级AI智能体以LLM为大脑,融合规划、记忆、工具调用四大核心模块,实现从“能对话”到“会做事”的跃迁,支撑工单处理、知识问答、流程自动化等场景落地。(239字)
|
22天前
|
运维 Serverless API
从零搭建多Agent协同系统:Google ADK 框架实战
本文介绍如何用Google ADK框架+阿里云AgentRun,从零搭建多Agent协同系统:将复杂任务拆解为专业Agent(如VibeCoder生成代码、CodeReviewer审查),通过A2A协议实现标准化协作与调度,兼顾工程性与易部署性。(239字)
|
22天前
|
JavaScript 前端开发 安全
从 Claude Code 动态工作流看 Agent Harness 设计
Claude Code 动态工作流的特点是,让 Agent 不只是在一个对话里完成任务,而是可以为当前任务临时搭出一套执行框架。当我们理解了这套执行框架,也就能更好地理解 Agent Harness 是什么,它到底在解决什么问题。
167 0
从 Claude Code 动态工作流看 Agent Harness 设计
|
22天前
|
SQL JSON 关系型数据库
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
阿里云AnalyticDB MySQL版是PB级云原生实时数据仓库,首创多模态统一分析引擎,单SQL原生支持SQL分析、向量检索、全文搜索与JSON分析,替代3–5套独立系统,综合成本降50%+,运维复杂度降80%,适用于AI+数据融合、多源异构统一查询等企业级场景。
198 17
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
|
22天前
|
人工智能 IDE 前端开发
04|Claude Code、Codex、Cursor、OpenCode 的 Harness 差异
本文深度解析2026年四大AI编程工具本质差异:Claude Code(终端工程Agent)、Codex(OpenAI生态本地Agent)、Cursor(IDE内嵌Agent Harness)、OpenCode(开源多模型可定制平台),强调选型关键在匹配真实工作流,而非单纯比模型。
558 3
|
22天前
|
SQL 人工智能 关系型数据库
AI Agent 混合检索选型:阿里云 AnalyticDB MySQL 向量+全文一站式方案
阿里云AnalyticDB MySQL版是面向AI Agent/RAG场景的一站式混合检索数据库,原生支持向量检索+全文搜索+结构化查询,单SQL实现三合一。延迟<10ms,成本降60%+,开发提效3倍,显著优于Milvus+Elasticsearch多组件架构。
247 6
|
22天前
|
人工智能 弹性计算 开发者
2026年阿里云618大促云服务器选购指南:活动价格与省钱攻略
2026阿里云618大促开启!主题“AI加速季,智惠生产力”,轻量服务器低至38元/年,ECS实例99元起,叠加满减券至高减1728元。涵盖新人秒杀、企业专享、AI组合套餐,附选型指南与避坑攻略,助力大家低成本高效上云!
312 3
|
22天前
|
人工智能 运维 物联网
零门槛玩转 AI 生图:用阿里云函数计算一键部署 ComfyUI,5 分钟生成你的专属毛绒萌宠
阿里云函数计算推出一键部署ComfyUI方案,内置Flux模型与毛绒萌宠LoRA,支持超写实毛绒玩具风格AI生图。Serverless GPU按量付费、免运维、不开机不花钱,单张图低至0.02元,5分钟极速部署,零门槛体验前沿AIGC。
|
弹性计算 Serverless 数据库
2026年 | 5月云大使推广奖励规则
关联周期不分用户类型延至90天,购大模型/Agent产品可最长关联365天;老用户产品首购返利升至25%;单客户实付封顶20万元;后付费订单纳入返利;云大使企业认证亦可入驻。
|
22天前
|
人工智能 JSON 运维
阿里云百炼 + Qwen3.7 实战:手把手构建一个支持工具调用的 AI Agent
本文记录使用阿里云百炼平台+Qwen3.7-Max构建企业级AI运维助手的全过程:依托其原生Function Calling、128K上下文与多工具并行调用能力,实现稳定、合规、低成本的Agent落地,含完整代码、踩坑解析与成本实测。

热门文章

最新文章