LangChain Agent 流式输出:stream_mode=“values“ 数据结构解析
通过create_agent()可以创建 Agent 对象。创建后的 Agent 支持两种常见执行方式invoke()等待 Agent 执行完成一次性获得最终结果。stream()在 Agent 执行过程中逐步获得运行状态。本文主要介绍 Agent 的流式输出以及下面这行代码的作用一、完整代码下面创建两个股票查询工具然后让 Agent 查询“传智教育”的股价和公司信息。fromlangchain.agentsimportcreate_agentfromlangchain_community.chat_models.tongyiimportChatTongyifromlangchain_core.toolsimporttooltool(description获取股价传入股票名称返回字符串信息)defget_price(name:str)-str:returnf股票{name}的价格是20元tool(description获取股票信息传入股票名称返回字符串信息)defget_info(name:str)-str:returnf股票{name}是一家A股上市公司专注于IT职业教育。agentcreate_agent(modelChatTongyi(modelqwen3-max),tools[get_price,get_info],system_prompt你是一个智能助手可以回答股票相关问题)forchunkinagent.stream({messages:[{role:user,content:传智教育股价多少并介绍一下}]},stream_modevalues):latest_messagechunk[messages][-1]iflatest_message.content:print(type(latest_message).__name__,latest_message.content)try:iflatest_message.tool_calls:print(工具调用,[tc[name]fortcinlatest_message.tool_calls])exceptAttributeError:pass运行结果如下二、stream_modevalues返回什么stream_modevalues之后Agent 每完成一个执行步骤都会返回当前时刻的完整状态。每个chunk都是一个字典核心结构如下{messages:[HumanMessage(...),AIMessage(...),ToolMessage(...),AIMessage(...)]}ToolMessage工具执行后返回的结果。Agent 执行过程中messages列表会不断变长。例如第一次可能只有用户消息[HumanMessage(...)]模型决定调用工具后[HumanMessage(...),AIMessage(tool_calls[...])]工具执行完成后[HumanMessage(...),AIMessage(tool_calls[...]),ToolMessage(...),ToolMessage(...)]三、为什么使用chunk[messages][-1]latest_messagechunk[messages][-1]表示获取 Agent 当前状态中的最后一条消息也就是最近产生的消息。如果直接遍历整个列表formessageinchunk[messages]:print(message)由于每个chunk都包含完整消息历史之前的消息会被重复打印。使用[-1]则每次只查看最后一条消息输出会更加清晰。四、content和tool_calls分别是什么这两个都是 Message对象的属性提取最新消息后主要读取两个属性latest_message.content latest_message.tool_calls1.contentcontent保存消息中的文字内容。比如模型最终回答AIMessage(content传智教育当前股价为20元……)iflatest_message.content:print(latest_message.content)#输出消息中的文本。2.tool_callstool_calls保存模型产生的工具调用请求。例如AIMessage(content,tool_calls[{name:get_price,args:{name:传智教育},id:call_xxx,type:tool_call}])其中name调用的工具名称。args传递给工具的参数。id本次工具调用的唯一标识。[tc[name]fortcinlatest_message.tool_calls]#会提取所有准备调用的工具名称。五、为什么tool_calls会出现两次打印完整的AIMessage时会看到AIMessage(content,additional_kwargs{tool_calls:[{function:{arguments:{name: 传智教育},name:get_price}}]},tool_calls[{name:get_price,args:{name:传智教育}}])工具调用同时出现在additional_kwargs[tool_calls]message.tool_calls这两个位置的作用不同。additional_kwargs这里通常保存模型接口返回的附加数据其结构更接近模型原始返回结果。additional_kwargs本身是一个 Python 字典用于保存模型返回的附加数据。其中工具参数function.arguments可能仍然是 JSON 格式的字符串arguments:{name: 传智教育}tool_callsLangChain 会对工具调用数据进行解析和统一封装tool_calls[#如果调用多个工具 就会有多个字典{name:get_price,args:{name:传智教育}}]这样不管底层使用哪个模型都可以通过统一方式读取工具调用。六、总结stream_modevalues返回的是 Agent 每一步执行后的完整状态其中最重要的数据是chunk[messages]#它保存了 Agent 当前积累的全部消息。latest_messagechunk[messages][-1]#表示从完整消息列表中取出最后一条消息避免重复处理以前已经出现过的内容。消息中的两个常用属性分别是message.content#用于获取文字内容message.tool_calls#用于获取模型准备调用的工具及其参数。整个执行过程可以简单概括为用户问题 ↓ 模型决定调用工具 ↓ 工具返回查询结果 ↓ 模型整合结果 ↓ 生成最终回答

相关新闻

教育局统考高性价比阅卷软件服务商

教育局统考高性价比阅卷软件服务商

在教育数字化的浪潮下,教育局组织的统考工作面临着前所未有的挑战。传统的统考阅卷方式不仅效率低下,还容易出现人为误差,难以满足如今高效化、精准化、数字化的教育需求。因此,选择一款高性价比的阅卷软件服务商至关重要。今天就…

2026/8/6 7:04:09 阅读更多 →
电源EMI传导测试:从噪声根源到滤波器设计的实战指南

电源EMI传导测试:从噪声根源到滤波器设计的实战指南

1. 项目概述:从“玄学”到“科学”的电源EMI传导测试 搞电源设计的朋友,估计没几个不怕EMI的。尤其是传导测试,它不像辐射那样看不见摸不着,传导超标是板上钉钉的硬伤,整改起来往往更棘手。我见过太多工程师&#xff0…

2026/8/6 7:03:09 阅读更多 →
Sysmon部署与配置实战:从日志黑洞到精细化Windows系统监控

Sysmon部署与配置实战:从日志黑洞到精细化Windows系统监控

1. 项目概述:从“日志黑洞”到“上帝之眼”在安全运维和事件响应的世界里,我们常常面临一个尴尬的局面:系统自带的日志,比如Windows事件查看器里的那些条目,信息粒度太粗了。一个进程启动了,谁启动的&#…

2026/8/6 7:03:09 阅读更多 →

最新新闻

LED开路保护器原理与应用:如何解决灯串“一损俱损”难题

LED开路保护器原理与应用:如何解决灯串“一损俱损”难题

1. 项目概述:当“守护灯火”成为一门硬核技术 最近在逛一些硬件开发社区和电子元器件分销商的网站时,一个产品标题引起了我的注意:“Keeping the Lights On: A New ‘Open LED Protector’ from Littelfuse”。直译过来就是“保持灯火通明&am…

2026/8/6 7:50:37 阅读更多 →
MySQL DQL深度解析:从核心语法到性能优化实战

MySQL DQL深度解析:从核心语法到性能优化实战

1. 项目概述:从“查”开始,理解数据库的核心价值如果你刚接触数据库,或者已经用了一段时间的MySQL,但总觉得写查询语句时心里没底,那咱们今天聊的这个话题,可能就是你的“任督二脉”。DQL,全称D…

2026/8/6 7:50:37 阅读更多 →
Jasna 一键包整合包:本地视频去马赛克工具的部署与使用教程(附资源)

Jasna 一键包整合包:本地视频去马赛克工具的部署与使用教程(附资源)

Jasna 是一款受 Lada 启发的本地视频马赛克修复工具,全程在本地 GPU 上运行,无需上传云端。 本文梳理它的工作原理、检测模型、纯 GPU 流水线、二级画质修复与去闪烁参数,给出首次运行的踩坑提示,并附 Windows 一键整合包。想找一…

2026/8/6 7:50:37 阅读更多 →
Three.js 3D 热力云图效果实现

Three.js 3D 热力云图效果实现

一、效果展示及原理概述 1.1 核心思想 3D 热力云图的核心思路是 将 2D 热力图数据转化为 3D 立体效果。整体流程分为三个阶段: 原始数据 → 2D 热力图(heatmap.js) → 纹理贴图 → 3D 几何体顶点位移(Three.js Shader)1.2 技术架构 技术 作用 heatmap.js 生成 2D 热力图画布…

2026/8/6 7:50:37 阅读更多 →
2026游戏连点器工具评测排行榜:4类手机与电脑自动点击工具怎么选?

2026游戏连点器工具评测排行榜:4类手机与电脑自动点击工具怎么选?

不少玩家搜索“2026游戏连点器工具评测排行榜”,并不是单纯想找点击速度最快的软件,而是想解决重复领取、固定点位操作、多步骤循环等问题。不同工具支持的平台、配置难度和自动化能力差异较大,选错之后反而要花更多时间调试。先说结论&#…

2026/8/6 7:50:37 阅读更多 →
昆明 AI 营销数字化服务体系,如何解决数字化转型各类难题?

昆明 AI 营销数字化服务体系,如何解决数字化转型各类难题?

当下昆明众多实体企业推进数字化营销转型时,普遍面临诸多痛点:营销工具零散割裂、企业数据形成孤岛、人力运营成本居高不下、业绩增长不稳定、数字化方案落地难、内部部门协同效率低等问题。传统营销模式效率低下、获客精准度不足,已经无法适…

2026/8/6 7:49:37 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →