96SEO 2026-06-14 18:08 10
嗨老友,聊聊 LangGraph 的 Stream 流式输出到底是怎么玩儿的
说实话,我刚把这玩意儿玩了几遍,心里一阵小激动——哈哈,真的有点像打开了新世界的大门。
先别急,我先给你掰扯掰扯概念。LangGraph 本身是个状态机图,每个节点douKe以往下走、往上回、甚至跳到别的分支。

关键来了:stream_mode。这玩意儿决定了你在图跑的过程中到底想kan什么。
三大常用流式模式
values每一步dou把完整的状态对象抛出来适合想要全貌的童鞋。
updates只送本轮产生的增量geng新,轻量又直观。
custom自定义数据流,你Ke以在节点内部随时塞进任何信息。
还有个调试专属的 "debug" 模式,想要追根溯源?它会把每一次调用的细节全给你打印出来。
'''StreamMultipleModes.py
LangGraph 多模式流式传输演示'''
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
# 定义状态类型
class AtguiguState:
question: str
answer: str
confidence: float # 置信度分数
steps: list
def think -> AtguiguState:
"""思考节点"""
question = state
# 模拟思考过程
steps =
return {"steps": steps}
def respond -> AtguiguState:
"""回应节点"""
question = state
# 根据问题生成答案
if "天气" in question:
answer = "今天天气晴朗"
confidence = 0.92
elif "时间" in question:
answer = "现在是上午10点"
confidence = 0.88
else:
answer = "这是一个hen好的问题"
confidence = 0.75
return {
"answer": answer,
"confidence": confidence
}
def reflect -> AtguiguState:
"""反思节点"""
answer = state
confidence = state
steps = state.get
steps.append
steps.append
if confidence> 0.9:
conclusion = "高置信度答案"
elif confidence> 0.8:
conclusion = "中等置信度答案"
else:
conclusion = "低置信度答案"
steps.append
return {"steps": steps}
def main:
# 构建图
builder = StateGraph
builder.add_node
builder.add_node
builder.add_node
builder.add_edge
builder.add_edge
builder.add_edge
builder.addedge
上面那段代码我故意留了点小坑——不对不对,应该是 .add_edge 才对。哈哈,这种错误在调试时Zui容易被忽视,记得多跑几遍。
下面给你演示一下各种模式下跑图的差别:
print
print
for chunk in graph.stream:
print
print
print
for chunk in graph.stream:
print
print
for mode, chunk in graph.stream:
print
print
try:
for chunk in graph.stream:
print
except Exception as e:
print
运行结果会像下面这样:
--- 使用 stream_mode='values' 模式 ---
{'question': '今天天气怎么样?', 'answer': '', 'confidence': 0, 'steps': }
{'question': '今天天气怎么样?', 'answer': '', 'confidence': 0,
'steps': }
{'question': '今天天气怎么样?', 'answer': '今天天气晴朗',
'confidence': 0.92,
'steps': }
--- 使用 stream_mode='updates' 模式 ---
{'think': {'steps': }}
{'respond': {'answer':'今天天气晴朗','confidence':0.92}}
{'reflect': {'steps':}}
--- 同时使用 多种流模式 ---
: {...}
: {...}
...
自定义流来喂养前端 UI?
有时候我们不想只kan状态本身,而是想实时推送进度条、日志之类的信息。LangGraph 给了 get_stream_writer 一招,让你在节点里随手写入自定义数据块。
from langgraph.config import get_stream_writer
def node_with_custom_streaming:
writer = get_stream_writer
writer
writer
# ...业务逻辑...
writer
writer
result = f"处理结果:{state.upper}"
return {"answer":result}
然后在调用时把 stream_mode="custom" 带进去,就Neng收到这些自定义块啦:
for chunk in graph.stream:
print
顺带回答一个常见疑问:为什么百度不收录我的技术博客?🤔
这个嘛,其实跟内容质量和站点结构dou有关系。要确保页面有明确的标题和 meta 描述;要让关键字自然出现,而不是硬塞进去;再者,站点必须Neng被搜索引擎爬虫正常抓取——robots.txt 不该阻止重要路径;Zui后Ru果页面加载太慢、JS 渲染太重,也会导致抓取失败。
简单来说就是“内容好、结构清晰、访问顺畅”。你懂的,把这些Zuo好后百度基本就会乖乖收录啦。
LLM Token 流模式的小技巧LLM 在图里也Neng像流水线一样逐 token 输出,这叫 "messages". 每个 token dou伴随元数据,让你知道它来自哪颗节点、用了哪个模型。
for chunk, meta_data in graph.stream:
print}")
print # 实际上是 Token 对象或字符串片段
# meta_data 包含 node_name、model_name 等信息,可用于日志追踪
Ru果你要Zuo聊天机器人 UI,这套方案简直完美——边生成边渲染,不会卡顿。
Come on,一起玩转 Stream!好了我先把这些干货甩给你。记住:
#1 : 根据需求选对 "values"/"updates"/"custom"/"debug".
#2 : 用 .stream) 时一定要配好输入状态,否则跑不起来。
#3 : 想让前端实时感知进度?别忘了写 get_stream_writer.
#4 : 调试卡住?直接切到 "debug", 把所有调用栈dou抖出来kankan。
#5 : SEO 要兼顾可读性和技术深度,适当加入中文关键词和自然描述,就算不被百度立刻收录,也会慢慢爬上去。
Aha~ 那么你现在Ke以大胆去实验啦!遇到报错或者奇怪行为,记得先检查一下边界条件——比如有没有忘记返回完整的字典结构。呵呵,不对,我说的是“完整字典”。 多跑几遍,你会发现 Stream 就像是一条不断冒泡的河流,信息不停从节点冲出来让你的应用geng“活泼”。祝玩得开心,咱们下次再聊别的话题吧!👋
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback