返回首頁

GitHub Repo

LangChain 1.4.2 保留人工審核前的工具提案,修正代理重試的上下文矛盾

新版將人工修改放到工具執行請求,並向模型回報實際執行內容。這能減少審核後的異常重試,但仍需逐一驗證供應商介面與工具副作用。

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

LangChain 於 9 月 18 日發布 1.4.2,修正人工審核工具呼叫時的歷史紀錄處理。當使用者改動工具名稱或參數,代理現在會保留模型原始提案,另外告知實際執行內容,避免後續推理把人工修改誤認為自己的決定。版本已同步上架 PyPI。[發布紀錄](https://github.com/langchain-ai/langchain/releases/tag/langchain==1.4.2)、[套件頁](https://pypi.org/project/langchain/1.4.2/)均可查核。

問題出在舊版直接改寫 `AIMessage.tool_calls`:工具確實照修改後的參數執行,但對話歷史也一併被換掉。若模型原先的推理指向另一個動作,下一輪讀到的紀錄便可能互相矛盾。維護者指出,這可能促使模型重新嘗試原本的呼叫,而非理解人類已經介入。[修補說明](https://github.com/langchain-ai/langchain/pull/40463)

新版把修改放在執行層的 `ToolCallRequest`,並在回傳的 `ToolMessage` 加入介入通知,載明實際工具名稱與參數。工程上的價值是讓「模型提出什麼」與「人類准許執行什麼」都能留在上下文中,方便後續推理和追查。這也意味著,應用程式若只讀取模型原始訊息來重建執行紀錄,就必須重新檢查自己的假設,不能將提案直接等同於已完成的操作。

既有人工介入機制仍靠中斷與檢查點保存狀態,再接收核准、修改或拒絕等決定。正式服務需要可持久保存的檢查點,並沿用同一對話識別碼恢復執行。官方文件也提醒,大幅修改參數仍可能讓模型重新規劃或多次呼叫工具,因此此次修補不能視為所有重複執行問題的保證解答。[人工介入文件](https://docs.langchain.com/oss/python/langchain/human-in-the-loop)

維護者回報,多款模型上的異常重試獲得改善,但未公布完整成功率基準;部分供應商介面原本就沒有把修改寫回其原生內容區塊,實際差異主要是新增通知。導入者應以自己的工具重播審核流程,同時檢查原始提案、修改參數與最終副作用,並觀察代理恢復後是否再次提出同一操作。若既有監控以呼叫內容比對執行結果,也應把人工介入事件納入關聯,才能區分合法修改、工具失敗與代理自行重試。[實作邊界](https://github.com/langchain-ai/langchain/pull/40463)

來源

  1. LangChain 1.4.2 release
  2. Preserve model-generated tool calls in HITL tool call edits
  3. langchain 1.4.2
  4. Human-in-the-loop