Deep Agents:通过子代理与技能构建高效多智能体应用
内容评分
摘要
Deep Agents 框架提供了一种构建高效多智能体应用的新范式,核心在于子代理(Subagents)和技能(Skills)两大机制。子代理通过将复杂任务分解并隔离上下文,有效解决了大型语言模型在多步骤任务中常见的“上下文膨胀”问题,避免智能体陷入“哑区”,并支持并行处理与异构模型集成。技能机制则允许系统按需逐步向智能体披露所需功能,实现灵活的功能管理。文章详细阐述了子代理的适用场景、创建方法及最佳实践,并介绍了技能的配置方式,强调了两者结合使用的强大潜力。通过这些抽象层,开发者能更有效地构建可扩展、高性能的AI系统。
正文
将复杂任务拆解为多个专业协同处理,是构建高效AI系统的核心策略之一。Deep Agents 框架通过以下两种核心机制实现这一目标:
1. 子代理(Subagents):将任务委托给独立的来执行。 2. 技能(Skills):根据需要逐步向披露所需的功能和指令。
本文将深入探讨如何利用 Deep Agents 框架来构建强大的多系统。
使用子代理:专门化的、独立的执行者
子代理机制旨在解决设计中的一个关键挑战——上下文膨胀(context bloat)。当执行任务时,其上下文窗口会逐渐被大量信息填满,导致处理效率显著下降。
为什么这很重要? 研究表明,随着上下文窗口的扩大,模型完成任务的难度会增加(参考:Chroma 的相关研究)。HumanLayer 将这种高上下文负载状态形象地称为“哑区”(dumb zone)。子代理通过将特定任务的上下文与主隔离,有效避免主过早陷入这种状态。
示例: 例如,当主执行大量搜索或文件读取操作时,其上下文窗口会迅速被中间结果填满。而子代理则利用独立的上下文窗口完成这些任务,主只需接收最终的精炼结果,无需关注具体的执行细节。
子代理的基本架构如下: (此处可插入子代理的架构图,原文未提供)
子代理的适用场景:
- 多步骤复杂任务:有效避免主上下文混乱,例如在代码库探索场景中。
- 特定领域工具或流程:不同团队可开发专注于特定领域的子代理,实现专业化分工。
- 异构模型需求:子代理可选用与主不同的模型,例如选择更轻量级模型以优化延迟和成本。
- 并行处理能力:子代理可并行执行任务并将结果汇总至主,显著提升整体效率。
创建子代理
子代理可通过字典形式定义,并通过 create_deep_agent() 函数创建:
from deepagents import create_deep_agent
research_subagent = {
"name": "research-agent",
"description": "用于深入研究问题",
"system_prompt": "你是一位出色的研究员",
"tools": [internet_search],
"model": "openai:gpt-4o" # 可选:覆盖主智能体的模型
}
agent = create_deep_agent(
model="claude-sonnet-4-5-20250929",
subagents=[research_subagent]
)
(配置详情请参考 文档)
内置通用子代理
Deep Agents 内置了一个名为 “general-purpose” 的子代理,它具备与主相同的功能和配置。适用于无需特殊行为的通用任务场景。
示例:
主可将通用任务委托给内置的通用子代理(例如:task(name="research quantum computing trends")),由其完成所有搜索并仅返回精炼摘要。
子代理使用最佳实践
- 清晰的描述:为主提供明确的子代理功能描述,以便其准确选择。
- 详尽的功能说明:明确子代理的工具使用方法及预期输出格式。
- 精简工具集:仅为子代理配置其完成任务所需的最小工具集合。
使用技能:逐步披露功能
技能机制允许系统根据任务需求,按需向逐步披露特定功能。例如,通过在 SKILL.md 文件中定义技能的名称和描述,仅在实际需要时才动态加载相关功能。
技能的配置与应用:
技能遵循 agentskills.io 规范进行定义和管理。每个技能文件包含元数据和功能描述。
模式选择策略: 根据任务需求灵活选择使用子代理或技能。在许多实际系统中,子代理和技能常被结合使用:子代理负责执行复杂的多步骤任务,而技能则用于按需提供必要的功能支持。
深入探索: 深入了解 Deep Agents 中的多模式(文档链接:
总结与展望: 多模式并非遥不可及的复杂概念。通过引入合适的抽象层(如中间件和工具调用机制),它们能够成为构建高效、可扩展AI系统的基石。建议从利用子代理进行上下文有效管理入手,再逐步引入技能机制以实现功能的按需动态披露。