ツール使用と関数呼び出しの評価
OpenAI、Anthropic、ReAct、LangChain など各種トレース形式において、エージェントのツール呼び出しと関数呼び出しを Potato のターンごとの評価でアノテーションする方法。
エージェントがツール(検索、電卓、API、データベース)を呼び出すとき、その一つひとつの呼び出しは評価できる判断です。これは正しいツールだったか。引数は正しかったか。結果は適切に使われたか。 ツール使用評価は、こうした判断をエージェントのトレースに対するステップごとのラベルへと変えます。
これは自動化された関数呼び出しベンチマークを人間の判断で補うものです。呼び出しは構文上は有効でも、タスクにとっては誤っていることがあります。
各ツール呼び出しで何を判断するか
- ツール選択:適切なツールだったか、それとも別のツールを使うべきだったか(あるいは何も使わないべきだったか)。
- 引数:パラメータは正しく、過不足はなかったか。
- 必要性:その呼び出しは必要だったか、それとも冗長だったか。
- 結果の扱い:エージェントは出力を正しく解釈して使ったか。
任意のフレームワークのトレースを読み込む
Potato は 13 種類のトレース形式を共通のステップビューに変換するため、エージェントがどう構築されたかに関わらずツール使用を評価できます。OpenAI と Anthropic のツール/関数呼び出し、ReAct の思考-行動-観察トレース、LangChain、LangFuse などです。エージェントアノテーションを参照してください。
ステップごとの評価の設定
各ステップ(各ツール呼び出し)に評価を付与し、失敗時には条件付きのフォローアップを設けます。
yaml
annotation_schemes:
- annotation_type: per_turn_rating
name: tool_call_correctness
description: "For each tool call, judge whether it was the right call."
target: agentic_steps
rating_type: radio
labels: ["Correct", "Wrong tool", "Wrong arguments", "Unnecessary"]
- annotation_type: text
name: notes
description: "If not correct, what should it have done?"
label_requirement:
required: false品質上の留意点
- 呼び出しだけでなくツールの出力を表示してください。そうしないとアノテーターは結果の扱いを判断できません。
- JSON の引数とレスポンスは読みやすいよう整形して表示します(Potato はエージェントのトレース表示でこれを行います)。
- 「ツールが誤り」と「ツールは正しいが引数が誤り」を区別してください。両者はモデルの修正方針が異なります。