PageSourceSearch

https://langchain-doc.cn/assets/streaming.html-C_9j-na5.js

js langchain-doc.cn collected 2026-10-06 14:14:08 UTC 81,344 bytes, 198 lines download raw bytes

1import{_ as e}from"./plugin-vue_export-helper-DlAUqK2U.js";import{c as k,a as h,b as i,f as p,e as a,d as l,w as t,r as d,o as r}from"./app-CwCnZbP_.js";const g={};function A(y,s){const n=d("RouteLink");return r(),k("div",null,[s[24]||(s[24]=h('<p>LangChain 实现了一个流式传输系统来提供<strong>实时更新</strong>。</p><p>流式传输对于增强基于 <strong>LLM</strong>(大型语言模型)构建的应用程序的<strong>响应能力</strong>至关重要。通过<strong>渐进式</strong>地显示输出,即使在完整的响应准备好之前,流式传输也能显著<strong>改善用户体验 (UX)</strong>,尤其是在处理 LLM 的延迟时。</p><h2 id="概述-overview" tabindex="-1"><a class="header-anchor" href="#概述-overview"><span>概述 (Overview)</span></a></h2><p>LangChain 的流式传输系统允许您将代理运行的<strong>实时反馈</strong>展示给您的应用程序。</p><p>LangChain 流式传输可能实现的功能:</p><ul><li><strong>流式传输代理进度</strong> — 在每个代理步骤后获取状态更新。</li><li><strong>流式传输 LLM 令牌</strong> — 在语言模型生成令牌时进行流式传输。</li><li><strong>流式传输自定义更新</strong> — 发出用户定义的信号(例如,<code>&quot;Fetched 10/100 records&quot;</code>)。</li><li><strong>流式传输多种模式</strong> — 可选择 <code>updates</code>(代理进度)、<code>messages</code>(LLM 令牌 + 元数据)或 <code>custom</code>(任意用户数据)。</li></ul><h2 id="代理进度-agent-progress" tabindex="-1"><a class="header-anchor" href="#代理进度-agent-progress"><span>代理进度 (Agent progress)</span></a></h2>',7)),i("p",null,[s[2]||(s[2]=a("要流式传输代理进度,请使用 ",-1)),s[3]||(s[3]=i("code",null,'stream_mode="updates"',-1)),s[4]||(s[4]=a(" 的 ",-1)),l(n,{to:"/v1/python/langchain/%5Bhttps:/reference.langchain.com/python/langgraph/graphs/#langgraph.graph.state.CompiledStateGraph.stream%5D(https://reference.langchain.com/python/langgraph/graphs/#langgraph.graph.state.CompiledStateGraph.stream)"},{default:t(()=>s[0]||(s[0]=[i("code",null,"stream",-1)])),_:1,__:[0]}),s[5]||(s[5]=a(" 或 ",-1)),l(n,{to:"/v1/python/langchain/%5Bhttps:/reference.langchain.com/python/langgraph/graphs/#langgraph.graph.state.CompiledStateGraph.astream%5D(https://reference.langchain.com/python/langgraph/graphs/#langgraph.graph.state.CompiledStateGraph.astream)"},{default:t(()=>s[1]||(s[1]=[i("code",null,"astream",-1)])),_:1,__:[1]}),s[6]||(s[6]=a(" 方法。这会在",-1)),s[7]||(s[7]=i("strong",null,"每个代理步骤",-1)),s[8]||(s[8]=a("后发出一个事件。",-1))]),s[25]||(s[25]=i("p",null,"例如,如果您有一个调用工具一次的代理,您应该会看到以下更新:",-1)),i("ul",null,[i("li",null,[s[10]||(s[10]=i("strong",null,"LLM 节点",-1)),s[11]||(s[11]=a(": 带有工具调用请求的 ",-1)),l(n,{to:"/v1/python/langchain/%5Bhttps:/reference.langchain.com/python/langchain/messages/#langchain.messages.AIMessage%5D(https://reference.langchain.com/python/langchain/messages/#langchain.messages.AIMessage)"},{default:t(()=>s[9]||(s[9]=[i("code",null,"AIMessage",-1)])),_:1,__:[9]})]),i("li",null,[s[13]||(s[13]=i("strong",null,"工具节点",-1)),s[14]||(s[14]=a(": 带有执行结果的 ",-1)),l(n,{to:"/v1/python/langchain/%5Bhttps:/reference.langchain.com/python/langchain/messages/#langchain.messages.ToolMessage%5D(https://reference.langchain.com/python/langchain/messages/#langchain.messages.ToolMessage)"},{default:t(()=>s[12]||(s[12]=[i("code",null,"ToolMessage",-1)])),_:1,__:[12]})]),s[15]||(s[15]=i("li",null,[i("strong",null,"LLM 节点"),a(": 最终的 AI 响应")],-1))]),p(" end list "),s[26]||(s[26]=h(`<div class="code-block-with-title"><div class="code-block-title-bar" data-title="Streaming agent progress"><span>Streaming agent progress</span></div><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> langchain.agents </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">
1import</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> create_agent</span></span>
2<span class="line"></span>
3<span class="line"></span>
4<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">def</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;"> get_weather</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#D19A66;--shiki-dark-font-style:italic;">city</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;"> str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">) -&gt; </span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span></span>
5<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">    &quot;&quot;&quot;获取给定城市的天气。&quot;&quot;&quot;</span></span>
6<span class="line"></span>
7<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">    return</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;"> f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;It&#39;s always sunny in </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">!&quot;</span></span>
8<span class="line"></span>
9<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">agent </span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;"> create_agent</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span></span>
10<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    model</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;openai:gpt-5-nano&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">,</span></span>
11<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    tools</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">[get_weather],</span></span>
12<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
13<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">for</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> chunk </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">in</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> agent.</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">stream</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(  </span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;"># [!code highlight]</span></span>
14<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">    {</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;messages&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: [{</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;role&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;user&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;What is the weather in SF?&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">}]},</span></span>
15<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    stream_mode</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;updates&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">,</span></span>
16<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">):</span></span>
17<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">    for</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> step, data </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">in</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> chunk.</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">items</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">():</span></span>
18<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">        print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;step: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">
18{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">step</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
19<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">        print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">data[</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&#39;messages&#39;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">][</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">-</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">1</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">].content_blocks</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="code-block-with-title"><div class="code-block-title-bar" data-title="Output"><span>Output</span></div><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">step:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
20<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;get_weather&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;city&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;San Francisco&#39;},</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;call_OW2NYNsNSKhRZpjW0wm2Aszd&#39;}]</span></span>
21<span class="line"></span>
22<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">step:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> tools</span></span>
23<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &quot;It&#39;s always sunny in San Francisco!&quot;}]</span></span>
24<span class="line"></span>
25<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">step:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
26<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;It&#39;s</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> always</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> sunny</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> in</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco!&#39;}]</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><h2 id="llm-令牌-llm-tokens" tabindex="-1"><a class="header-anchor" href="#llm-令牌-llm-tokens"><span>LLM 令牌 (LLM tokens)</span></a></h2><p>要在 LLM 生成令牌时流式传输它们,请使用 <code>stream_mode=&quot;messages&quot;</code>。您可以在下面看到代理流式传输工具调用和最终响应的输出。</p><div class="code-block-with-title"><div class="code-block-title-bar" data-title="Streaming LLM tokens"><span>Streaming LLM tokens</span></div><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> langchain.agents </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">
26import</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> create_agent</span></span>
27<span class="line"></span>
28<span class="line"></span>
29<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">def</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;"> get_weather</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#D19A66;--shiki-dark-font-style:italic;">city</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;"> str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">) -&gt; </span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span></span>
30<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">    &quot;&quot;&quot;获取给定城市的天气。&quot;&quot;&quot;</span></span>
31<span class="line"></span>
32<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">    return</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;"> f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;It&#39;s always sunny in </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">!&quot;</span></span>
33<span class="line"></span>
34<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">agent </span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;"> create_agent</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span></span>
35<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    model</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;openai:gpt-5-nano&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">,</span></span>
36<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    tools</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">[get_weather],</span></span>
37<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
38<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">for</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> token, metadata </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">in</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> agent.</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">stream</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(  </span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;"># [!code highlight]</span></span>
39<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">    {</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;messages&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: [{</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;role&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;user&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;What is the weather in SF?&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">}]},</span></span>
40<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    stream_mode</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;messages&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">,</span></span>
41<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">):</span></span>
42<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;node: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">
42{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">metadata[</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&#39;langgraph_node&#39;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">]</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
43<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">token.content_blocks</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
44<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">\\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="code-block-with-title"><div class="code-block-title-bar" data-title="Output"><span>Output</span></div><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
45<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;call_vbCyBcP8VuneUzyYlSBZZsVa&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;get_weather&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
46<span class="line"></span>
47<span class="line"></span>
48<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
49<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">
49 None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;{&quot;&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
50<span class="line"></span>
51<span class="line"></span>
52<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
53<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;city&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
54<span class="line"></span>
55<span class="line"></span>
56<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
57<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;&quot;:&quot;&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
58<span class="line"></span>
59<span class="line"></span>
60<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
61<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;San&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
62<span class="line"></span>
63<span class="line"></span>
64<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
65<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">
65 None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39; Francisco&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
66<span class="line"></span>
67<span class="line"></span>
68<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
69<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call_chunk&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;&quot;}&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;index&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}]</span></span>
70<span class="line"></span>
71<span class="line"></span>
72<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
73<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> []</span></span>
74<span class="line"></span>
75<span class="line"></span>
76<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> tools</span></span>
77<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &quot;It&#39;s always sunny in San Francisco!&quot;}]</span></span>
78<span class="line"></span>
79<span class="line"></span>
80<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
81<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> []</span></span>
82<span class="line"></span>
83<span class="line"></span>
84<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
85<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;Here&#39;}]</span></span>
86<span class="line"></span>
87<span class="line"></span>
88<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">node:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> model</span></span>
89<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [{</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">&#39;type&#39;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;text&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;&#39;s&#39;}]</span></span>
90<span class="line"></span>
91<span class="line"></span>
92<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
93<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> what&#39;}]</span></span>
94<span class="line"></span>
95<span class="line"></span>
96<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
97<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> I&#39;}]</span></span>
98<span class="line"></span>
99<span class="line"></span>
100<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
101<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> got&#39;}]</span></span>
102<span class="line"></span>
103<span class="line"></span>
104<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
105<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;:&#39;}]</span></span>
106<span class="line"></span>
107<span class="line"></span>
108<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
109<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &quot;&#39;}]</span></span>
110<span class="line"></span>
111<span class="line"></span>
112<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
113<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &quot;It&#39;s&quot;}]</span></span>
114<span class="line"></span>
115<span class="line"></span>
116<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
117<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> always&#39;}]</span></span>
118<span class="line"></span>
119<span class="line"></span>
120<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
121<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> sunny&#39;}]</span></span>
122<span class="line"></span>
123<span class="line"></span>
124<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
125<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> in&#39;}]</span></span>
126<span class="line"></span>
127<span class="line"></span>
128<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
129<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San&#39;}]</span></span>
130<span class="line"></span>
131<span class="line"></span>
132<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
133<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco&#39;}]</span></span>
134<span class="line"></span>
135<span class="line"></span>
136<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">node: model</span></span>
137<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">content: [{&#39;type&#39;: &#39;text&#39;, &#39;text&#39;: &#39;!&quot;\\n\\n&#39;}]</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><h2 id="自定义更新-custom-updates" tabindex="-1">
137<a class="header-anchor" href="#自定义更新-custom-updates"><span>自定义更新 (Custom updates)</span></a></h2>`,7)),i("p",null,[s[17]||(s[17]=a("要流式传输工具在执行过程中发出的更新,您可以使用 ",-1)),l(n,{to:"/v1/python/langchain/%5Bhttps:/reference.langchain.com/python/langgraph/config/#langgraph.config.get_stream_writer%5D(https://reference.langchain.com/python/langgraph/config/#langgraph.config.get_stream_writer)"},{default:t(()=>s[16]||(s[16]=[i("code",null,"get_stream_writer",-1)])),_:1,__:[16]}),s[18]||(s[18]=a("。",-1))]),s[27]||(s[27]=h(`<div class="code-block-with-title"><div class="code-block-title-bar" data-title="Streaming custom updates"><span>Streaming custom updates</span></div><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> langchain.agents </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">import</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> create_agent</span></span>
138<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> langgraph.config </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">import</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> get_stream_writer  </span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;"># [!code highlight]</span></span>
139<span class="line"></span>
140<span class="line"></span>
141<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">def</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;"> get_weather</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#D19A66;--shiki-dark-font-style:italic;">city</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;"> str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">) -&gt; </span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span></span>
142<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">    &quot;&quot;&quot;获取给定城市的天气。&quot;&quot;&quot;</span></span>
143<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">    writer </span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;"> get_stream_writer</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">()  </span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;"># [!code highlight]</span></span>
144<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;">    # 流式传输任何任意数据</span></span>
145<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">    writer</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;Looking up data for city: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
146<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">    writer</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;Acquired data for city: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">
146{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
147<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">    return</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;"> f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;It&#39;s always sunny in </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">!&quot;</span></span>
148<span class="line"></span>
149<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">agent </span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;"> create_agent</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span></span>
150<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    model</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;anthropic:claude-sonnet-4-5&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">,</span></span>
151<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    tools</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">[get_weather],</span></span>
152<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
153<span class="line"></span>
154<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">for</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> chunk </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">in</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> agent.</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">stream</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span></span>
155<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">    {</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;messages&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: [{</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;role&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;user&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;What is the weather in SF?&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">}]},</span></span>
156<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    stream_mode</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;custom&quot;</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;">  # [!code highlight]</span></span>
157<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">):</span></span>
158<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(chunk)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="code-block-with-title"><div class="code-block-title-bar" data-title="Output"><span>Output</span></div><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">Looking</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> up</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> data</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> for</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> city:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco</span></span>
159<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">Acquired</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> data</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> for</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> city:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div></div>`,2)),i("blockquote",null,[i("p",null,[s[20]||(s[20]=i("strong",null,"注意 (Note)",-1)),s[21]||(s[21]=i("br",null,null,-1)),s[22]||(s[22]=a(" 如果您在工具内部添加 ",-1)),l(n,{to:"/v1/python/langchain/%5Bhttps:/reference.langchain.com/python/langgraph/config/#langgraph.config.get_stream_writer%5D(https://reference.langchain.com/python/langgraph/config/#langgraph.config.get_stream_writer)"},{default:t(()=>s[19]||(s[19]=[i("code",null,"get_stream_writer",-1)])),_:1,__:[19]}),s[23]||(s[23]=a(",您将无法在 LangGraph 执行上下文之外调用该工具。",-1))])]),s[28]||(s[28]=h(`<h2 id="流式传输多种模式-stream-multiple-modes" tabindex="-1"><a class="header-anchor" href="#流式传输多种模式-stream-multiple-modes"><span>流式传输多种模式 (Stream multiple modes)</span></a></h2><p>您可以通过将流模式作为列表传递来指定多种流式传输模式:<code>stream_mode=[&quot;updates&quot;, &quot;custom&quot;]</code>:</p><div class="code-block-with-title"><div class="code-block-title-bar" data-title="Streaming multiple modes"><span>Streaming multiple modes</span></div><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> langchain.agents </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">
159import</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> create_agent</span></span>
160<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">from</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> langgraph.config </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">import</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> get_stream_writer</span></span>
161<span class="line"></span>
162<span class="line"></span>
163<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">def</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;"> get_weather</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#D19A66;--shiki-dark-font-style:italic;">city</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;"> str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">) -&gt; </span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">str</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">:</span></span>
164<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">    &quot;&quot;&quot;获取给定城市的天气。&quot;&quot;&quot;</span></span>
165<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">    writer </span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;"> get_stream_writer</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">()</span></span>
166<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">    writer</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;Looking up data for city: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
167<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">    writer</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;Acquired data for city: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
168<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">    return</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;"> f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;It&#39;s always sunny in </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">city</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">!&quot;</span></span>
169<span class="line"></span>
170<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">agent </span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;"> create_agent</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span></span>
171<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    model</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;openai:gpt-5-nano&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">,</span></span>
172<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    tools</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">
172[get_weather],</span></span>
173<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
174<span class="line"></span>
175<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">for</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> stream_mode, chunk </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">in</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> agent.</span><span style="--shiki-light:#383A42;--shiki-dark:#61AFEF;">stream</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(  </span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic;"># [!code highlight]</span></span>
176<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">    {</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;messages&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: [{</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;role&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;user&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;What is the weather in SF?&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">}]},</span></span>
177<span class="line"><span style="--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic;">    stream_mode</span><span style="--shiki-light:#383A42;--shiki-dark:#56B6C2;">=</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">[</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;updates&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;custom&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">]</span></span>
178<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">):</span></span>
179<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;stream_mode: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">stream_mode</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
180<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD;">f</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;content: </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">{</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">chunk</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;">}</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span>
181<span class="line"><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">    print</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">\\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><div class="code-block-with-title"><div class="code-block-title-bar" data-title="Output"><span>Output</span></div><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">stream_mode:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> updates</span></span>
182<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;model&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;messages&#39;:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [AIMessage(content=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&#39;&#39;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">response_metadata={&#39;token_usage&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;completion_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 280,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;prompt_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 132,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;total_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 412,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;completion_tokens_details&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;accepted_prediction_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 0,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;audio_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 0,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;reasoning_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 256,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;rejected_prediction_tokens&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">},</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;prompt_tokens_details&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;audio_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 0,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;cached_tokens&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}},</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;model_provider&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;
182openai&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;model_name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;gpt-5-nano-2025-08-07&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;system_fingerprint&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;chatcmpl-C9tlgBzGEbedGYxZ0rTCz5F7OXpL7&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;service_tier&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;default&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;finish_reason&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_calls&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;logprobs&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> None},</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> id=&#39;lc_run--480c07cb-e405-4411-aa7f-0520fddeed66-0&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> tool_calls=[{&#39;name&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;get_weather&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;args&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;city&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;San Francisco&#39;},</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;id&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;call_KTNQIftMrl9vgNwEfAJMVu7r&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;type&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;tool_call&#39;}],</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> usage_metadata={&#39;input_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 132,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;output_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 280,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;total_tokens&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 412,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;input_token_details&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;audio&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 0,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;cache_read&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 0</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">},</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;output_token_details&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;audio&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> 0,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> &#39;reasoning&#39;:</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66;"> 256</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">}}</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)]}}</span></span>
183<span class="line"></span>
184<span class="line"></span>
185<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">stream_mode:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> custom</span></span>
186<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Looking</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> up</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> data</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> for</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> city:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco</span></span>
187<span class="line"></span>
188<span class="line"></span>
189<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">stream_mode:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> custom</span></span>
190<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Acquired</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> data</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> for</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> city:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco</span></span>
191<span class="line"></span>
192<span class="line"></span>
193<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">stream_mode:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> updates</span></span>
194<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;tools&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;messages&#39;:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">
194 [ToolMessage(content=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&quot;It&#39;s always sunny in San Francisco!&quot;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">name=&#39;get_weather&#39;,</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> tool_call_id=&#39;call_KTNQIftMrl9vgNwEfAJMVu7r&#39;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">)]}}</span></span>
195<span class="line"></span>
196<span class="line"></span>
197<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">stream_mode:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> updates</span></span>
198<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF;">content:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;model&#39;:</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> {&#39;messages&#39;:</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;"> [AIMessage(content=</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&#39;San Francisco weather: It&#39;</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF;">s </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">always</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> sunny</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> in</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> San</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;"> Francisco!</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2;">\\n\\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379;">&#39;, response_metadata={&#39;token_usage&#39;: {&#39;completion_tokens&#39;: 764, &#39;prompt_tokens&#39;: 168, &#39;total_tokens&#39;: 932, &#39;completion_tokens_details&#39;: {&#39;accepted_prediction_tokens&#39;: 0, &#39;audio_tokens&#39;: 0, &#39;reasoning_tokens&#39;: 704, &#39;rejected_prediction_tokens&#39;: 0}, &#39;prompt_tokens_details&#39;: {&#39;audio_tokens&#39;: 0, &#39;cached_tokens&#39;: 0}}, &#39;model_provider&#39;: &#39;openai&#39;, &#39;model_name&#39;: &#39;gpt-5-nano-2025-08-07&#39;, &#39;system_fingerprint&#39;: None, &#39;id&#39;: &#39;chatcmpl-C9tljDFVki1e1haCyikBptAuXuHYG&#39;, &#39;service_tier&#39;: &#39;default&#39;, &#39;finish_reason&#39;: &#39;stop&#39;, &#39;logprobs&#39;: None}, id=&#39;lc_run--acbc740a-18fe-4a14-8619-da92a0d0ee90-0&#39;, usage_metadata={&#39;input_tokens&#39;: 168, &#39;output_tokens&#39;: 764, &#39;total_tokens&#39;: 932, &#39;input_token_details&#39;: {&#39;audio&#39;: 0, &#39;cache_read&#39;: 0}, &#39;output_token_details&#39;: {&#39;audio&#39;: 0, &#39;reasoning&#39;: 704}})]}}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><h2 id="禁用流式传输-disable-streaming" tabindex="-1"><a class="header-anchor" href="#禁用流式传输-disable-streaming"><span>禁用流式传输 (Disable streaming)</span></a></h2><p>在某些应用程序中,您可能需要为给定的模型<strong>禁用单个令牌的流式传输</strong>。</p><p>这对于像<a href="/v1/python/langchain/multi-agent">多代理</a>系统这样的场景很有用,以便<strong>控制</strong>哪些代理流式传输它们的输出。</p><p>请参阅 <a href="/v1/python/langchain/models#disable-streaming">模型</a> 指南以了解如何禁用流式传输。</p>`,8))])}const F=e(g,[["render",A]]),B=JSON.parse('{"path":"/v1/python/langchain/streaming.html","title":"流式传输","lang":"zh-CN","frontmatter":{"title":"流式传输","index":false,"description":"LangChain 实现了一个流式传输系统来提供实时更新。 流式传输对于增强基于 LLM(大型语言模型)构建的应用程序的响应能力至关重要。通过渐进式地显示输出,即使在完整的响应准备好之前,流式传输也能显著改善用户体验 (UX),尤其是在处理 LLM 的延迟时。 概述 (Overview) LangChain 的流式传输系统允许您将代理运行的实时反馈展示...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"流式传输\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"202
1986-09-29T12:50:46.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://langchain-doc.cn/v1/python/langchain/streaming.html"}],["meta",{"property":"og:site_name","content":"LangChain 中文文档"}],["meta",{"property":"og:title","content":"流式传输"}],["meta",{"property":"og:description","content":"LangChain 实现了一个流式传输系统来提供实时更新。 流式传输对于增强基于 LLM(大型语言模型)构建的应用程序的响应能力至关重要。通过渐进式地显示输出,即使在完整的响应准备好之前,流式传输也能显著改善用户体验 (UX),尤其是在处理 LLM 的延迟时。 概述 (Overview) LangChain 的流式传输系统允许您将代理运行的实时反馈展示..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2026-09-29T12:50:46.000Z"}],["meta",{"property":"article:modified_time","content":"2026-09-29T12:50:46.000Z"}]]},"git":{"createdTime":1790686246000,"updatedTime":1790686246000,"contributors":[{"name":"liaokangping","username":"liaokangping","email":"[email protected]","commits":1,"url":"https://github.com/liaokangping"}]},"readingTime":{"minutes":4.83,"words":1449},"filePathRelative":"v1/python/langchain/streaming.md","autoDesc":true}');export{F as comp,B as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.