Skip to content

ツール使用と関数呼び出しの評価

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 はエージェントのトレース表示でこれを行います)。
  • 「ツールが誤り」と「ツールは正しいが引数が誤り」を区別してください。両者はモデルの修正方針が異なります。

さらに読む