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內容
使用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)。
.....
沒有留言:
張貼留言