LangChain DeepAgents子代理实战:复杂任务为何一定要交给SubAgent

2026年3月28日

51

968

LangChain DeepAgents子代理实战:复杂任务为何一定要交给SubAgent

在构建AI Agent系统时,许多开发者都会遇到一个棘手的问题:当任务变得复杂多样时,单一Agent往往会表现出“精神分裂“的症状——它可能在搜索资料中途开始分析,分析到一半又回头去搜索,最终输出的结果东一榔头西一棒槌,完全丧失了任务的方向性。这种现象的根源在于单一Agent需要同时处理多种类型的任务,其上下文窗口中堆积了搜索关键词、网页内容、分析思路、报告草稿等各类信息,导致模型难以聚焦,容易“串台“混淆不同阶段的内容。

概述

DeepAgents提出的解决方案简洁而有效:既然一个人同时处理多件事会混乱,那就让多个人分工合作,每个人专注于特定任务。这就是子代理系统的核心思想——通过将复杂任务分解为多个子任务,分配给专门的子代理执行,最终由主代理汇总结果。这种设计不仅解决了上下文混乱的问题,还带来了专业化分工和并行处理的双重优势。

三种子代理类型的应用场景

DeepAgents支持三种类型的子代理,分别对应不同的使用场景。SubAgent是最常用的声明式子代理,开发者只需声明配置参数,系统就会自动创建和管理。CompiledSubAgent则适用于需要复用现有Agent实现的场景,可以将已用LangGraph构建的复杂Agent挂载到主代理下作为子代理使用,要求返回的state中必须包含messages键。AsyncSubAgent支持异步执行和非阻塞调用,适用于执行时间较长的后台任务,它会暴露启动任务、查询状态、更新参数、取消任务等工具,使主代理能够在启动任务后继续处理其他工作。

子代理的价值,不在于“多几个Agent看起来更高级”,而在于它把复杂任务拆成了更稳的执行单元。

“AI科技评论”

task工具的设计艺术与状态隔离机制

在并行化方面,提示词明确鼓励主代理并行思考。当用户提出“比较A、B、C三个产品“这样的需求时,主代理应该同时生成三个子代理分别研究,而不是逐个执行。这是一个高级的提示工程技术——不是简单地告诉模型”你可以并行“,而是明确告知”你应该并行,因为这样性能更好”。状态隔离是子代理安全运行的关键。子代理不能访问主代理的内存,也不能污染主代理的上下文。通过_EXCLUDED_STATE_KEYS定义了哪些状态不能传给子代理,包括messages、todos、structured_response、skills_metadata和memory_contents。子代理启动时只获得一个干净的state,包含任务描述的消息。这类似于新员工接手任务时拿到的是清晰的目标清单,而非一堆混乱的历史记录。

实战:政策研究Agent的构建

以政策研究系统为例,演示子代理的实际应用。该任务天然适合拆分为多个子代理:研究子代理负责搜集资料、查阅法规、寻找案例;分析子代理负责对比不同国家的做法、分析利弊;写作子代理负责将研究结果整理成专业报告;审核子代理负责检查报告的质量、准确性和中立性。通过create_deep_agent创建主代理,配置各个子代理,并定义清晰的系统提示指导主代理按顺序委派任务。如果想进一步优化,研究阶段也可以并行执行——一个子代理研究欧盟法规,一个研究美国做法,一个研究中国做法,然后汇总给分析子代理。

如有侵权,请联系删除。

Related Articles

联系我们 预约演示
小墨 AI