ホームへ戻る

GitHub Repo

LangChainコミュニティ、人的レビューで編集が反映されない問題を報告――空のツールIDで元の引数が実行される可能性

10月27日のLangChainコミュニティ報告によると、バッチ形式の人的レビューでツール呼び出しIDが空文字列の場合、レビュアーが編集した引数が反映されないことがある。別のコントリビューターも再現を報告したが、確認時点で正式な修正はない。

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

LangChainの人的レビュー用ミドルウェアで、エージェント開発者が注意すべき境界ケースが報告された。10月27日に作成された報告によると、デフォルトのバッチモードでツール呼び出しのidが空文字列の場合、レビュアーがeditを送信しても、ツールがモデルの元の引数を使って実行されることがある。エラーや編集を示す通知は出ないという。報告環境にはLangChain 1.4.7が含まれ、別のコントリビューターもメインブランチのコミットで再現を報告した。問題と再現記録

最小限の例では、偽のモデルとファイル削除を模擬するツールを使っており、外部のモデルサービスは不要で、実際にファイルが削除されることもない。モデルが提示したパスは/etc/passwdで、レビュアーはこれを/tmp/scratch.txtに変更した。しかし、再開後にツールが記録したのは元のパスだった。この比較から、処理が正常に一時停止し、人的判断を受け取っただけでは、変更後の引数が実行側に渡されたことの確認にはならない。サンプルコード

報告の分析によると、この問題にはIDを真偽値で判定するロジックが2か所関係している。編集内容を保存する際、空文字列は有効なインデックスとして扱われない。また、ツール実行前に編集内容を検索する際にも、空文字列は早期にスキップされる。コントリビューターはid is not Noneへの変更を提案したが、IDが重複すると異なる呼び出しで同じ編集内容が共有される可能性も指摘している。そのため、修正案では実行前に曖昧な対応関係を拒否する必要がある。確認時点で議論ページは公開中で、修正PRはまだ掲載されていない。修正に関する議論

公式ドキュメントでは、editは実行前にツール引数を変更する操作と定義され、バッチモードではアクションの順序に沿って判断を受け取ると説明されている。また、新しいエージェントには、呼び出しごとにレビューするper_callモードが推奨されている。エンジニアリングチームは、モデルゲートウェイから返されるIDが空でなく一意であることを優先的に検証し、レビュー時の内容とツールが実際に受け取った引数を照合できる。この検証方針は報告された問題の仕組みに基づくもので、すべての人的レビュー手順に影響があると結論づけるものではない。今後は、メンテナーによる確認、重複IDの扱い、正式リリースへの修正の反映を追う必要がある。公式の人的レビュー文書

出典

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