跳到主要內容
Open In ColabOpen on GitHub

如何從 LLM 串流回應

所有 LLM 皆實作 Runnable 介面,該介面隨附標準可執行方法(即 ainvokebatchabatchstreamastreamastream_events)的預設實作。

預設串流實作提供一個 Iterator(或用於非同步串流的 AsyncIterator),它產生單一值:來自底層聊天模型提供者的最終輸出。

逐個 Token 串流輸出的能力取決於提供者是否已實作適當的串流支援。

請參閱此處哪些整合支援逐個 Token 串流

注意

預設實作支援逐個 Token 串流,但它確保模型可以替換為任何其他模型,因為它支援相同的標準介面。

同步串流

在下方,我們使用 | 來協助視覺化 Token 之間的分隔符號。

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 方法。

提示

當在包含多個步驟的較大型 LLM 應用程式(例如,包含 agent 的應用程式)中實作串流時,astream_events 最有用。

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

此頁面是否對您有幫助?