新闻详情

新闻详情

首页 / 资讯中心 / 详情

116.Agent-LangChain核心组件-Event事件流(Beta测试版)

发布时间:2026/9/25 18:08:35来源:尧图网络
116.Agent-LangChain核心组件-Event事件流(Beta测试版)
摘要本文介绍 LangChain 1.3 版本对 Streaming 流式输出的重构——Event 事件流。文章首先说明事件流将原本通过 stream_mode 区分的内容整合为独立的类型投影Projection流并逐一讲解 stream.messages、stream.values、stream.tool_calls、stream.output、stream.subgraphs、stream.extensions 等常用投影的用途。随后作者因千问模型对事件流支持不佳、无法生成 tool_id改用 DeepSeek 模型并给出安装 langchain-deepseek 库及完整代码示例演示如何通过事件流获取模型消息、工具调用、最终输出与思考过程实现打字机效果与 Agent 全流程观测。内容参考于图灵AI大模型全栈Event事件流是LangChain的1.3版本对Streaming也就是流式输出的重构它把通过stream_mode区分的内容改成了一个独立的类型投影Projection流投影流如上图它把原始流Streaming投影成了不同的数据类型通过去不同的变量就可以得到对应的数据stream.messages通过stream点messages就可以看到模型的讲话信息也只能看到模型讲话的信息stream.values通过stream点values就可以看到状态State的变化也就可以看到Agent中的过程也只能看到状态的变化stream.tool_calls通过stream点tool_calls就可以看到工具的执行过程也只能看到工具的执行过程stream.output通过stream点output就可以看到Agent的最终结果也只能看到最终结果stream.subgraphs通过stream点subgraphs就可以看到子图或子Agent的运行状态也只能看到子图或子Agent的运行状态stream.extensions通过stream点extensions就可以看到我们自定义的投影也只能看到我们自定义的投影上图中有官方提供的常用投影览表可以看出它把原始流进行的整合规划我们想要什么直接点出来就行不需要再传递模式类型就是如果想看模型的讲话就stream.messages如果想看Agent的过程就stream.values就跟电视机切换频道一样之前一直使用的千问的模型但是千问模型对于事件流支持的不好没办法生成tool_id这里换成了deepseek再说一次事件流是测试版所以存在这种问题安装deepseek库uv add langchain-deepseek如下图红框LangChain的官网都有示例地址https://docs.langchain.com/oss/python/integrations/chat/deepseek地址https://docs.langchain.com/oss/python/integrations/chat效果图原始流可以看到全部的数据下图是messages的消息可以看到大模型说话的内容但是存在空内容下图是values下图是tool_calls的信息下方是messages中的内容通过messages中的text可以实现打字机效果下图就是大模型调用工具的内容注意下图蓝框里的id如果使用千问模型会是空的模型本次输出的内容模型本次的思考过程代码from langchain.agents import create_agent from langchain_deepseek import ChatDeepSeek from langchain_core.utils.uuid import uuid7 from langgraph.checkpoint.memory import InMemorySaver from dotenv import load_dotenv import os # 加载环境变量 load_dotenv() # 初始化模型 qwen模型对事件流支持不行,不能生成tool_id,换成deepseek llm ChatDeepSeek( modeldeepseek-v4-flash, api_keyos.getenv(DEEPSEEK_API_KEY), ) # 创建一个工具 def get_weather(city: str) - str: 获取指定城市的天气信息 return f{city}的天气是晴朗的! # 创建代理 agent create_agent( modelllm, tools[get_weather], system_prompt你是一个乐于助人的助手能够回答用户关于天气的问题。请使用提供的工具来获取天气信息。, checkpointerInMemorySaver(), # 使用InMemorySaver来保存对话状态这样在同一线程中进行的对话可以共享状态 ) # 创建线程id config {configurable: {thread_id: str(uuid7())}} # 使用事件流获取代理全部执行过程 stream agent.stream_events( {messages: [{role: user, content: 济南天气怎么样}]}, configconfig, versionv3, ) # 获取原始的流事件 # print(获取原始的流事件) # for event in stream: # print(event) # 获取llm返回的每条消息 for message in stream.messages: # print(获取消息的文本增量和最终文本:) # for delta in message.text: # print(delta, end, flushTrue) # print(获取模型生成工具调用时的内容) # print(message.tool_calls.get()) # print(获取模型本次输出消息:) # print(message.output) print(获取模型本次推理消息:) for delta in message.reasoning: print(f[thinking] {delta}, end, flushTrue) print() # print(------获取最终状态-------) # print(stream.output)
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

后摩尔定律时代:机器学习如何倒逼芯片设计流程变革 2026/9/25 18:37:48

后摩尔定律时代:机器学习如何倒逼芯片设计流程变革

1. 从一篇论文聊起:为什么机器学习开始“管”芯片设计了前阵子刷到一篇讨论后摩尔定律时代机器学习硬件设计的论文,标题挺抓人,大意是机器学习正在反过来倒逼芯片设计方法的变革。我第一反应是:这事儿终于有人系统性地讲了。过去十…

阅读更多 →
Windows右键菜单治理:注册表级精准管理实战指南 2026/9/25 18:37:48

Windows右键菜单治理:注册表级精准管理实战指南

1. 这不是“又一个右键工具”,而是Windows系统级菜单治理的实操手册你有没有遇到过这样的场景:刚装完某款设计软件,右键菜单里突然多出七八个“用XXX打开”;卸载了某个旧版PDF阅读器,它的“打印为PDF”选项却像幽灵一样…

阅读更多 →
轻松学习Zephyr BSP: 46 — BSP Security SBOM 2026/9/25 18:37:41

轻松学习Zephyr BSP: 46 — BSP Security SBOM

摘要:本文系统讲解 BSP(板级支持包)的安全体系与 SBOM(软件物料清单)实践。文章从 BSP 安全整体认识出发,说明 BSP 安全不是简单的安全宏,而是覆盖 Source、Build、Runtime 的完整链路;随后深入介绍 SBOM 的定义、价值与常见格式(SPDX/CycloneDX),强调 BSP 因生命周…

阅读更多 →
Ubuntu root密码设置与重置:从sudo机制到恢复模式的完整指南 2026/9/25 18:37:34

Ubuntu root密码设置与重置:从sudo机制到恢复模式的完整指南

第一次接触Ubuntu的时候,我其实挺不习惯的。以前在CentOS和Debian系服务器上折腾惯了,装完系统第一件事就是“sudo passwd root”给root设个密码,甚至习惯直接root登录干活。结果装完Ubuntu 22.04发现自己居然连root密码都没设置过&#xff0…

阅读更多 →
达梦数据库子查询优化:从逐行执行到JOIN改写实战 2026/9/25 18:37:34

达梦数据库子查询优化:从逐行执行到JOIN改写实战

前一阵子处理了一单现场慢SQL排查,问题出在达梦数据库的一个子查询上。单看SQL并不复杂,两层嵌套、几个索引都在,可就是跑起来五六秒起步,数据量一上来直接拖垮业务接口。后来把子查询单独拎出来分析、改写、再对比执行计划&#…

阅读更多 →
Gemini AI武器化PhaaS全栈技术解析:从钓鱼攻击工业化到体系化防御的配置实践 2026/9/25 18:37:34

Gemini AI武器化PhaaS全栈技术解析:从钓鱼攻击工业化到体系化防御的配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