Annotation d'agents web
Examinez des traces d'agents de navigation web dans Potato avec la pellicule de navigation, les surcouches SVG (clics, boîtes englobantes, trajets de souris) et des contrôles d'annotation par étape.
Nouveau dans la v2.4.0
Évaluer des agents IA qui naviguent sur le web suppose de voir exactement ce que l'agent a vu, où il a cliqué, et si chaque étape avait du sens. Potato fournit une visionneuse de traces d'agents web dédiée, avec deux modes : l'examen de traces préenregistrées et la création de nouvelles traces en naviguant sur des sites en direct.
Vue d'ensemble
| Mode | Quand l'utiliser |
|---|---|
| Mode examen | Vous disposez de traces préenregistrées venant de WebArena, Mind2Web, Anthropic Computer Use, ou de l'enregistreur de Potato |
| Mode création | Vous voulez que les annotateurs naviguent sur des sites et enregistrent de nouvelles traces d'interaction |
Mode examen
Les annotateurs parcourent pas à pas les captures d'écran d'une session de navigation de l'agent. Des surcouches SVG dessinent les marqueurs de clic, les boîtes englobantes, les trajets de souris et les indicateurs de défilement par-dessus chaque capture.
Configuration
instance_display:
fields:
- key: steps
type: web_agent_trace
label: "Agent Browsing Trace"
display_options:
show_overlays: true
show_filmstrip: true
show_thought: true
show_observation: true
show_element_info: true
screenshot_max_width: 800
screenshot_max_height: 600
filmstrip_size: 80Format des données
Chaque instance a besoin d'un tableau steps contenant les données de chaque étape :
{
"id": "trace_001",
"task_description": "Find and add a blue wool sweater to cart",
"site": "amazon.com",
"steps": [
{
"step_index": 0,
"screenshot_url": "screenshots/step_000.png",
"action_type": "click",
"element": {
"tag": "input",
"text": "Search",
"bbox": [340, 45, 680, 75]
},
"coordinates": {"x": 510, "y": 60},
"mouse_path": [[200, 300], [350, 200], [510, 60]],
"thought": "I need to search for blue wool sweaters",
"observation": "Search box is focused",
"timestamp": 1.2,
"viewport": {"width": 1280, "height": 720}
}
]
}Types d'action pris en charge
| Action | Surcouche |
|---|---|
click | Cercle rouge avec réticule et animation de pulsation |
type | Surlignage jaune sur l'élément ciblé |
scroll | Flèche directionnelle verte |
hover | Cercle violet |
select | Boîte englobante bleue |
navigate | Aucune surcouche |
wait | Aucune surcouche |
done | Aucune surcouche |
Raccourcis clavier
| Touche | Action |
|---|---|
← / → | Étape précédente / suivante |
1 | Afficher ou masquer les marqueurs de clic |
2 | Afficher ou masquer les boîtes englobantes |
3 | Afficher ou masquer les trajets de souris |
4 | Afficher ou masquer les indicateurs de défilement |
A | Afficher toutes les surcouches |
N | Masquer toutes les surcouches |
Annotations par étape
Ajoutez per_step: true à n'importe quel schéma d'annotation pour créer des contrôles d'annotation qui apparaissent en ligne avec chaque étape :
annotation_schemes:
- annotation_type: radio
name: step_correctness
labels:
- name: correct
- name: incorrect
- name: unnecessary
- annotation_type: text
name: step_notesLes annotations par étape sont stockées sous la forme {scheme_name}_step_{index} (par exemple step_correctness_step_0).
Mode création
Les annotateurs naviguent sur un site en direct depuis l'interface de Potato, et leurs interactions sont enregistrées automatiquement sous forme de trace prête à annoter.
Configuration
instance_display:
fields:
- key: browsing_session
type: web_agent_trace
display_options:
show_overlays: true
show_filmstrip: true
show_observation: true
show_thought: trueModes de proxy
| Mode | Description |
|---|---|
auto (par défaut) | Détecte si le site cible autorise l'intégration en iframe et choisit le meilleur mode automatiquement |
iframe | Force le proxy iframe : fonctionne pour environ 90 % des sites, avec moins de 100 ms de surcoût |
playwright | Force Playwright côté serveur : fonctionne pour 100 % des sites, nécessite le paquet playwright |
Pour activer le mode Playwright :
pip install playwright
playwright install chromiumConversion de traces existantes
Utilisez le convertisseur de traces en ligne de commande pour normaliser au format de Potato des traces issues d'autres cadres logiciels :
# Convert from a specific format
python -m potato.trace_converter -i traces.json -f web_agent -o output.jsonl
# Auto-detect format
python -m potato.trace_converter -i traces.json --auto-detect -o output.jsonlFormats d'entrée pris en charge : WebArena, VisualWebArena, Mind2Web, Anthropic Computer Use, et les enregistrements bruts de Potato.
Exemple complet
task_name: "Web Agent Evaluation"
task_dir: "."
data_files:
- "traces.jsonl"
instance_display:
fields:
- key: task_description
type: text
label: "Task"
- key: steps
type: web_agent_trace
label: "Agent Trace"
display_options:
show_overlays: true
show_filmstrip: true
show_thought: true
annotation_schemes:
- annotation_type: radio
name: task_success
description: "Did the agent complete the task successfully?"
labels:
- name: "Yes"
- name: "Partially"
- name: "No"
- annotation_type: radio
name: step_correctness
description: "Was this step correct?"
labels:
- name: correct
- name: incorrect
- name: unnecessary
- annotation_type: text
name: error_description
description: "Describe any errors in the agent's behavior"
output_annotation_dir: "output/"
output_annotation_format: "jsonl"Lancer les projets d'exemple
# Review Mode
python potato/flask_server.py start examples/agent-traces/web-agent-review/config.yaml -p 8000
# Creation Mode
python potato/flask_server.py start examples/agent-traces/web-agent-creation/config.yaml -p 8000Référence de l'API
Ces points de terminaison REST sont disponibles en mode création :
| Point de terminaison | Méthode | Description |
|---|---|---|
/api/web_agent/start_session | POST | Démarre une session d'enregistrement |
/api/web_agent/save_step | POST | Enregistre une étape d'interaction |
/api/web_agent/save_screenshot | POST | Envoie une capture d'écran pour une étape |
/api/web_agent/end_session | POST | Termine la session et sauvegarde la trace |
/api/web_agent/proxy/{url} | GET | Fait passer une URL externe par le serveur |
/api/web_agent/check_frameable | GET | Teste si une URL autorise l'intégration en iframe |
Pour aller plus loin
- Évaluation d'agent en direct — évaluer des agents qui tournent en temps réel
- Annotation agentique — convertisseurs de format de trace et panorama des types d'affichage
- Apprentissage actif — donner la priorité aux traces les plus informatives pour l'annotation
Pour les détails d'implémentation, consultez la documentation source.