Deep Research Agent 实战(一):架构设计与评估体系构建指南

嘿,大家好!最近是不是被各种强大的 Agent 应用刷屏了?你有没有想过,一个能进行『深度研究』的 Agent 到底是怎么构建的?

今天,我们就来一起拆解 LangGraph 官方推出的高质量课程《Deep Research from Scratch》,不卷代码,搞懂一个顶级 Research Agent 的架构设计与评估体系!

这个课程质量非常高,它只依赖了 Tavily 这一个外部工具(Tavily 是一个搜索工具),就实现了一个强大的深度研究 Agent。更棒的是,它教会我们的不仅仅是代码,更是其背后的提示词设计原则Agent 评估体系,含金量超高。

在这篇文章里,我会把课程的精华提炼出来,带大家一步步构建一个名为 “Fairy” 的研究助手。我希望 Fairy 能成为大家灵活定制的得力伙伴,就像一个更开放、更原生的 Claude Code。

准备好了吗?让我们开始吧!

深度研究 Agent 的整体蓝图

一个靠谱的深度研究 Agent,它的工作流程可以拆分为两大核心阶段:

Deep Research Agent 整体架构

你可能会问:为什么需要这样分层?

因为在真实的“深度研究”场景中,最难的往往不是“搜索”,而是“定义问题”。用户的初始需求通常是模糊的(比如“帮我研究下 AI”),直接开搜只会导致信息过载或方向跑偏。这个分层设计,就像一个智能过滤器,确保我们每一步都走在正确的路上。

整体的 Agent 工作流(Workflow)设计如下:

确定研究边界(Scoping)

在深度研究工作流程中,最大的挑战之一是用户在初始请求中很少提供足够的信息。请求通常缺少重要细节,直接执行往往事倍功半。

在这个模块,我们的核心目标是明确以下几点:

  1. 范围和边界:研究应该包括什么?明确排除什么?(例如:只研究2023年后的数据,或者只关注特定地区)。
  2. 受众和目的:这项研究是为谁而做的?目的是为了投资决策、学术研究还是科普?
  3. 具体要求:是否有特定的来源偏好、时间框架或格式限制?
  4. 术语澄清:用户提到的特定领域术语或缩写是什么意思?

在这个阶段,Agent 的策略是:不盲目假设

我们会构建一个运行图,包含 ClarifyWithUser(与用户澄清)和 Summary(生成摘要)等状态。

Deep Research Agent Scoping 流程

只有当这份研究简报确立后,Agent 才会进入消耗 token 较多的研究执行阶段。

研究执行 & 报告撰写(Execution)

一旦研究简报确定,我们就进入了研究执行阶段。这个阶段是一个动态的循环过程,主要由以下几个节点构成:

  1. LLM 决策节点:这是 Agent 的大脑。它分析当前收集到的信息(Context)和研究目标,决定下一步是继续搜索新的内容,还是已经收集了足够的信息可以结束研究。
  2. 工具执行节点:当 LLM 决定需要更多信息时,它会生成搜索关键词,并调用搜索工具(如 Tavily)。
  3. 研究压缩节点(Context Management):随着搜索的进行,网页内容会非常多,直接堆砌到 Context 中会导致 Token 爆炸且干扰模型判断。因此,我们需要一个“压缩节点”:
    • 网页内容摘要:对抓取到的网页内容进行即时摘要(Web Summary)。
    • 研究结果压缩:将全部的研究链路发现的信息进行压缩,剔除重复和无关信息。

Deep Research Agent Execution 流程

关于提示词的设计难点: 在这个阶段,最难的不是让 LLM 去搜索,而是控制工具调用的次数

因此,我们需要在 Prompt 中植入启发式策略,例如强制模型“展示你的思考过程”(Chain of Thought),并设置明确的停止条件(比如:当回答了所有关键问题且有数据支撑时)。

Agent 各模块的评估体系

构建 Agent 不难,难的是评估 Agent 的好坏。对于深度研究 Agent,我们需要建立一套基于大模型(LLM-as-a-Judge)的评估体系。

本次我们将评估拆分为两个部分:

  1. Scoping 评估:用户需求是否明确?澄清问题是否切中要害?
  2. Execution 评估:搜索路径是否合理?是否避免了过深或过浅的探索?

