当前位置: 首页 > article >正文

LangChain DeepAgents 速通指南(六)—— DeepAgents SubAgent 子智能体机制

前言上篇文章《LangChain DeepAgents 速通指南五—— 快速了解DeepAgents框架及其核心特性》介绍了 DeepAgents 在任务规划、上下文管理、子智能体并行执行等方面的强大能力仅需少量代码即可构建出复杂的智能体。上篇的案例演示也展示了一个有趣的现象即便没有明确定义子智能体DeepAgents 也能自行创建并执行子智能体。这种自动行为在简单任务场景下非常实用。不过当面对更复杂的任务时更好的做法是主动定义好各个子智能体以及它们之间的协同方式。为此DeepAgents 提供了完善的子智能体功能支持。本期分享笔者就和大家一起深入探讨 DeepAgents 的子智能体系统它到底是什么如何创建以及在什么场景下该使用它一、子智能体的核心价值1.1 为什么需要子智能体参与上期文章提到DeepAgents 实现了 LangChaincreate_agent从简单到复杂应用的华丽升级。而子智能体功能正是 DeepAgents 框架的核心能力之一。在构建复杂的智能体应用时大家常常面临一个难题随着任务步骤增多单一智能体的上下文会变得臃肿不仅影响性能还容易让模型“迷失”在细节中。对此DeepAgents 给出的解决方案之一就是引入子智能体。在 DeepAgents 中主智能体可以将任务委派给各个子智能体这样做有两个明显的好处保持主智能体的上下文清爽—— 子任务的执行细节不会挤占主智能体的上下文 token 窗口实现了上下文的隔离。子智能体更专注—— 每个子智能体只负责某一特定职责配合针对性的工具可以显著提升任务执行的效率与成功率。当构建一个 DeepAgent 时除了配置主智能体的模型和工具还可以为其配备各种职责的子智能体而每个子智能体要配置与其职责相对应的工具。1.2 DeepAgents 子智能体的执行原理DeepAgents 在构建时会自动注入一个名为task的工具该工具负责选择合适的子智能体去执行某项任务。子智能体的上下文与主智能体完全隔离——子智能体的中间执行过程不会暴露给主智能体只将最终结果传递给主智能体。这就保证了主智能体的上下文中不包含过多不必要的子任务细节使其能够更专注于高层的任务协调与规划。大家不妨回忆一下上期文章《LangChain DeepAgents 速通指南五—— 快速了解DeepAgents框架及其核心特性》中的案例主智能体使用task工具调用两个子智能体分别去搜集伊朗和美国的情况得到结果后主智能体只需对结果进行总结提炼即可。二、DeepAgents 子智能体的创建与配置方式DeepAgents 作为一款便捷高效的深度智能体搭建框架提供了两种创建子智能体的方式能够满足从快速原型验证到精细定制开发的不同需求。方法一基于字典的基本创建首先创建模型与工具对象。这里同样使用 DeepSeek 模型并创建一个模拟网络搜索的工具。fromdotenvimportload_dotenvfromdeepagentsimportcreate_deep_agentfromlangchain_core.toolsimporttoolfromlangchain_deepseekimportChatDeepSeek load_dotenv()tooldefinternet_search():print(模拟网络搜索功能)modelChatDeepSeek(modeldeepseek-chat,)使用 Python 字典形式配置子智能体SubAgent包括name、description、system_prompt和tools等字段。其中name是子智能体的名字description非常重要主智能体会通过它了解每个子智能体的功能system_prompt用于让子智能体明确自身的职责tools则用于为每个子智能体配备针对性的工具。除了这些必备参数还有一些可选参数model可以为该子智能体单独配置模型若不配置则默认与主智能体使用同一模型middleware用于为子智能体配置所需的中间件interrupt_on用于为子智能体配置“人在回路”机制。这些与普通 Agent 的创建方式相同这里不再赘述。internet_subagent{name:internet_agent,description:实用网络工具从网络中搜索信息,system_prompt:你是一个网络搜索智能体擅长从网络中搜索主智能体需要的关键信息,tools:[internet_search],model:model}最后将配置好的子智能体列表传入create_deep_agent函数即可完成智能体的创建。agentcreate_deep_agent(modelmodel,subagents[internet_subagent])方法二编译后的子智能体大家很多时候已经使用langchaincreate_agent创建了很多子智能体要想把这些子智能体有机结合起来解决复杂任务当然也可以使用DeepAgent。当遇到更灵活、更具定制性的需求时可以先通过标准的create_agent函数在外部创建一个子智能体对象参数配置与大家熟悉的 LangChaincreate_agent方式完全相同。fromdotenvimportload_dotenvfromdeepagentsimportcreate_deep_agent,CompiledSubAgentfromlangchain_core.toolsimporttoolfromlangchain_deepseekimportChatDeepSeekfromlangchain.agentsimportcreate_agent load_dotenv()tooldefinternet_search():print(模拟网络搜索功能)modelChatDeepSeek(modeldeepseek-chat,)custom_agentcreate_agent(modelmodel,tools[internet_search],system_prompt你是一个网络搜索智能体)为创建好的智能体通过CompiledSubAgent编译为子智能体并为该子智能体添加名称与描述以确保主智能体能够理解其职责。research_subagent{name:research-agent,description:用于深度搜索网络信息,system_prompt:你是一个网络搜索大师可以调用网络搜索工具搜索用户想了解的内容,tools:[internet_search],}summary_agentcreate_agent(modelmodel,system_prompt你用来根据现有资料总结并提供用户想要的短篇报告)summary_subagentCompiledSubAgent(namesummary-agent,description用来根据提供的新闻或搜索信息编写短篇报告500字以内,runnablesummary_agent)最后将编译好的子智能体对象传入主智能体。agentcreate_deep_agent(modelmodel,subagents[custom_subagent])这种方式可以实现更精细的自定义比如为子智能体单独配置回调、检查点等高级功能。三、DeepAgents 子智能体实战要充分掌握 DeepAgents 子智能体的开发方法动手实践是最好的途径。笔者将通过一个名为“国际情报分析师”的小 Demo带大家掌握 DeepAgents SubAgent 功能的使用方法。1. 下载依赖包本项目会用到tavily搜索工具。在deepagents环境目录下执行pip install tavily-python安装 Tavily 搜索依赖同时将 Tavily 官网上注册的 API Key 填入项目文件夹下的.env环境文件中。关于 Tavily 搜索工具的注册与使用可以参考笔者的文章《深入浅出 LangChain AI Agent 智能体开发教程六——两行代码 LangChain Agent API 快速搭建智能体》。2. 导入依赖包定义模型和搜索工具importosfromtypingimportLiteralfromdotenvimportload_dotenvfromdeepagentsimportcreate_deep_agent,CompiledSubAgentfromlangchain_core.toolsimporttoolfromlangchain_deepseekimportChatDeepSeekfromlangchain.agentsimportcreate_agentfromtavilyimportTavilyClient load_dotenv()tavily_clientTavilyClient(api_keyos.getenv(TAVILY_API_KEY))modelChatDeepSeek(modeldeepseek-chat,)tooldefinternet_search(query:str,max_results:int5,topic:Literal[general,news,finance]general,include_raw_content:boolFalse,):使用 Tavily API 执行互联网搜索获取实时或最新的网络信息。 当需要回答需要当前新闻、最新数据或超出模型知识范围的外部信息时 可以使用此工具进行联网搜索。支持普通网页搜索、新闻搜索和金融领域搜索。 Args: query (str): 要搜索的问题或关键词应清晰、具体地描述所需信息。 max_results (int, optional): 返回的最大搜索结果数量。默认为 5。 topic (Literal[general, news, finance], optional): 搜索主题类型。 - general通用网页搜索适用于大部分事实性、常识性问题。 - news新闻搜索获取近期相关新闻报道。 - finance金融领域搜索适用于股票、经济、公司财务等信息。 默认为 general。 include_raw_content (bool, optional): 是否在结果中包含原始网页正文内容。 设为 True 会返回更详细的页面文本可能较长默认为 False。 Returns: dict: Tavily API 返回的搜索结果对象。通常包含以下字段 - results: 列表每个元素包含 title、url、content摘要等。 - query: 原始查询字符串。 - 若 include_raw_content 为 True还可能包含 raw_content 字段。 returntavily_client.search(query,max_resultsmax_results,include_raw_contentinclude_raw_content,topictopic,)3. 编写搜索子智能体和总结分析智能体这里分别使用基于字典创建与编译子智能体两种方法。research_subagent{name:research-agent,description:用于深度搜索网络信息,system_prompt:你是一个网络搜索大师可以调用网络搜索工具搜索用户想了解的内容,tools:[internet_search],}summary_agentcreate_agent(modelmodel,system_prompt你用来根据现有资料总结并提供用户想要的短篇报告)summary_subagentCompiledSubAgent(namesummary-agent,description用来根据提供的新闻或搜索信息编写短篇报告500字以内)4. 创建 DeepAgent 智能体并传入子智能体agentcreate_deep_agent(modelmodel,subagents[research_subagent,summary_subagent])5. 执行任务并观察输出不知道大家最近有没有和笔者一样每天都在为“朗哥”与“老美”的对抗而揪心今天笔者就通过一个任务来论证“伊朗必胜美国必败”的原因。格式化输出的程序与上篇文章《LangChain DeepAgents 速通指南五—— 快速了解 DeepAgents 框架及其核心特性》中的一致这里不再赘述step_num0query请分析2026年4月3日伊朗和美国战事的情况并撰写短篇报告分析为什么美国注定失败500字以内的报告foreventinagent.stream({messages:[{role:user,content:query}]},stream_modevalues):...6. 观察执行结果首先主智能体将任务分配给子智能体进行查询并总结结果信息搜集完成后主智能体调用了另一个子智能体来撰写报告最终撰写的报告分析了美国必定失败的原因——只能说“朗哥”厉害四、子智能体适用场景 vs. 不适用场景子智能体能够有效解决上下文膨胀问题将子任务中的局部冗余信息与主任务流程隔离开来。它主要适用于以下场景多步骤任务—— 避免单一智能体的上下文变得杂乱。专业领域—— 需要特殊说明或使用特定工具的子任务。多模型混合—— 需要综合使用不同模型以提升整体性能。高层协调—— 希望主智能体更专注于规划与协调而非执行细节。但子智能体也不是万能的。以下场景不建议使用简单的单步任务—— 引入子智能体反而会增加复杂度和开销。依赖中间细节—— 如果任务的最终完成高度依赖中间步骤的大量详尽信息上下文的隔离会导致关键信息丢失。成本敏感任务—— 由于子智能体的上下文完全独立主智能体中的一些历史信息可能会在子智能体中被重复获取从而导致不必要的成本增加。注意任何 DeepAgents 对象在创建后内部都已默认配备了一个名为general_purpose的子智能体。这个默认子智能体共享与主智能体完全相同的模型、工具和系统提示词。这既解释了上期文章《LangChain DeepAgents 速通指南五—— 快速了解DeepAgents框架及其核心特性》中“未传入子智能体也能并行调用子智能体完成任务”的现象也提醒大家对于每一个你自定义的 SubAgent其description字段必须写得清晰明确否则主智能体可能会错误地选择默认的通用子智能体而不是你期望的那一个。以上就是本期分享的全部内容本文的全部代码可关注笔者的同名微信公众号大模型真好玩每期分享涉及的代码均可在公众号私信:LangChain智能体开发免费获取。五、总结本期分享了DeepAgents的子智能体机制子智能体机制通过上下文隔离与职责分离有效解决复杂任务中的上下文膨胀问题。本文介绍了两种创建方式字典配置与编译子智能体并通过实战案例展示了搜索与报告撰写分工。合理使用子智能体能提升效率但简单任务或成本敏感场景需谨慎确保务必为每个子智能体配置清晰的description~。下期内容笔者将分享DeepAgents的流式输出机制学会流式输出机制大家就可以合理的控制智能体系统后端的输出敬请期待本系列相关内容均列于笔者的专栏《深入浅出LangChainLangGraph AI Agent 智能体开发》该专栏适合所有对 LangChain 感兴趣的学习者无论之前是否接触过 LangChain。该专栏基于笔者在实际项目中的深度使用经验系统讲解了使用LangChain/LangGraph如何开发智能体目前已更新 43 讲并持续补充实战与拓展内容。欢迎感兴趣的同学关注笔者的CSDN账号与专栏也可关注笔者的同名微信公众号大模型真好玩每期分享涉及的代码均可在公众号私信: LangChain智能体开发免费获取。

