返回首頁

GitHub Repo

LangChain Core 1.7.6 改善串流工具呼叫累積,減少大型參數重複解析

LangChain 於 11 月 5 日發布 Core 1.7.6,調整 Runnable 串流的訊息合併方式,處理大型工具參數反覆解析造成的延遲。維護者的特定測試由 17.35 秒降至 0.07 秒,但自行累積訊息與部分串流路徑仍不在修補範圍內。

Dirck van Baburen · Public domain · Image source
zh-Hant

LangChain 於 11 月 5 日發布 langchain-core 1.7.6,納入串流訊息累積的效能修補。對讓模型產生長篇檔案內容、再透過工具寫入的代理而言,這項變更處理了框架端可能隨輸出增長而加劇的解析成本。GitHub 發行紀錄列出相關修補,PyPI 也已提供該版本套件。發行紀錄、PyPI 套件

問題出在 AIMessageChunk 的相加行為:每次合併,都會重新解析目前收到的工具呼叫參數。Runnable 串流若逐塊加入累積結果,就反覆處理越來越長的內容,使大型工具參數的累積成本呈平方級增長。維護者以 91 KB 參數、每塊 20 字元測試 chain.stream(),公布的耗時由 17.35 秒降至 0.07 秒;這是特定重現案例,不能直接視為完整代理任務的加速比例。修補與測試說明

新版先暫存開頭連續的模型訊息區塊,待讀取總結果時一次合併,減少重複解析。涵蓋範圍包括串流追蹤、預設同步與非同步轉換,以及 RunnableLambda 的輸入和輸出累積。這使工程團隊在分析長工具呼叫延遲時,多了一個可檢查的框架因素;若瓶頸確實位於訊息累積,升級才可能帶來明顯收益。實作範圍

部署前仍須核對實際使用路徑。自行以 acc += chunk 累積訊息、包在字典內的巢狀訊息,以及 astream_log 等路徑並未一併改善。團隊可用既有長參數案例比較升級前後的 CPU 耗時與完成延遲,並確認工具參數及追蹤結果一致。官方文件提供多種串流模式,但不能據此假定每種模式都受惠;後續應關注其餘累積器是否補上相同優化。已知限制、串流文件

來源

  1. LangChain Core 1.7.6 發行紀錄
  2. Runnable 串流訊息一次合併修補 #41697
  3. langchain-core 1.7.6
  4. LangChain Streaming 文件