Google开发者教程:用ADK将单智能体重构为多智能体系统,加入Reddit趋势监测工具
Google AI Developers发布系列教程第二篇,演示通过Agent Development Kit(ADK)构建“Manager”编排智能体,指挥Google搜索与Reddit两个专业子智能体协同工作。
AI解读:这篇教程的价值在于展示了从单智能体升级到多智能体系统的具体路径,而不仅是概念讲解。作者Shir Meir Lador以实际项目为例:先构建一个能搜索网页的单智能体,然后将其重构为一个“Manager”编排智能体,指挥专注于Google搜索和Reddit社区的两个子智能体。关键在于,Reddit子智能体使用了一个从Python函数自定义的工具search_hot_reddit_posts,它调用praw库读取指定subreddit的热门帖子,并按分数过滤。这意味着开发者无需等待官方工具,可以直接把任意Python函数变成ADK智能体的能力。教程还强调通过Trace视图调试多智能体协作过程。对正在用ADK开发复杂应用的开发者来说,这篇教程提供了可复用的架构模式:什么时候该拆分子智能体、如何写编排提示词来委派任务,以及如何确保每个子智能体的输出格式稳定,以便被其他智能体读取。不过教程仍是入门级别,未涉及生产环境的性能优化或大规模并发场景。
Google AI Developers于2025年6月发布系列教程第二篇,作者Shir Meir Lador展示了如何用开源的Agent Development Kit(ADK)将上一篇文章中的单个“Trend Spotter”智能体重构为多智能体系统。新系统由一个“Manager”编排智能体指挥两个专业子智能体:一个使用Google搜索,另一个使用自定义Reddit工具,用于收集开发者社区的实时讨论。文中称,该架构是“解锁智能体全部潜能的关键”。
多智能体架构与实现步骤
教程的目标是构建一个“Trend Spotter”智能体,为名为“The Agent Factory”的播客生成关于AI智能体发展趋势的报告。上一篇文章中的单智能体只能搜索网页;新版本加入了对Reddit开发者社区(如r/LocalLLaMA、r/MachineLearning)的监测能力。教程分为五个步骤:获取Reddit API凭据、创建项目文件夹、构建两个专业子智能体、构建主编排智能体、运行系统。
Google搜索子智能体(google_search_agent)直接实例化ADK的Agent类,模型为“gemini-2.5-pro-preview-05-06”,配备google_search工具,并使用结构化提示词控制输出格式(要求返回标题、链接和摘要列表)。Reddit子智能体(reddit_agent)使用一个自定义工具search_hot_reddit_posts,该工具由普通Python函数写成,调用praw库读取指定subreddit的热门帖子,并可按分数过滤(示例中过滤条件为score > 5)。
主编排智能体是一个LlmAgent,名为“TrendSpotterOrchestrator”,它将两个子智能体包装成AgentTool作为自己的工具。编排提示词要求它首先通过Google搜索获取当前日期,然后计算过去7天的日期范围,分别委派Google搜索子智能体检索新闻和教程、Reddit子智能体抓取开发者讨论,最后综合生成固定格式的周报(包含Top 5趋势、Top 5发布和Top 5问题,每个条目需附来源URL)。文章强调,同时出现在多个来源的主题应优先处理。运行方式与单智能体相同,使用adk web命令启动界面,可在“Events”标签中观察编排智能体与子智能体的交互,并用Trace视图调试。
配置环境与部署限制
教程要求Python 3.11及以上,并需配置Google Cloud环境变量以使用Vertex AI和Google Search(GOOGLE_GENAI_USE_VERTEXAI、GOOGLE_CLOUD_PROJECT、GOOGLE_CLOUD_LOCATION)。Reddit API凭据需用户在Reddit应用页面自行申请,并设置为环境变量REDDIT_CLIENT_ID、REDDIT_CLIENT_SECRET和REDDIT_USER_AGENT。文中将凭据存储为环境变量是出于安全考虑。
部署部分延续第一篇文章的方法:使用adk deploy cloud_run命令将代码部署到Google Cloud Run,并可用--with_ui参数附带界面。运行环境要求已认证gcloud。文章没有给出部署后的性能数据或生产环境建议。
- Google搜索子智能体命名变量为google_search_agent,但文中代码注释示例文件名有误(写为“Google Search_agent.py”),正文以实际代码为准。
- Reddit工具默认每个subreddit取5条热帖,过滤条件为score > 5,返回标题和URL列表。
- 编排智能体的报告模板固定为三节,每节最多5项,每项需包含简要解释、“开发者影响”分析和可验证的源URL;找不到源链接的条目将被丢弃。
- 教程的示例输出是模拟结果,其中部分来源URL标注为“示例”,并非实际搜索结果。