Potato 2.4.0 : annotation d'agent web, évaluation en direct et intégration HuggingFace
Potato 2.4.0 apporte la revue de traces d'agents web, l'évaluation d'agents en direct, une barre latérale de chat LLM, l'export vers HuggingFace Hub, les webhooks, le SSO/OAuth et cinq stratégies d'apprentissage actif.
Note : les décomptes de fonctionnalités de cet article reflètent l'état du projet à la sortie de la v2.4.0. Potato prend aujourd'hui en charge plus de 50 types d'annotation. Voir la documentation des types d'annotation pour la liste complète.
Potato 2.4.0 est disponible. C'est notre plus grosse mise à jour depuis l'arrivée de l'annotation agentique en 2.3 : elle ajoute les fonctionnalités d'évaluation d'agents qu'on nous réclamait, plus un lot de travaux sur les intégrations et les usages en entreprise.
Annotation d'agent web
Évaluer un agent de navigation web est difficile. Il faut voir ce que l'agent a vu, où il a cliqué, comment il a fait défiler la page, et si chaque étape avait un sens. Potato 2.4 ajoute pour cela un visualiseur de traces d'agent web.
Le mode revue donne aux annotateurs une vue pellicule des captures d'écran préenregistrées. Des superpositions SVG marquent les cibles de clic, les boîtes englobantes, les trajets de souris et les positions de défilement, si bien que l'évaluateur voit ce que l'agent a vu, avec les contrôles d'annotation en ligne.
Le mode création inverse la logique. Les annotateurs naviguent sur un site réel dans une iframe, et Potato enregistre chaque interaction sous forme de trace prête à annoter. Vous pouvez importer des traces existantes aux formats WebArena, Mind2Web et Anthropic Computer Use, ou en enregistrer de nouvelles au fil de l'eau.
display:
type: web_agent_trace
mode: review # or "creation"
show_overlays: true
keyboard_shortcuts: trueÉvaluation d'agent en direct
Il faut parfois évaluer les agents pendant qu'ils s'exécutent, et non après coup. Le nouveau système d'évaluation d'agent en direct permet aux annotateurs de regarder des agents IA exécuter des tâches en temps réel et d'annoter leur comportement en cours d'exécution.
Potato lance les agents en parallèle via l'Agent Runner Manager, capte les traces à mesure qu'elles arrivent grâce à un récepteur de webhooks, et présente aux annotateurs une interface d'évaluation en temps réel. L'accord inter-annotateurs au niveau des étapes est suivi automatiquement.
Barre latérale de chat LLM
Les décisions d'annotation difficiles gagnent à un deuxième avis. La nouvelle barre latérale de chat LLM donne aux annotateurs un panneau d'assistant IA qu'ils peuvent consulter en cours de tâche sans quitter l'interface.
La barre latérale gère les conversations à plusieurs tours et injecte automatiquement le contexte complet de la tâche. Elle fonctionne avec les points de terminaison OpenAI, Anthropic et Ollama, et journalise chaque conversation comme donnée comportementale, ce qui est pratique pour étudier la façon dont les annotateurs s'appuient sur l'assistance IA.
llm_sidebar:
enabled: true
provider: anthropic
model: claude-3-5-sonnet-20241022
system_prompt: "You are a helpful annotation assistant for this {task_name} task."
collapsible: trueIntégration à l'écosystème HuggingFace
Potato se relie désormais à HuggingFace de plusieurs façons. Vous pouvez pousser les annotations directement vers des jeux de données du Hub avec des DatasetCards générées automatiquement, les recharger comme objets datasets.Dataset sans détour, déployer une instance Potato sur HuggingFace Spaces, et ingérer automatiquement les traces des agents LangChain via le callback LangChain.
pip install potato-annotation[huggingface]from potato import PotatoDataset
ds = PotatoDataset.from_output("annotations/")
ds.push_to_hub("my-org/my-annotation-dataset")Système de webhooks
Potato 2.4 embarque un système de webhooks complet pour les intégrations événementielles. Cinq types d'événements, signés en HMAC-SHA256 selon la spécification Standard Webhooks :
| Événement | Déclenché quand |
|---|---|
annotation.created | Un annotateur valide une étiquette |
item.fully_annotated | Un élément atteint le nombre de recoupements requis |
task.completed | Tous les éléments d'une tâche sont annotés |
user.phase_completed | Un utilisateur termine une phase (mode Solo) |
quality.attention_check_failed | Un annotateur échoue à un contrôle d'attention |
Les webhooks sont livrés de façon non bloquante, avec relance configurable, et se gèrent depuis l'API d'administration.
webhooks:
- url: https://your-system.example.com/potato-events
secret: your-signing-secret
events: [annotation.created, item.fully_annotated]Apprentissage actif avancé : 5 stratégies + démarrage à froid par LLM
Le système d'apprentissage actif propose désormais cinq stratégies de requête :
- Échantillonnage par incertitude : sélectionner les éléments sur lesquels le modèle est le moins sûr
- Sélection par diversité : maximiser la couverture de l'espace d'entrée
- BADGE : Batch Active Learning by Diverse Gradient Embeddings
- BALD : Bayesian Active Learning by Disagreement
- Ensemble hybride : combiner les stratégies pour une sélection robuste
S'y ajoute le démarrage à froid par LLM, qui choisit des éléments avant qu'aucune étiquette n'existe. Vous braquez un modèle de langage sur votre réserve de données et il en fait ressortir les éléments difficiles ou représentatifs pour amorcer l'annotation. CoverICL est nouveau lui aussi, pour choisir des exemples variés d'apprentissage en contexte.
Gestion des mots de passe et SSO/OAuth
Deux fonctionnalités d'authentification qu'on nous réclamait :
La gestion des mots de passe repose sur un hachage PBKDF2-SHA256 avec un sel par utilisateur, permet la réinitialisation depuis la CLI d'administration et l'API, et inclut un parcours de réinitialisation en libre-service par jeton, adossé à SQLite ou PostgreSQL.
Le SSO/OAuth gère l'authentification unique via Google, GitHub ou n'importe quel fournisseur OIDC générique, à travers Authlib.
pip install potato-annotation[auth]Décomptes mis à jour
| Capacité | 2.3 | 2.4 |
|---|---|---|
| Types d'annotation | 20 | 21 |
| Types d'affichage | 15 | 17+ |
| Points de terminaison IA | 7 | 11 |
| Projets d'exemple | 15 | 40+ |
| Stratégies d'apprentissage actif | 1 | 5 |
| Types d'événements webhook | 0 | 5 |
| Projets d'exemple pour agents | 0 | 14 |
Installation
pip install potato-annotation # core
pip install potato-annotation[ai] # OpenAI, Ollama
pip install potato-annotation[huggingface] # HF Hub + Spaces
pip install potato-annotation[langchain] # LangChain callback
pip install potato-annotation[auth] # SSO/OAuth
pip install potato-annotation[all] # everythingÀ essayer
Le plus rapide pour voir la 2.4 à l'œuvre est la démo en ligne sur HuggingFace Spaces, sans rien installer. Elle fait tourner une tâche d'évaluation de traces d'agent avec boutons radio, échelles de Likert, annotation d'empans et notes en texte libre :
Ou lancez un exemple en local :
git clone https://github.com/davidjurgens/potato.git
cd potato
pip install -e .
python potato/flask_server.py start examples/agent-traces/complex-annotation/config.yaml -p 8000Pour le journal des modifications complet, voir les notes de version v2.4.0, et le reste de la documentation dans le dépôt GitHub.