LangChain 源码剖析-流媒体系统方法详解(Streaming)流媒体对于增强基于LLM构建的应用程序的响应能力至关重要。通过逐步显示输出,甚至在完整响应准备就绪之前,流式传输显著改善了用户体验(UX),特别是在处理LLM的延迟时。概述LangChain的流媒体系统允许您将代理运行的实时反馈呈现给您的应用程序。LangChain流媒体有以下几种方式:流代理进度(Stream agent progress)在每个代理步骤后获取状态更新。要流式传输代理进度,请使用stream_mode=“updates”的流或astream方法。这将在每个代理步骤后发出一个事件。LLM node:带有工具调用请求的AIMessageTool node:带执行结果的ToolMessageLLM node:最终AI响应fromlangchain.agentsimportcreate_agentdefget_weather(city:str)-str:"""Get weather for a given city."""returnf"It's always sunny in{city}!"agent=create_agent(model="gpt-5-nano",tools=[get_weather],)forchunkinagent.stream({"messages":[{"role":"user","content":"What is the weather in SF?"}]},stream_mode="updates",):forstep,datainchunk.items():print(f"step:{step}")print(f"content:{data['messages'][-1].content_blocks}")响应信息step:model content:[{'type':'tool_call','name':'get_weather','args':{'city':'San Francisco'},'id':'call_OW2NYNsNSKhRZpjW0wm2Aszd'}]step:tools content:[{'type':'text','text':"It's always sunny in San Francisco!"}]step:model content:[{'type':'text','text':'It's always sunnyinSan Francisco!'}]流式LLM令牌(Stream LLM tokens)在生成时流式传输语言模型令牌。要在LLM生成令牌时对其进行流式传输,请使用stream_mode=“messages”。下面您可以看到代理流工具调用的输出和最终响应。fromlangchain.agentsimportcreate_agentdefget_weather(city:str)-str:"""Get weather for a given city."""returnf"It's always sunny in{city}!"agent=create_agent(model="gpt-5-nano",tools=[get_weather],)fortoken,metadatainagent.stream({"messages":[{"role":"user","content":"What is the weather in SF?"}]},stream_mode="messages"
LangChain 源码剖析-流媒体系统方法详解(Streaming)
LangChain 源码剖析-流媒体系统方法详解(Streaming)流媒体对于增强基于LLM构建的应用程序的响应能力至关重要。通过逐步显示输出,甚至在完整响应准备就绪之前,流式传输显著改善了用户体验(UX),特别是在处理LLM的延迟时。概述LangChain的流媒体系统允许您将代理运行的实时反馈呈现给您的应用程序。LangChain流媒体有以下几种方式:流代理进度(Stream agent progress)在每个代理步骤后获取状态更新。要流式传输代理进度,请使用stream_mode=“updates”的流或astream方法。这将在每个代理步骤后发出一个事件。LLM node:带有工具调用请求的AIMessageTool node:带执行结果的ToolMessageLLM node:最终AI响应fromlangchain.agentsimportcreate_agentdefget_weather(city:str)-str:"""Get weather for a given city."""returnf"It's always sunny in{city}!"agent=create_agent(model="gpt-5-nano",tools=[get_weather],)forchunkinagent.stream({"messages":[{"role":"user","content":"What is the weather in SF?"}]},stream_mode="updates",):forstep,datainchunk.items():print(f"step:{step}")print(f"content:{data['messages'][-1].content_blocks}")响应信息step:model content:[{'type':'tool_call','name':'get_weather','args':{'city':'San Francisco'},'id':'call_OW2NYNsNSKhRZpjW0wm2Aszd'}]step:tools content:[{'type':'text','text':"It's always sunny in San Francisco!"}]step:model content:[{'type':'text','text':'It's always sunnyinSan Francisco!'}]流式LLM令牌(Stream LLM tokens)在生成时流式传输语言模型令牌。要在LLM生成令牌时对其进行流式传输,请使用stream_mode=“messages”。下面您可以看到代理流工具调用的输出和最终响应。fromlangchain.agentsimportcreate_agentdefget_weather(city:str)-str:"""Get weather for a given city."""returnf"It's always sunny in{city}!"agent=create_agent(model="gpt-5-nano",tools=[get_weather],)fortoken,metadatainagent.stream({"messages":[{"role":"user","content":"What is the weather in SF?"}]},stream_mode="messages"