網頁

2026/6/22

LangChain Agent串流輸出回應

LangChain Agent回應時,預設是思考完成後一次輸出所有結果,但有時回應內容較長要等比較久才能取得全部結果,可以改用串流輸出,也就是逐字輸出回應內容來減少等待時間以改善使用者體驗。


事前要求

LangChain 使用Agent物件


範例

main.py內容如下。

main.py

from langchain.agents import create_agent
from langchain.messages import HumanMessage
from dotenv import load_dotenv

# 載入.env設定
load_dotenv()

# 建立一個Agent物件
agent = create_agent(model="claude-sonnet-4-6")

# 輸入提示詞
inputs = {"messages": [HumanMessage(content="500字內說明胰島素與糖尿病的關係")]}

# 調用stream陸續取得回應token
for token, metadata in agent.stream(
    inputs,
    stream_mode="messages"
):
    # token是包含部分內容的訊息片段
    if token.content:  # 檢查是否有內容
        print(token.content, end="", flush=True)  # 印出token內容

github


使用create_agent建立agent物件。

呼叫agent的stream函式並傳入提示詞inputs,及設定stream_mode="messages",則Agent會以串流輸出回應,也就是逐字回應,而不是一次回應全部內容。


測試

在專案根目錄下cmd執行uv run main.py結果如下,回應內容是逐字印出。

C:\..\langchain-demo>uv run main.py
# 胰島素與糖尿病的關係

## 什麼是胰島素?

胰島素(Insulin)是由胰臟中的**貝他細胞(β cells)**所分泌的一種蛋白質荷爾蒙。它的核心功能是調節血液中的葡萄糖濃度,扮演「鑰匙」的角色——打開細胞的大門,讓葡萄糖得以進入細胞內,轉化為能量供身體使用。當我們進食後,血糖上升,胰臟便會釋放胰島素,協助將血糖恢復至正常範圍(約 70–100 mg/dL)。
.....

沒有留言:

張貼留言