【Agent】自动化深度研究智能体搭建
三个agent各司其职:TODO Planner(研究规划专家):负责将研究主题分解为子任务Task Summarizer(任务总结专家):负责总结每个子任务的搜索结果Report Writer(报告撰写专家):负责整合所有子任务的总结,生成最终报告四个核心服务,连接 Agent 和工具:PlanningService:调用规划 Agent,解析 JSON,验证格式SummarizationSer
note
- 三个agent各司其职:
- TODO Planner(研究规划专家):负责将研究主题分解为子任务
- Task Summarizer(任务总结专家):负责总结每个子任务的搜索结果
- Report Writer(报告撰写专家):负责整合所有子任务的总结,生成最终报告
- 四个核心服务,连接 Agent 和工具:
- PlanningService:调用规划 Agent,解析 JSON,验证格式
- SummarizationService:调用总结 Agent,处理搜索结果,提取来源
- ReportingService:调用报告 Agent,整合总结,生成报告
- SearchService:调度搜索引擎,处理结果,错误降级,结果缓存
- 通过 Vue 3 + TypeScript + SSE 的技术栈,我们实现了一个现代化的 Web 应用。前端交互设计:包括全屏模态对话框 UI、实时进度展示和研究结果可视化。
文章目录
一、实战部分
1、自动化深度研究智能体
让智能体具备三个核心能力:
(1)问题剖析:将用户的开放主题拆解为可检索的查询语句。
(2)多轮信息采集:结合不同搜索 API 持续挖掘资料,并去重整合。
(3)反思与总结:依据阶段结果识别知识空白,决定是否继续检索,并生成结构化总结。
项目文件目录结构:
helloagents-deepresearch/
├── backend/ # 后端代码
│ ├── src/
│ │ ├── agent.py # 核心协调器
│ │ ├── main.py # FastAPI入口
│ │ ├── models.py # 数据模型
│ │ ├── prompts.py # Prompt模板
│ │ ├── config.py # 配置管理
│ │ └── services/ # 服务层
│ │ ├── planner.py # 规划服务
│ │ ├── summarizer.py # 总结服务
│ │ ├── reporter.py # 报告服务
│ │ └── search.py # 搜索服务
│ ├── .env # 环境变量
│ ├── pyproject.toml # 依赖管理
│ └── workspace/ # 研究笔记
│
└── frontend/ # 前端代码
├── src/
│ ├── App.vue # 主组件
│ ├── components/ # UI组件
│ │ └── ResearchModal.vue
│ └── composables/ # 组合式函数
│ └── useResearch.ts
├── package.json # npm依赖
└── vite.config.ts # 构建配置
(1)架构设计
前后端分离:
四层架构设计:
前端层 (Vue3+TypeScript):全屏模态对话框 UI、Markdown 结果可视化
后端层 (FastAPI):API 路由(/research/stream)
智能体层 (HelloAgents):三个专门 Agent(TODO Planner、Task Summarizer、Report Writer)+ 两个核心工具(SearchTool、NoteTool)
外部服务层:搜索引擎+ LLM 提供商
通过四个核心服务(PlanningService、SummarizationService、ReportingService、SearchService),我们构建了一个完整的研究流程。这些服务各司其职,通过清晰的接口协作,实现了从研究主题到最终报告的自动化流程。
(2)一个完整的研究请求是如何在系统中流转