相关文章:

LangChain DeepAgents 速通指南(六)—— DeepAgents SubAgent 子智能体机制

前言 上篇文章《LangChain DeepAgents 速通指南(五)—— 快速了解DeepAgents框架及其核心特性》介绍了 DeepAgents 在任务规划、上下文管理、子智能体并行执行等方面的强大能力,仅需少量代码即可构建出复杂的智能体。上篇的案例演示也展示了…...

UE5 开发神器:蓝图节点预设插件 — 支持多节点打组 / 快捷键 / 拖拽插入 / 材质编辑器

插件名称:UPNodePresets 插件包含以下功能 Action Palette 搜索:右键空白处搜索预设名称,回车即插入快捷键插入:按住数字键 0~9 鼠标左键点击任意位置,瞬间插入(Blueprint / Material 独立绑定&#xff…...

数据分析师课程

数据分析是什么定义:运用统计分析方法对收集的数据进行汇总、理解和消化,最大化开发数据功能数据形式:观测值通过实验/测量获得,常以图表或表格呈现分类体系:描述性分析(初级):占日常…...

2025届必备的五大降AI率神器实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能生成文本普及起来后,各种各样的AI检测系统被创造出来,为了应…...

DL基础营 | 第P1周:Pytorch实现mnist手写数字识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊编译器:jupyterlab 一、 前期准备 1. 设置GPU 2. 导入数据 3. 数据可视化 二、构建简单的CNN网络 加载并打印模型 三、 训练模型 1. 设置超参数 …...

2025届必备的五大降重复率平台实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术写作和论文创作的范畴之内,维普检测是颇为常见的查重办法。当遭遇人工智能…...

7分钟掌握WorkshopDL:打破平台壁垒的Steam创意工坊模组下载终极方案

7分钟掌握WorkshopDL:打破平台壁垒的Steam创意工坊模组下载终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games Store或GOG平台购买了游戏&…...

Java二分查找(笔记、(25))

在 Java 中,二分查找(Binary Search) 是一种在有序数组中快速查找目标值的算法。它的核心思想是每次将查找范围缩小一半,时间复杂度为 O(log n),相比顺序查找的 O(n) 效率高很多。下面我会从原理、迭代实现、递归实现、…...

线性基——2026杭电春季联赛第三场1005月球异或

前言 本人蒟蒻,如有错误还请指出。 前不久刚学了线性基,结果就用上了。线性基yyds! 没学过线性基的出门左拐 放一个之前写的线性基笔记 原题链接 题目大意 新定义三进制下的异或运算 。 再给你一个长度为 的数组,你可以…...

spring-ai 第一步集成入门

spring-ai 第一步入门 官网spring ai 做什么?涉及相关概念检索增加RAG工具调用 spring-ai 第一步入门 官网 spring-ai网址【https://spring.io/projects/spring-ai】 Spring AI 目前支持将输入和输出处理为语言、图像和音频的模型 spring ai 做什么?…...

零基础学A人工智能: 4.大模型基础与本地部署全指南

今天我们正式开启AI大模型的学习,从最基础的大模型概念讲起,到本地部署大模型的完整流程,再到Ollama工具的全功能详解,最后延伸到完整的AI聊天机器人项目架构,帮大家从零搭建起大模型应用的完整知识体系,零…...

Pytest参数化测试中文乱码?这2个隐藏技巧让你的测试报告清晰可读

Pytest参数化测试中文乱码?这2个隐藏技巧让你的测试报告清晰可读 在Python自动化测试领域,Pytest凭借其简洁的语法和强大的功能已成为开发者的首选工具。特别是它的参数化测试功能,能够高效验证多组输入数据下的代码行为。但当我们尝试用中文…...

从零到精通的Android Kotlin实战学习旅程:50个项目带你掌握移动开发核心技能

从零到精通的Android Kotlin实战学习旅程:50个项目带你掌握移动开发核心技能 【免费下载链接】50-android-kotlin-projects-in-100-days My everyday Android practice demos with Kotlin in 100 days. 项目地址: https://gitcode.com/gh_mirrors/50/50-android-k…...

3步打造waifu2x-caffe轻量化部署方案:图像增强绿色版打包全流程

3步打造waifu2x-caffe轻量化部署方案:图像增强绿色版打包全流程 【免费下载链接】waifu2x-caffe waifu2xのCaffe版 项目地址: https://gitcode.com/gh_mirrors/wa/waifu2x-caffe waifu2x-caffe是一款基于深度学习的图像增强工具,能够通过AI算法实…...

用于计算系统状态的卡尔曼最优增益和最小均方误差(MMSE)估计研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...

macOS 26.4推送,新增充电上限,利好电池寿命

macOS 26.4 新增自定义充电上限,有效延长 Mac 电池寿命。搭配CleanMyMac电池监控功能,实时掌握健康度、循环次数与温度,软硬结合保护电池。苹果于2026年3月24日正式推送了macOS Tahoe 26.4版本更新。本次更新最受关注的变化,是为M…...

手把手教你拆解Coze‘城市觉醒’工作流:从提示词工程到插件调用的保姆级避坑指南

深度拆解Coze“城市觉醒”工作流:从提示词优化到插件调用的高阶实践 清晨五点的城市天际线逐渐亮起,高楼的轮廓在晨雾中若隐若现——这种充满电影感的画面,过去需要专业团队耗费数周时间拍摄剪辑。如今,借助Coze平台的工作流能力&…...

Buildroot与Qt5的X11VNC集成:解决EGLFS与XCB插件冲突的实践指南

1. 为什么需要X11VNC与Qt5集成? 在嵌入式开发中,远程调试图形界面是个常见需求。想象一下,你的设备可能放在工厂车间或者户外,每次修改代码后都要跑到设备前查看效果,这效率实在太低。X11VNC就像给你的设备装了个"…...

Cursor AI 开发环境配置:告别依赖冲突,用 Conda 虚拟环境管理你的数据科学项目

Cursor AI 开发环境配置:告别依赖冲突,用 Conda 虚拟环境管理你的数据科学项目 在数据科学和机器学习项目的开发过程中,依赖管理一直是个令人头疼的问题。想象一下这样的场景:你正在开发一个基于TensorFlow 2.4的项目,…...

零中频接收机设计避坑指南:从IQ信号处理到链路预算,这些细节ADS仿真时千万别忽略

零中频接收机设计避坑指南:从IQ信号处理到链路预算的实战精要 零中频架构在集成化浪潮中展现出独特优势——省去笨重的中频滤波器,直接实现射频到基带的转换。但当你真正用ADS搭建仿真模型时,90度移相器的相位误差可能悄悄吞噬系统EVM指标&am…...

别再只测电压了!解锁杰理AC632蓝牙芯片ADC的隐藏玩法:电池检测与低功耗设计

杰理AC632蓝牙芯片ADC实战:电池检测与低功耗设计全解析 在蓝牙耳机、智能穿戴等电池供电设备的开发中,精准的电池电量监测和低功耗设计往往是决定产品成败的关键因素。杰理AC632作为一款广泛应用于消费电子领域的蓝牙芯片,其内置的ADC功能为开…...

如何解决微信QQ语音无法播放?Silk音频转换工具让跨设备播放不再难

如何解决微信QQ语音无法播放?Silk音频转换工具让跨设备播放不再难 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion su…...

从浮点到整数:深入解析QAT量化模型的推理计算机制

1. 量化感知训练(QAT)的核心思想 量化感知训练就像给模型提前打预防针。想象一下,你平时用计算器做数学题,突然有一天只能用整数计算(比如只能输入1、2、3,不能输入1.5),这时候直接硬…...

音频转换神器fre:ac:让无损音乐管理更简单

音频转换神器fre:ac:让无损音乐管理更简单 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 价值定位:为什么选择fre:ac作为你的音频处理中心? 在数字音乐时代&#x…...

TimescaleDB实战:5分钟搞定物联网传感器数据存储与查询(附Grafana配置)

TimescaleDB实战:5分钟构建物联网传感器数据存储与可视化系统 物联网设备的爆炸式增长带来了海量传感器数据的存储和分析挑战。传统关系型数据库在面对高频写入的时间序列数据时往往力不从心,而NoSQL方案又牺牲了SQL的灵活性和事务支持。TimescaleDB作为…...

深入解析YOLO中mode.predict()的关键参数与应用场景

1. 理解YOLO的mode.predict()方法 YOLO(You Only Look Once)作为目标检测领域的标杆算法,其mode.predict()方法是实际应用中最常接触的核心接口。这个方法封装了从数据输入到结果输出的完整推理流程,相当于整个检测系统的"总…...

从电路仿真到面包板:手把手验证三端LC振荡器的相位平衡条件(附Multisim文件)

从电路仿真到面包板:手把手验证三端LC振荡器的相位平衡条件 在电子电路设计中,LC振荡器作为基础却至关重要的电路模块,其稳定性和可靠性直接影响整个系统的性能。而相位平衡条件,这个看似简单的"两同(电抗性质&am…...

AMD新平台装CentOS7.9总报Kernel Panic?别折腾了,试试Rocky Linux 9.2吧

AMD新平台安装CentOS7.9遭遇Kernel Panic?Rocky Linux 9.2的完美替代方案 最近几年,AMD的Zen3架构处理器凭借出色的性能和能效比,赢得了大量开发者和技术爱好者的青睐。然而,当这些用户尝试在Ryzen 5000系列平台上安装某些较旧的L…...

RTKLIB数据流引擎str2str:从源码到实战的流式数据处理架构剖析

1. RTKLIB数据流引擎str2str架构解析 str2str是RTKLIB中负责数据流处理的核心模块,它的设计理念类似于工厂里的流水线传送带。想象一下GNSS数据就像流水线上的零件,str2str的工作就是把这些零件从不同来源的传送带(输入流)接过来&…...

Lumerical入门指南:从网格设置到材料库管理的实用技巧

1. 网格设置:从基础操作到高级技巧 第一次打开Lumerical时,网格设置可能是最让人困惑的部分。记得我刚接触这个软件时,经常因为网格设置不当导致仿真结果异常。网格就像建筑的地基,设置不当会导致整个仿真结构不稳。 在Lumerical中…...