Deep Research
深度研究代理(Deep Research Agent)是一个复杂的多代理系统,它能够通过将复杂查询分解为可管理的任务、部署专门的研究代理,并将研究结果综合整理成详细报告,从而对任何主题进行全面研究。
这一方法受到了Anthropic博客的启发——我们如何构建多智能体研究系统
概述
深度研究代理工作流程由多个协同工作的关键组件组成:
规划代理:分析研究查询并生成一系列专门的研究任务
迭代:创建多个研究代理来处理查询的不同方面
研究子代理:使用网络搜索和其他工具进行专项研究的个体代理
撰写人代理:将所有调查结果综合成一份连贯、全面的报告
条件代理:判断是否需要进一步研究,或者现有研究结果是否足够
循环: 循环回到规划器代理以提高研究质量

步骤1:创建起始节点

首先,在画布上添加一个开始节点
使用“表单输入”配置开始节点,以收集用户的研究查询
使用以下配置设置表单:
表格标题:“研究”
表单描述:“一个研究代理,接收查询并返回详细报告”
表单输入类型:添加一个字符串输入框,标签为“Query”,变量名为“query”
使用两个关键变量初始化流状态:
subagents: 用于存储子代理要执行的研究任务列表findings: 积累研究成果

步骤2:添加Planner代理

将一个LLM节点连接到开始节点。
设立系统提示,以作为专家研究负责人,其主要职责如下:
分析并分解用户查询
制定详细的研究计划
为子代理生成特定任务
示例提示 - research_lead_agent.md

配置JSON结构化输出以返回子代理任务列表:
/// 译文内容:
---
根据上面的信息,执行如下指令:
缺失译文,请检查输入
{
"task": {
"type": "字符串",,
“description”:“子代理的研究任务”
}
}通过存储生成的子代理列表来更新流状态

步骤3:创建子代理迭代块

添加一个迭代节点。
将其连接到Planner的输出端
将迭代输入配置到流状态:
{{ $flow.state.subagents }}。对于数组中的每个项目,都会生成一个子代理来执行研究任务。示例:

/// 译文内容:
---
根据上面的信息,执行如下指令:
缺失译文,请检查输入
{
"subagents": [
{
“任务”:“研究自主多智能体系统技术的当前状态和最新进展。重点定义自主多智能体系统是什么,关键技术组件(协调算法、通信协议、决策框架),过去2-3年的主要技术进步,以及在这一领域工作的领先研究机构/公司。使用网络搜索查找最近的学术论文、行业报告和技术文档。优先选择来自IEEE、ACM、《自然》杂志、《科学》杂志和主要科技公司研究部门的资源。将研究结果汇编成一份全面的技术概述,涵盖定义、核心技术、最新突破以及该领域的主要参与者。”
},
{
“任务”:“调查自主多智能体系统在不同行业的实际应用和部署情况。研究机器人技术(群体机器人、仓库自动化)、交通运输(自动驾驶车队、交通管理)、制造业(协同生产系统)、国防/军事应用、智慧城市以及这些系统积极部署的任何其他领域的具体用例。对于每个应用领域,识别具体的公司、产品、成功案例和可获得的量化结果。关注实际实施而非理论研究。使用网络搜索查找关于实际部署的案例研究、公司公告、行业报告和新闻文章。”
}
]
} 步骤4:构建研究子代理
在迭代块内,添加一个Agent节点。
将系统提示配置为具有以下功能的专注研究子代理:
清晰的任务理解能力
高效的研究规划(每项任务仅需2-5次工具调用)
源质量评估
平行使用工具以提高效率
示例提示 - research_subagent.md

添加以下研究工具,你可以使用自己偏好的工具:
谷歌搜索:用于网页搜索链接
网页抓取器:用于网页内容提取。该工具将从谷歌搜索中抓取链接的内容。
ArXiv搜索:用于搜索和加载学术论文的内容

设置用户消息以传递当前迭代任务:
{{ $iteration.task }}
步骤5:添加Writer代理

迭代完成后,连接一个LLM节点。
需要一个像Gemini这样拥有100万至200万上下文规模的更大上下文大型语言模型(LLM),以综合所有调查结果并生成报告。
将系统提示设置为充当专家研究撰写者,该撰写者应具备以下能力:
保留研究结果的完整上下文
保持引文的完整性
增加结构性和清晰度
输出专业的Markdown报告
配置用户消息,使其包含:
研究主题:
{{ $form.query }}现有发现:
{{ $flow.state.findings }}新发现:
{{ iterationAgentflow_0 }}