一个完整的研究请求是如何在系统中流转的:
用户输入:用户在前端输入研究主题
前端发送:前端通过 SSE 连接到/research/stream
后端接收:FastAPI 接收请求,创建研究状态
规划阶段:调用研究规划 Agent,分解为 3 个子任务
执行阶段:逐个执行每个子任务
- 使用 SearchTool 搜索
- 调用任务总结 Agent 总结
- 使用 NoteTool 记录结果
报告阶段:调用报告生成 Agent,整合所有总结
流式返回:通过 SSE 推送进度和结果到前端
前端展示:前端实时更新任务状态、进度条、日志、报告
任务总结专家:
task_summarizer_instructions = """
你是一个任务总结专家。你的任务是总结搜索结果,提取关键信息。
任务标题:{task_title}
任务意图:{task_intent}
搜索查询:{task_query}
搜索结果:
{search_results}
请仔细阅读以上搜索结果,提取关键信息,并以Markdown格式返回总结。
总结应该包含:
1. **核心观点**:搜索结果中的核心观点和结论
2. **关键数据**:重要的数字、日期、名称等
3. **来源引用**:为每个观点添加来源引用(使用[1]、[2]等标记)
请确保:
1. 总结简洁明了,避免冗余
2. 保留重要的细节和数据
3. 为每个观点添加来源引用
4. 使用Markdown格式(标题、列表、加粗等)
示例输出:
## 核心观点
多模态模型是一种能够处理多种类型数据的AI模型[1]。与传统的单模态模型不同,多模态模型可以同时理解文本、图像、音频等[2]。
**关键特点:**
- 跨模态理解[1]
- 统一表示[3]
- 端到端训练[2]
## 来源
[1] https://example.com/source1
[2] https://example.com/source2
[3] https://example.com/source3
"""
(3)TODO驱动研究-设计思想
1、todo驱动的研究:将"研究"这个复杂任务转化为"规划→执行→整合"的流程。
举例:
用户输入:Datawhale是一个什么样的组织?
系统规划:
├─ TODO 1:Datawhale的基本信息(组织定位)
├─ TODO 2:Datawhale的主要项目(核心内容)
├─ TODO 3:Datawhale的社区文化(价值观)
└─ TODO 4:Datawhale的影响力(社会贡献)
系统执行:
对每个TODO:
1. 搜索相关资料
2. 总结关键信息
3. 记录来源引用
系统整合:
生成结构化报告:
├─ 第一部分:组织定位(来自TODO 1)
├─ 第二部分:核心内容(来自TODO 2)
├─ 第三部分:价值观(来自TODO 3)
├─ 第四部分:社会贡献(来自TODO 4)
└─ 参考文献:所有来源引用
2、一个完整的 TODO 驱动研究系统包含三个核心要素:
(1)智能规划器(TODO Planner):负责将研究主题分解为子任务。一个好的规划器需要理解主题的关键方面和研究目标,将主题分解为 3-5 个子任务(太少覆盖不全,太多会冗余),并为每个子任务设计合适的搜索查询。
具体:每个子任务包含三个字段:title(任务标题)、intent(研究意图)和 query(搜索查询)。
(2)任务执行器(Task Executor):负责执行每个子任务。执行器需要使用搜索引擎获取相关资料,提取关键信息并去除冗余内容,同时保存所有来源引用以方便验证。
具体:系统接收子任务列表和搜索引擎配置作为输入,输出每个子任务的总结(Markdown 格式)和来源引用列表。
- 搜索资料:使用配置的搜索引擎执行搜索
- 获取搜索结果:提取标题、URL、摘要
- 调用总结 Agent:总结搜索结果
- 记录总结和来源:保存到
NoteTool
(3)报告生成器(Report Writer):负责整合所有子任务的结果。生成器需要按照逻辑顺序组织内容,合并重复的信息,并为每个观点添加来源引用。
具体:报告生成 Agent 会按照子任务的逻辑顺序组织内容,在开头添加简要概述,合并重复的信息,统一 Markdown 格式,并将所有来源引用整理到参考文献部分。

3、多agent协作模式:
(1)SimpleAgent的设计理念是简单直接:每次调用run()方法时,Agent 会分析用户的问题,决定是否需要调用工具,然后返回结果。这种设计在处理简单任务时非常有效,但当面对深度研究这样的复杂任务时,就需要我们继续采用多智能体协作的方案进行。

(2)扩展了 HelloAgents 框架的SimpleAgent,实现了ToolAwareSimpleAgent。这个 Agent 具有工具调用监听能力,可以:
监听工具调用:通过回调函数监听每次工具调用
实时反馈:将工具调用信息实时推送给前端
调试支持:记录所有工具调用,便于调试
使用ToolAwareSimpleAgent来记录所有 Agent 的工具调用。所有 Agent 的工具调用都会被记录,并通过 SSE 推送到前端,实时显示给用户。
(3)Agent 协作模式:
4、四个核心服务,连接 Agent 和工具:
PlanningService:调用规划 Agent,解析 JSON,验证格式
SummarizationService:调用总结 Agent,处理搜索结果,提取来源
ReportingService:调用报告 Agent,整合总结,生成报告
SearchService:调度搜索引擎,处理结果,错误降级,结果缓存
(4)工具系统集成
1、SearchTool 扩展:扩展了SearchTool的能力,新增了 DuckDuckGo、Perplexity、SearXNG 等搜索引擎,并实现了 Advanced 模式(组合多个搜索引擎)
2、NoteTool:持久化研究进度。用于创建、读取、更新和删除笔记。
3、ToolRegistry工具管理:HelloAgents 框架的工具注册表,用于管理所有工具的注册和调用。在深度研究助手中,我们使用ToolRegistry来管理SearchTool和NoteTool。
(5)前端交互设计
设计了用户友好的前端界面:
- 全屏模态对话框:沉浸式体验,清晰的层次
- SSE 实时进度:实时展示研究进度,用户体验良好
- Markdown 可视化:美观的格式,清晰的结构
通过 Vue 3 + TypeScript + SSE 的技术栈,我们实现了一个现代化的 Web 应用。
前端交互设计:包括全屏模态对话框 UI、实时进度展示和研究结果可视化。
深度研究助手采用全屏模态对话框的 UI 设计,这种设计有以下优势:
- 沉浸式体验:全屏显示,避免干扰,专注于研究
- 清晰的层次:主页面和研究页面分离,层次清晰
- 易于关闭:点击关闭按钮或按 ESC 键即可返回主页面
- 响应式设计:适配不同屏幕尺寸

启动前端和后端服务后,可以输入query看任务清单一个个完成的过程:
Reference
[1] https://datawhalechina.github.io/hello-agents
[2] 前后端分离遇到CORS问题的解决办法
更多推荐


所有评论(0)