返回首頁

GitHub Repo

LangChain 社群回報人工審核編輯失效,空白工具 ID 可能讓代理執行原始參數

10 月 27 日的 LangChain 社群回報指出,批次人工審核遇到空字串工具呼叫 ID 時,可能忽略審核者修改的參數。另一名貢獻者已回報重現,但截至查核時尚無正式修補。

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

LangChain 的人工審核中介層出現一項值得代理開發者注意的邊界案例。10 月 27 日建立的回報指出,HumanInTheLoopMiddleware 在預設批次模式下,若工具呼叫的 id 是空字串,審核者提交 edit 後,工具仍可能使用模型原先提出的參數,且沒有錯誤或編輯提示。回報環境包含 LangChain 1.4.7;另一名貢獻者也在主線提交上回報重現。問題與重現紀錄

最小範例使用假模型與模擬刪檔工具,不需外部模型服務,也沒有實際刪除檔案。模型提出的路徑是 /etc/passwd,審核者將它改成 /tmp/scratch.txt;恢復執行後,工具記錄到的卻仍是原始路徑。這項對照顯示,成功暫停並收到人工決策,仍不足以證明修改後的參數已傳到執行端。範例程式

依回報分析,問題涉及兩處以真假值判斷 ID 的邏輯:儲存編輯內容時,空字串不會成為有效索引;執行工具前查找編輯內容時,又會被提前略過。貢獻者提出改用 id is not None,但也指出重複 ID 會使不同呼叫共用同一份編輯,因此候選方案還需在執行前拒絕有歧義的對應。截至查核時,討論頁仍開放,尚未列出修補 PR。修補討論

官方文件將 edit 定義為執行前修改工具參數,並說明批次模式依動作順序接收決策;目前也建議新代理採逐次審核的 per_call 模式。因此,工程團隊可優先驗證模型閘道回傳的 ID 是否非空且唯一,並比對審核內容與工具實際收到的參數。這是依問題機制提出的驗證方向,不能據此認定所有人工審核流程都受影響;後續應追蹤維護者確認、重複 ID 的處理方式與正式版本回補。官方人工審核文件

來源

  1. HumanInTheLoopMiddleware 批次模式忽略空字串 ID 呼叫的人工編輯
  2. Human-in-the-loop — LangChain 官方文件