Skip to main content
create_deep_agent 有以下核心配置选项:
完整参数列表请参阅 create_deep_agent API 参考。

模型

传入 provider:model 格式的 model 字符串,或已初始化的模型实例。查看支持的模型了解所有提供商,查看推荐模型了解经过测试的推荐方案。
使用 provider:model 格式(例如 openai:gpt-5.4)可快速在模型之间切换。
👉 Read the OpenAI chat model integration docs
Chat Model 会自动重试临时 API 故障(使用指数退避)。有关默认值、限制以及调整 max_retries / timeout 的代码示例,请参阅 LangChain 模型页面。

工具

除了用于规划、文件管理和子 Agent 派生的内置工具外,你还可以提供自定义工具:

系统提示词

Deep Agents 内置了系统提示词。Deep Agent 的价值来自 SDK 在模型之上提供的编排层——规划、虚拟文件系统工具和子 Agent——模型需要知道这些工具的存在以及何时使用它们。内置提示词教会 Agent 如何使用这些脚手架,因此你不需要在每个项目中重新推导;通过配置文件或你自己的 system_prompt= 来调整,而不是逐字复制。 当 Middleware 添加特殊工具(如文件系统工具)时,它会将工具追加到系统提示词中。 每个 Deep Agent 还应包含针对其特定用例的自定义系统提示词:

提示词组装

Deep Agents 从最多四个命名部分构建系统提示词,使得调用方提供的指令、SDK 内置的 Agent 指导和任何模型特定的配置文件覆盖可以以可预测的优先级共存。如果没有这种分层,针对 Claude 调优的配置后缀(例如)可能会根据调用顺序覆盖或被你的 system_prompt= 参数覆盖;命名槽使排序显式且稳定。 在实践中,大多数调用方只会遇到两个槽:USER(你的 system_prompt=)和 BASE(SDK 默认值)。选择带有内置配置的模型(目前是 Anthropic 或 OpenAI)会添加一个 SUFFIX。完整的四部分组装主要与你编写自定义 HarnessProfile 或调试配置文本出现位置时相关。 四个命名部分(每个可能不存在): 顺序始终为 USER -> (BASECUSTOM) -> SUFFIX,用空行(\n\n)连接。由此得出两个不变量:
  1. USER 始终在最前面。 调用方的文本先于任何 SDK 或配置内容,因此无论选择哪个模型,角色/指令都具有最高优先级。
  2. SUFFIX 始终在最后。 配置后缀最靠近对话历史,这是模型调优指导最可靠落地的位置。
组装形态(✓ = 已设置字段,- = 未设置字段): 实例——内置配置(Anthropic、OpenAI)仅提供 system_prompt_suffix,因此典型调用落在 str + - + 行:
传递 SystemMessage(而不是字符串)会触发不同的拼接路径:右侧组装(BASECUSTOM 加上任何 SUFFIX)作为额外的文本内容块追加到消息的现有 content_blocks 上。相同的逻辑排序适用(调用方的块在前),调用方块上的任何 cache_control 标记会被保留——这对于放置显式的 Anthropic Prompt 缓存断点很有用。
相同的覆盖规则适用于声明式子 Agent——每个子 Agent 针对自己的模型重新运行配置解析,然后将解析后的配置的 base_system_prompt / system_prompt_suffix 应用于其编写的 system_prompt。子 Agent 的 system_prompt 扮演 BASE 角色;CUSTOMSUFFIX 来自匹配子 Agent 模型的配置(可能与主 Agent 的配置不同)。子 Agent 没有 USER 段——规格中编写的 system_prompt 是最接近的类比,保留在 BASE 槽中。仅提供 system_prompt_suffix 的配置(内置 Anthropic / OpenAI 配置的常见情况)只是追加到子 Agent 作者编写的内容之后;设置 base_system_prompt 的配置会直接替换编写的提示词,因此请谨慎使用该字段。
自动添加的通用子 Agent 遵循相同的覆盖规则,但多了一层:GP 基础提示词的解析顺序为 general_purpose_subagent.system_prompt(如果设置)-> HarnessProfile.base_system_prompt(如果设置)-> SDK GP 默认值。配置后缀无论如何都会叠加在上面。这两个覆盖字段都可以承载基础提示词替换,但它们不可互换。general_purpose_subagent.system_prompt 是 GP 特定的配置;base_system_prompt 是主要针对主 Agent 的全局覆盖。当两者都设置时,GP 特定的意图对 GP 子 Agent 优先生效,这样同时调整两个字段的用户不会看到其 GP 覆盖被静默丢弃:
如果 general_purpose_subagent.system_prompt 未设置,GP 子 Agent 回退到 base_system_prompt(如果设置),最终回退到 SDK GP 默认值。

Middleware

