Skip to content
Guides1 min read

コンピュータ操作エージェントを評価する、ステップごとに

Potato におけるコンピュータ操作および GUI エージェントの人手評価のウォークスルー:各アクションを判定し、スクリーンショット上でクリックグラウンディングを確認し、ツール呼び出しを 1 つずつレビューする。

Potato Team

コンピュータ操作エージェントはスクリーンショットを読み、アクションを決め、クリックします。その 1 つを評価するとは、各ステップを確認することです:アクションは正しかったか、そしてクリックは、エージェントが名指しした要素に実際に着地したか。タスクが最終的に成功したかどうかだけではありません。タスクの成功は、間違ったボタンに当たったのに先に進んでしまったクリックや、運良く正しかったアクションを隠してしまいます。 Potato は、専用に作られた GUI トラジェクトリサーフェス とツール呼び出しレビューで、これらの実行をレビューします。どちらも YAML で設定されます。

コンピュータ操作エージェント(GUI エージェントまたは OS エージェントとも呼ばれます)は、画面をピクセルまたは DOM として見て、人と同じコントロールを通じて行動します。OSWorld、ScreenSpot、AndroidWorld のようなベンチマークは、タスクの完了を自動でスコアリングします。自動スコアリングは安価で実行する価値がありますが、実行がなぜ失敗したかを教えることはできませんし、運による合格を捕まえることもできません。それが、人手によるステップレビューが埋めるギャップです。

1 つのコンピュータ操作ステップの構造:スクリーンショット、アクション、判定、クリックグラウンディングアクションを判定し、クリックが名指しした要素に着地したかを判定する

GUI トラジェクトリで実際に何を判定するのか?

各ステップは、スクリーンショット(エージェントが見たもの)とアクション(エージェントが行ったこと)を対にします。アクションを判定し、ステップがクリック座標を持つ場合は、Potato がスクリーンショット上に描くグラウンディングマーカーを確認します:

  • アクションの正しさ — 正しい、要素の誤り、アクションの誤り、またはハルシネーション。
  • クリックグラウンディング — 座標は、アクションが名指しした要素に着地したか?
  • 結果 — 実行はタスクを完了したか、そして最初にどのステップで誤ったか。

アクションの判定とクリックグラウンディングマーカーを伴うコンピュータ操作ステップ各ステップをレビューする:アクションの正しさに加えてスクリーンショット上のクリックグラウンディング

yaml
annotation_schemes:
  - annotation_type: gui_trajectory
    name: gui_review
    description: "For each step: was the action correct and did the click land right?"
    steps_key: steps
    screenshot_key: screenshot
    action_key: action
    coord_space: normalized
    verdict_options: [correct, wrong_element, wrong_action, hallucinated]

各ステップは screenshotaction、そしてオプションの x/y(またはネストした click: {x, y})を供給します。グラウンディングマーカーは、自動メトリクスが最も頻繁に見逃す部分です:モデルは正しいアクションラベルを出力しながら、ターゲットから 10 ピクセルずれた場所をクリックしている場合があり、最終画面の合否判定ではそれが決して表面化しません。

なぜ最初に誤ったステップが最終結果よりも重要なのか?

なぜなら、そのステップこそが、あなたが修正したり、それに対して学習させたりするものだからです。ステップ 9 で失敗した実行が、ステップ 3 でダイアログを読み違えたことに起因しているなら、それは本当はステップ 3 の問題であり、ステップ 9 でラベル付けすると間違った教訓を教えることになります。最初の分岐を捉えることは、プロセス報酬モデル の背後にあるのと同じ考え方です:各ステップでのシグナルが、トラジェクトリ全体を 1 つの数値に押し潰す代わりに、エラーを局所化します。

エージェントのツール呼び出しをレビューするには?

GUI エージェントはツールや関数も呼び出し、それらは独自の形で失敗します:正しい意図、間違ったツール;正しいツール、不正な引数;正しい呼び出し、間違った順序。tool_call_review スキーマは、各呼び出しをトレースから取り出し、ツール名と整形された引数を伴うカードを与えるため、それらを 1 つずつ判定できます(BFCL v4 / MCPMark を踏襲しています)。

トレース内の各ツール呼び出しに対する呼び出しごとの判定あらゆるツール呼び出しを判定する:正しいツール、正しい引数、正しい順序

yaml
annotation_schemes:
  - annotation_type: tool_call_review
    name: tool_review
    description: "Judge each tool call: right tool? correct arguments?"
    steps_key: steps
    # verdict_options: [correct, wrong_tool, wrong_args, wrong_order]

ツール呼び出しは、各ステップの tool_callstool_call、または action フィールドからレンダリング時に抽出されるため、UI のクリックと API 呼び出しが混在するトラジェクトリを、1 つのタスクで両方の軸からレビューできます。

これをどうセットアップするのか?

各サーフェスは、examples/agent-traces/ の下に実行可能な例を出荷します。そのいずれかを Potato に指定すると、サンプルデータでスキーマを確認できます:

bash
pip install --upgrade potato-annotation
python potato/flask_server.py start examples/agent-traces/gui-trajectory/config.yaml -p 8000

あなた自身のデータは、ステップのリストとして投入します。各ステップには、スクリーンショットの URL またはデータ URI と、アクション文字列が含まれます。生のスクリーンショットではなくレンダリングされたページから動作するより広範な Web エージェントについては、Web エージェントの評価 を参照してください。

さらに読む