Deep Agents

深度代理

3 分钟阅读

使用 LLM 在循环中调用工具是代理的最简单形式。然而,这种架构可能产生“肤浅”的代理,无法对更长、更复杂的任务进行规划和行动。像“Deep Research”、“Manus”和“Claude Code”这样的应用程序通过结合四种要素来克服这一限制:规划工具、子代理、文件系统访问和详细的提示。

致谢:这项探索主要受到 Claude Code 和人们使用它的不只是编码的报告的启发。Claude Code 何以成为通用工具,我们能否将其特性抽象化并推广?

现有的深度代理

占主导地位的代理架构也是最简单的:在循环中运行,调用工具。

然而,粗略地执行此操作会导致代理变得有些肤浅。“肤浅”在这里指的是代理在更长的时间跨度内无法规划和执行更复杂的任务。

研究和编码已成为代理能够打破这一趋势的两个领域。所有主要的模型提供商都提供用于深度研究和“异步”编码任务的代理。许多初创公司和客户正在为其特定领域创建这些代理的版本。

我将这些代理称为“深度代理”,因为它们能够深入研究主题。它们通常能够规划更复杂的任务,并在更长的时间跨度内执行这些目标。

是什么让这些代理擅长深入研究?

核心算法实际上是相同的——它是一个在循环中运行并调用工具的 LLM。与易于构建的粗略代理相比,区别在于

  • 详细的系统提示
  • 规划工具
  • 子代理
  • 文件系统

深度代理的特征

详细的系统提示

Claude Code 的重写系统提示很长。它们包含如何使用工具的详细说明。它们包含在某些情况下如何表现的示例(少样本提示)。

Claude Code 并非特例——大多数最好的编码或深度研究代理都拥有相当复杂的系统提示。没有这些系统提示,代理的深度将大打折扣。提示仍然很重要!

规划工具

Claude Code 使用待办事项列表工具。有趣的是——这个工具什么都不做!它基本上是一个无操作。它只是一个上下文工程策略,用于让代理保持正轨。

深度代理在执行复杂任务和跨越更长的时间跨度方面表现更好。规划(即使是通过无操作工具调用完成的)是其中的重要组成部分。

子代理

Claude Code 可以生成子代理。这允许它拆分任务。您还可以创建自定义子代理以获得更多控制权。这允许实现“上下文管理和提示快捷方式”

深度代理能够更深入地研究主题。这在很大程度上是通过生成专门专注于单个任务的子代理来实现的,并允许这些子代理在这些任务上深入研究。

文件系统

Claude Code(显然)可以访问文件系统并对其进行修改,不仅是为了完成任务,还可以记录笔记。它还充当所有代理(和子代理)协作的共享工作区。

Manus 是另一个深度代理的例子,它大量使用文件系统作为“记忆”。

深度代理运行时间长,积累大量需要管理的上下文。方便使用文件系统来存储(然后再读取)对于做到这一点很有帮助。

构建您的深度代理

为了让每个人都能更轻松地为自己的特定领域构建深度代理,我在周末对一个开源包(deepagents)进行了开发。您可以使用 pip install deepagents 轻松安装它,然后在此处阅读有关如何使用它的说明。在此处

该包旨在创建一个通用的深度代理,可以对其进行自定义以创建您自己的自定义版本。

它带有映射到上述特征的内置组件

  • 受 Claude Code 启发的系统提示,但已修改为更通用
  • 一个无操作的待办事项列表规划工具(与 Claude Code 相同)
  • 生成子代理的能力,以及指定您自己的子代理
  • 一个“虚拟文件系统”模拟器,它使用代理的状态(LangGraph 的一个现有概念)

通过传入自定义提示(将作为自定义指令插入到更大的系统提示中)、自定义工具和自定义子代理,您可以轻松创建自己的深度代理。我们构建了一个基于 deepagents 的简单“深度研究”代理示例。“深度研究”代理

在此处尝试 deepagents

© . This site is unofficial and not affiliated with LangChain, Inc.