Skip to content
Guides1 min read

逐步評估計算機操作智慧體

在 Potato 中對計算機操作與 GUI 智慧體做人工評估的一次演練:評判每一個動作、在截圖上檢查點選落點,以及逐個審查工具呼叫。

Potato Team

一個計算機操作智慧體讀取一張截圖,決定一個動作,然後點選。評估它意味著檢查每一步:動作對不對,點選有沒有真的落在它所聲稱的那個元素上——而不只是看任務最終有沒有成功。任務成功會掩蓋那次點錯按鈕卻仍然推進了的點選,也會掩蓋那次靠運氣才對的動作。 Potato 用一個 專門打造的 GUI 軌跡介面 和一個工具呼叫審查來審查這些執行,兩者都用 YAML 配置。

一個 計算機操作智慧體——也叫 GUI 或作業系統智慧體——把螢幕看作畫素或 DOM,並通過和人一樣的控制元件來行動。像 OSWorld、ScreenSpot 和 AndroidWorld 這樣的基準會自動給任務完成度打分。自動打分便宜且值得跑,但它無法告訴你一次執行為什麼失敗,也抓不住那次靠運氣的通過。這正是人工逐步審查所填補的空白。

一個計算機操作步驟的解剖:截圖、動作、裁定和點選落點評判動作以及點選是否落在它所聲稱的那個元素上

在一條 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})。落點標記是自動化指標最常錯過的部分:一個模型可以輸出正確的動作標籤,卻把點選落在偏離目標十個畫素的地方,而最終螢幕上的通過/失敗永遠不會把它暴露出來。

為什麼第一個出錯的步驟比最終結果更重要?

因為那一步才是你會去修復或拿來訓練的東西。一次因為第 3 步誤讀了對話方塊而在第 9 步失敗的執行,本質上是個第 3 步的問題,把它標在第 9 步會教出錯誤的教訓。抓住第一次偏離,和 過程獎勵模型 背後是同一個想法:每一步都有的訊號會把錯誤定位住,而不是把整條軌跡塌縮成一個數字。

我怎麼審查一個智慧體的工具呼叫?

GUI 智慧體也會呼叫工具和函式,而那些有自己出錯的方式:意圖對、工具錯;工具對、參數畸形;呼叫對、順序錯。tool_call_review 方案把每一次呼叫從軌跡裡抽出來,給它一張帶工具名和美化列印參數的卡片,於是你一次評判一個(與 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_callaction 欄位中提取,所以一條混合了介面點選和 API 呼叫的軌跡可以在一個任務裡從這兩個維度被審查。

我怎麼把它搭起來?

每個介面都在 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 或 data-URI 以及一個動作字串。對於那些基於渲染後的頁面而非原始截圖工作的更廣義的網頁智慧體,參見 網頁智慧體評估

延伸閱讀