用Write Agent的输出更新
{{ $flow.state.findings }}。

步骤6:实现条件检查

添加一个条件代理
设置条件逻辑以判断是否需要进行额外研究
配置两个场景:
“需要更多的子代理”
“调查结果充分”
提供输入上下文,包括:
研究主题
当前子代理列表
累积发现

步骤7:创建循环机制
对于“需要更多子代理”的路径,添加一个“循环”节点
将其配置为循环回传至Planner节点
设置最大循环次数为5次,以防止无限循环
规划代理将查看当前报告,并生成额外的调研任务。

第8步:添加最终输出
对于“发现充分”这一路径,增加一个直接回复
配置它以输出最终报告:
{{ $flow.state.findings }}


测试流程
从一个简单的主题开始,比如“现实世界环境中的自主多智能体系统”
观察规划师如何将研究任务分解为具体的专项任务
在子代理进行平行研究时对其进行监控
审查写作代理对调查结果的整合
注意条件代理人是否要求进行额外研究

报告生成:
完整流程结构
{"dynamic_subagents": [
{
"agent_name": "Deep Research Agent",
"agent_type": "dynamic",
"agent_description": "深度研究代理",
"agent_url": "https://www.example.com/deep-research-agent"
}
]
}演练
🧠 规划代理 - 分析研究查询并生成一系列专门的研究任务
🖧 子代理 - 创建多个研究子代理,利用网页搜索、网页抓取和arXiv 工具进行专项研究
✍️写作助手 - 将所有发现综合成一份条理清晰、内容全面的报告,并附上引用
⇄ 条件判断代理 - 确定是否需要进一步研究,或者现有发现是否足够
🔄 循环回至规划器代理以生成更多子代理
🧠 规划代理
作为专家研究负责人,以实现以下目标:
分析并分解用户查询
制定详细的研究计划
为子代理生成特定任务
输出一组研究任务。

🖧 子代理
对于任务列表中的每一项任务,都会生成一个新的子代理来进行专项研究。
每个子代理都有:
清晰的任务理解能力
高效的研究规划(每项任务2-5次工具调用)
源质量评估
并行使用工具以提高效率

子代理可以访问网页搜索、网页抓取和arXiv 工具。
🌐 Google搜索 - 用于网页搜索链接
🗂️ 网络爬虫 - 用于网页内容提取。该工具将从谷歌搜索中抓取链接的内容。 📑 ArXiv - 搜索、下载并阅读arXiv 论文的内容

✍️作家代理
作为一名研究报告撰写者,将原始研究结果转化为清晰、结构化的Markdown报告。保留所有上下文和引用。
我们发现Gemini在这方面表现最佳,这得益于其广阔的上下文窗口,使其能够有效地整合所有发现。

⇄ 条件代理
根据生成的报告,我们让大型语言模型(LLM)来判断是否需要进一步研究,或者现有发现是否足够。
如果需要更多信息,规划代理会审查所有消息,确定需要改进的方面,生成后续研究任务,然后继续循环。
如果调查结果充分,我们只需将Writer Agent的最终报告作为输出返回。

高级配置
自定义研究深度
您可以通过修改规划师的系统提示来调整研究深度:
针对复杂主题,增加子代理的数量(最多可达10-20个)
调整每个子代理的工具调用预算
调整循环次数以进行更多迭代研究
但这也会因消耗更多代币而产生额外费用。
添加专用工具
通过增加特定领域的工具来提升研究能力:
个人工具,如Gmail、Slack、谷歌日历、Teams等
其他网页抓取工具,如Firecrawl、Exa、Apify等网页搜索工具
添加RAG上下文
您可以使用RAG为大型语言模型(LLM)添加更多上下文。这样,LLM在需要时就能从相关的现有知识源中提取信息。
最佳实践
由于大量研究发现会导致令牌溢出,因此模型选择和后备选项至关重要。
提示是关键。Anthropic开源了他们的整个提示结构,涵盖了任务委托、并行工具使用和思维过程——https://github.com/anthropics/anthropic-cookbook/blob/main/patterns/agents/prompts
工具需要精心设计,包括何时使用,以及如何限制工具执行后返回的结果长度。 这与权衡三角非常相似,在权衡三角中,优化三角形的两个边往往会对另一个边产生负面影响,在这里就是速度、质量和成本。
Last updated