私はほぼ10年間QAに携わってきました。品質に対する私の頭の中のモデルは常に、「入力Xが与えられたら、出力Yを主張(assert)する」というものでした。ところが今は、マルチステップのタスクを扱うLLMベースのエージェントを出荷するチームにいます。正直なところ、これを厳密に感じられる形でどうテストすればいいのか分かりません。
その仕組みは動きます。でも出力は決定論的ではありません。同じ入力でも、実行ごとに異なる推論チェーンが生成されます。temp=0でさえ、ツール選択や中間ステップにばらつきが見えます。私の通常の勘がここには当てはまりません。揺らぎ(フレークネス)を追跡するために、通常どおりアサーションを書いてそれを千回も回すことができません。どうすればいいのか途方に暮れています。
最終出力に対するスナップショットテストは脆すぎます。正しい応答でも言い回しが違えばテストは壊れます。出力に対する正規表現/キーワードのマッチングは、偶然正解に着地してしまうことで推論エラーを見逃してしまいます。人手評価は自動化できず、スケールしません。スコアリング用のルーブリック付きのEvalsはほぼ機能しますが、合否の閾値を設定する方法がありません。
推論ステップに対する統合テストのような、概念的に同等のものが欲しいです。つまり、「このツールの結果が与えられたら、次のステップでそれを正しく取り込めるか?」のようにです。期待する出力をハードコーディングするか、別のLLMを判定者(judge)として使うかのどちらかになってしまいそうで、それだと新しい失敗モードがテストスイートに持ち込まれてしまいます。どうやってそのアサーションを作ればいいのか分かりません。
エージェントは私たちのプロダクトの中で動きます。間違った判断をしたときには、本当の利用と実際の結果が生じます。
エージェント的な推論を検証できるフレームワークはありますか?
[link] [comments]