根据课程推荐,构建高质量的大模型评估器需要遵循如下几个原则:

  1. Role Definition with Expertise Context(具有专业知识上下文的角色定义)
    • 例如:“你是一个资深的研究简报审计员,专门负责审核研究大纲的完整性和可行性”。
  2. Clear Task Specification(明确的任务规范)
    • 尽量使用二元判断(Pass/Fail),因为模型在打分上往往不够稳定,而 Pass/Fail 的边界更清晰。
  3. Rich Contextual Background(丰富的背景信息)
    • 告诉评估器什么是“好”的研究简报。例如:一份好的简报必须包含明确的时间范围和目标受众。
  4. Structured XML Organization(结构化的 XML 组织)
    • 使用 XML 标签(如 <criteria>, <input>, <evaluation>)来隔离上下文,帮助模型解析复杂的指令。
  5. Comprehensive Guidelines with Examples(包含示例的全面指南)
    • 为每个评估标准提供 3-4 个具体案例,覆盖正面(Pass)和负面(Fail)以及边缘情况(Edge Cases)。
  6. Explicit Output Instructions(明确的输出指令)
    • 强制模型先输出“推理过程”,再输出“结论”。
  7. Bias Reduction Techniques(减少偏见的技巧)
    • 设定“严格但公平”的基调。告诉模型:“当存疑时,倾向于判定为 Fail”,以确保通过的内容确实是高质量的。

下面我们以实际的例子来说明应该定义什么样的评估器。

评估 Scoping 阶段 Agent 的执行效果:研究边界明确了吗?

针对“确定研究边界”阶段,我们构造一个评估器,专门检查生成的“研究简报”。

评估的目标是看,生成的简报是否足以指导后续的深度搜索?

然后测试集是一组用户和Agent的对话记录,然后由 Agent 生成的研究背景简报是测试的输出。

然后评估器基于测试集的参考答案和测试的输出,计算出评估结果。

在这里一共有两个关键指标:

如果 Agent 在这一步就生成了含糊不清的简报(例如:“研究一下 AI”),评估器应直接判定为 Fail,该Agent不合格。

评估 Execution 阶段 Agent 工具调用是否合理?

针对“执行研究”阶段,主要评估 Agent 的工具调用行为(Tool Calling Behavior)

常见的失败模式有:

  1. 早期终止(Premature Stop):Agent 仅仅搜索了一次,看着摘要觉得“差不多了”,就草草结案,导致报告缺乏深度。
  2. 持续循环(Infinite Loop):Agent 对现有信息永远不满足,反复搜索相似的关键词,陷入死循环。

评估器需要检查 Agent 的操作轨迹:

因此我们的测试集的输入是Agent研究的工具链路,然后测试输出是 Agent 的决定,是否还有继续做研究。

基于参考答案和测试的输出,我们可以计算出评估结果。Agent 是否能控制好恰到好处的停止搜索。

下一步计划

本次我们先讲了构建一个深度研究 Agent 的整体思路,包括业务流程的拆解,Agent 的各个模块所需要的提示词设计,以及每个模块的评估原则。但是还没有涉及到具体的实现方法。

其实我已经写了一个深度研究的 Demo 工程,地址是:

https://github.com/codemilestones/Fairy

里面的代码基本上是按照教程里 Scope 和 Research 两个阶段的实现,区别在于我把所有的提示词和代码注释都改写为了中文,方便大家阅读。

后面我们将继续深入这个工程,实际看看 深度研究 Agent 的实现效果。

如果你也对实际构造一个工业级的 Agent 感兴趣,欢迎关注我,我会继续分享更多关于 Agent 的实战经验。

参考资料

下面这些文章均是课程中所引用的,写的内容非常有启发性,推荐大家阅读。

[1] Deep Research from Scratch: https://github.com/langchain-ai/deep_research_from_scratch

[2] LLM Judge: https://hamel.dev/blog/posts/llm-judge/index.html

[3] Workflow and Agents: https://docs.langchain.com/oss/python/langgraph/workflows-agents#agent

[4] The "think" tool: https://www.anthropic.com/engineering/claude-think-tool

[5] Context engineering for agents: https://blog.langchain.com/context-engineering-for-agents/