Skip to main content
Open In Colab在 GitHub 上打开

如何流式传输来自 LLM 的响应

AllLLM实现 Runnable 接口,该接口附带了标准 Runnable 方法的默认实现(即ainvoke,batch,abatch,stream,astream,astream_events).

默认的流式处理实现提供了一个Iterator(或AsyncIterator)生成一个值:来自底层聊天模型提供程序的最终输出。

逐个令牌流式传输输出的能力取决于提供商是否实施了适当的流式传输支持。

在此处查看哪些集成支持逐个令牌流式处理

注意

默认实现不支持逐个令牌流式处理,但它确保模型可以换入任何其他模型,因为它支持相同的标准接口。

同步流

下面我们使用|以帮助可视化标记之间的分隔符。

from langchain_openai import OpenAI

llm = OpenAI(model="gpt-3.5-turbo-instruct", temperature=0, max_tokens=512)
for chunk in llm.stream("Write me a 1 verse song about sparkling water."):
print(chunk, end="|", flush=True)
API 参考:OpenAI


|Spark|ling| water|,| oh| so clear|
|Bubbles dancing|,| without| fear|
|Refreshing| taste|,| a| pure| delight|
|Spark|ling| water|,| my| thirst|'s| delight||

异步流式处理

让我们看看如何使用astream.

from langchain_openai import OpenAI

llm = OpenAI(model="gpt-3.5-turbo-instruct", temperature=0, max_tokens=512)
async for chunk in llm.astream("Write me a 1 verse song about sparkling water."):
print(chunk, end="|", flush=True)
API 参考:OpenAI


|Spark|ling| water|,| oh| so clear|
|Bubbles dancing|,| without| fear|
|Refreshing| taste|,| a| pure| delight|
|Spark|ling| water|,| my| thirst|'s| delight||

异步事件流式处理

LLM 还支持标准的 astream events 方法。

提示

astream_events在包含多个步骤的大型 LLM 应用程序中实现流式处理时最有用(例如,涉及agent).

from langchain_openai import OpenAI

llm = OpenAI(model="gpt-3.5-turbo-instruct", temperature=0, max_tokens=512)

idx = 0

async for event in llm.astream_events(
"Write me a 1 verse song about goldfish on the moon", version="v1"
):
idx += 1
if idx >= 5: # Truncate the output
print("...Truncated")
break
print(event)
API 参考:OpenAI