Deep Agents 支持任何 Middleware,包括下面列出的内置 Middleware、LangChain 的预构建 Middleware、特定提供商的 Middleware,以及你自己编写的自定义 Middleware。将 Middleware 传递给 create_deep_agentmiddleware 参数。 默认情况下,Deep Agents 可以使用以下 Middleware: 如果你使用记忆、技能或人机协作,还会包含以下 Middleware:
  • MemoryMiddleware:当提供 memory 参数时,跨会话持久化和检索对话上下文
  • SkillsMiddleware:当提供 skills 参数时启用自定义技能
  • HumanInTheLoopMiddleware:当提供 interruptOn 参数时,在指定点暂停等待人工批准或输入

预构建 Middleware

LangChain 提供额外的预构建 Middleware,让你可以添加各种功能,如重试、回退或 PII 检测。参见预构建 Middleware 了解更多。 deepagents 库还暴露了 create_summarization_tool_middleware,使 Agent 能够在适当的时机触发摘要——例如在任务之间——而不是在固定的 Token 间隔。更多详情请参阅摘要

特定提供商 Middleware

有关针对特定 LLM 提供商优化的 Middleware,请参阅官方集成社区集成

自定义 Middleware

你可以提供额外的 Middleware 来扩展功能、添加工具或实现自定义钩子:
不要在初始化后修改属性如果你需要在钩子调用之间跟踪值(例如计数器或累积数据),请使用 Graph State。 Graph State 在设计上限定于线程作用域,因此在并发下更新是安全的。应该这样做:
不要这样做:
就地变更,如在 before_agent 中修改 self.x 或在钩子中更改其他共享值,可能导致微妙的 bug 和竞态条件,因为许多操作是并发运行的(子 Agent、并行工具和不同线程上的并行调用)。有关使用自定义属性扩展状态的完整详情,请参阅自定义 Middleware - 自定义状态 Schema。 如果你必须在自定义 Middleware 中使用变更,请考虑当子 Agent、并行工具或并发 Agent 调用同时运行时会发生什么。

解释器

使用解释器添加一个 eval 工具,在限定范围的 QuickJS 运行时中运行 JavaScript。当 Agent 需要以编程方式组合工具、批量处理工作、在代码中处理错误或转换结构化数据而不需要完整的 Shell 环境时,解释器非常有用。
有关设置、程序化工具调用、解释器技能和限制,请参阅解释器

子 Agent

要隔离详细工作并避免上下文膨胀,请使用子 Agent:
更多信息请参阅子 Agent

后端

Deep Agent 的工具可以使用虚拟文件系统来存储、访问和编辑文件。默认情况下,Deep Agents 使用 StateBackend 如果你使用技能记忆,你必须在创建 Agent 之前将预期的技能或记忆文件添加到后端。
线程作用域的文件系统后端,存储在 langgraph State 中。文件在同一线程内跨轮次持久化(通过 Checkpointer),不会跨线程共享。
更多信息请参阅后端

Sandbox

Sandbox 是专门的后端,在隔离环境中运行 Agent 代码,拥有自己的文件系统和用于 Shell 命令的 execute 工具。 当你希望 Deep Agent 写文件、安装依赖和运行命令而不影响本地机器时,使用 Sandbox 后端。 通过在创建 Deep Agent 时将 Sandbox 后端传递给 backend 来配置 Sandbox:
更多信息请参阅 Sandbox

人机协作

某些工具操作可能是敏感的,需要在执行前获得人工批准。 你可以为每个工具配置审批流程:
你可以在工具调用时以及工具调用内部为 Agent 和子 Agent 配置 Interrupt。 更多信息请参阅人机协作

技能

你可以使用技能为 Deep Agent 提供新的能力和专业知识。 虽然工具倾向于覆盖较低级别的功能,如原生文件系统操作或规划,技能可以包含关于如何完成任务的详细说明、参考信息和其他资产(如模板)。 这些文件仅在 Agent 确定该技能对当前 Prompt 有用时才由 Agent 加载。 这种渐进式披露减少了 Agent 在启动时需要考虑的 Token 和上下文量。 有关示例技能,请参阅 Deep Agents 示例技能 要将技能添加到 Deep Agent,将它们作为参数传递给 create_deep_agent

记忆

使用 AGENTS.md 文件为 Deep Agent 提供额外上下文。 创建 Deep Agent 时,你可以将一个或多个文件路径传递给 memory 参数:

配置文件

Harness 配置文件封装了按提供商或按模型的调整(系统提示词后缀、工具描述覆盖、排除的工具或 Middleware、额外 Middleware 和通用子 Agent 编辑),使 create_deep_agent 在选择匹配模型时自动应用它们。
参见配置文件了解注册键、合并语义和插件打包。更窄范围的配套 API 提供商配置文件封装了提供商的模型构造参数。

结构化输出

Deep Agents 支持结构化输出。 你可以通过将所需的结构化输出 Schema 作为 response_format 参数传递给 create_deep_agent() 来设置。 当模型生成结构化数据时,它会被捕获、验证并返回在 Deep Agent 状态的 ‘structured_response’ 键中。
更多信息和示例请参阅响应格式