Skip to content
Announcements7 min read

Potato 2.6 : l'analyse de données qualitatives rencontre l'évaluation d'agents

Potato 2.6 est disponible : Mode QDA pour le codage qualitatif, un flux de calibration et d'alignement LLM-as-judge, l'édition de trajectoires qui produit des données d'entraînement SFT et DPO, un démarrage 3 fois plus rapide et un changement de licence vers GPL-3.0-or-later.

Potato Team

Potato 2.6 est disponible. C'est une version à deux centres de gravité. D'un côté, elle fait entrer Potato dans l'analyse de données qualitatives, ce monde des transcriptions d'entretiens, des livres de codes et des mémos qui a longtemps vécu dans des outils de bureau propriétaires. De l'autre, elle approfondit la boîte à outils d'évaluation d'agents vers la production de données d'entraînement, et non plus seulement de scores. Et sous ces deux axes, elle devient nettement plus rapide et change de licence.

Si vous avez suivi le blog, les articles des dernières semaines ont présenté ces fonctionnalités une à une. C'est la version qui les livre vraiment.

Potato 2.6, partagé entre l'analyse de données qualitatives et l'évaluation d'agentsPotato 2.6

Un mot d'abord : Potato est désormais sous GPL-3.0

Potato est passé sous licence GPL-3.0-or-later, en remplacement de PolyForm Shield. C'est le genre de changement facile à enterrer et qui ne devrait pas l'être, car il modifie ce que vous avez le droit de faire avec le projet.

Sous GPL-3.0-or-later, vous pouvez utiliser, modifier et redistribuer Potato, y compris à des fins commerciales, tant que les œuvres dérivées restent sous GPL. L'ancienne licence PolyForm Shield comportait une clause de non-concurrence qui faisait hésiter certains adoptants (et leurs équipes juridiques). GPL est une licence que ces équipes comprennent déjà. Si une question de licence freinait votre laboratoire ou votre entreprise, cette question a maintenant une réponse familière. Voir la page About pour les détails.

Mode QDA

Pour les chercheurs en méthodes qualitatives, le point fort est le Mode QDA : un seul interrupteur qui transforme Potato en un espace de travail collaboratif de codage qualitatif.

yaml
qda_mode:
  enabled: true            # codebook + memos + cases + search
codebook_invivo_key: i     # mint a code from a text selection

L'activer compose un livre de codes vivant, le codage in-vivo, les mémos d'analyste, les cas et la recherche en texte intégral, avec des réglages par défaut pensés pour un analyste unique codant un corpus entier. Vous pouvez enrichir et réorganiser le livre de codes au fil de la lecture, créer un code directement à partir d'un passage surligné d'une simple touche, attacher des mémos privés ou partagés à n'importe quel extrait, regrouper les extraits en cas par participant, et lancer une recherche FTS5 sur tout le corpus. C'est une alternative gratuite, open source et web à NVivo, ATLAS.ti, MAXQDA et Dedoose, logée dans le même outil que le reste de votre travail d'annotation.

Nous avons décrit la conception dans Apporter le codage qualitatif à Potato. Référence complète : documentation du Mode QDA.

LLM-as-judge : calibration, alignement et triage

Utiliser un LLM pour noter les sorties d'un modèle est désormais courant. Savoir jusqu'où lui faire confiance, c'est la partie que traite la 2.6, avec trois fonctionnalités qui s'articulent ensemble.

Judge Calibration étiquette automatiquement vos données avec un ou plusieurs juges LLM, échantillonne chaque élément k fois pour obtenir une confiance empirique, puis effectue une passe humaine en aveugle (les annotateurs ne voient jamais les étiquettes du modèle) et rapporte l'exactitude, les kappa de Cohen et de Fleiss, l'alpha de Krippendorff et l'erreur de calibration attendue. Elle répond à « dois-je faire confiance à ce juge ? » avec des chiffres que vous pouvez défendre. Nous l'avons abordée dans Pouvez-vous faire confiance à votre juge LLM ?.

Judge Alignment ajuste un seul juge par rapport à vos étiquettes de référence humaines, en suivant le kappa de Cohen à mesure que vous affinez la grille, avec un verdict optionnel affiché en ligne à côté de l'étiquette humaine pendant l'annotation.

The Triage Queue priorise la file d'annotation selon un signal par élément (une erreur de l'agent, un pouce vers le bas en production, un score faible) afin que les relecteurs voient d'abord les traces les plus suspectes, plutôt que dans l'ordre d'arrivée.

yaml
triage:
  enabled: true
  signal_field: quality_score
  invert_signal: true
assignment_strategy: priority

L'alignement et le triage se combinent en une boucle d'évaluation active, que nous avons parcourue dans Boucler la boucle. Documentation de référence : Judge Calibration, Judge Alignment, Triage Queue.

Édition de trajectoires pour le SFT et le DPO

Le nouveau schéma trajectory_edit permet aux annotateurs de réécrire les étapes d'une trace d'agent, avec un diff en direct au niveau du mot, pour corriger une étape de raisonnement erronée, réparer un appel d'outil ou renforcer la réponse finale. L'exportateur trajectory_correction transforme ensuite chaque paire original/corrigé en données d'entraînement : des cibles de fine-tuning supervisé dans trajectory_sft.jsonl et des paires de préférence DPO dans trajectory_dpo.jsonl. Les traces non modifiées sont ignorées, car s'entraîner sur une trajectoire inchangée n'apprend rien.

Cela fait de Potato un outil de production de données d'entraînement, et plus seulement un outil d'évaluation. Le tour d'ensemble complet est dans De l'évaluation aux données d'entraînement ; la référence, dans la documentation de l'édition de trajectoires.

L'affichage eval_trace

Lire vite les traces d'agents est un problème en soi. Le nouvel affichage eval_trace divise une trace unique en trois volets synchronisés (Raisonnement, Appels de fonctions et Réponse finale) pour qu'un évaluateur voie d'un coup d'œil ce que l'agent a pensé, fait et produit. Il est conçu pour l'évaluation continue, où les traces arrivent par un webhook, un scrutateur Langfuse ou un répertoire surveillé, et doivent être jugées dès leur arrivée. Voir la documentation eval_trace.

Flux de travail et déploiement

Un ensemble de fonctionnalités opérationnelles complète la version :

  • Couverture hétérogène. Affectez différents nombres d'annotateurs à différents éléments : un sur la plupart, trois sur un échantillon stratifié, avec des renforts adaptatifs en cas de désaccord et un routage automatique vers l'arbitrage. Abordé dans Au-delà du recouvrement total ; référence dans la documentation de la couverture hétérogène.
  • Récupérer les affectations abandonnées. Récupérez les éléments laissés par des participants via Prolific ou bloqués par le contrôle qualité, avec une rétention configurable et une récupération idempotente. Voir affectation des tâches.
  • Affectation de lots personnalisée. Affectez des lots prédéfinis d'éléments à des annotateurs précis, conçu pour des plans d'étude à manches répétées.
  • Préfixes d'URL pour proxy inverse. Servez Potato sous un sous-chemin derrière un proxy inverse. Voir la documentation du proxy inverse.

Plus rapide, et un renommage de schéma

Deux changements touchent tous les projets.

Le démarrage est environ 3 fois plus rapide. La pile d'apprentissage automatique n'est plus chargée par anticipation au démarrage ; elle se charge plutôt à la première utilisation. Le temps d'importation est passé d'environ 6.5s à 2s, le démarrage d'un projet de 50 000 éléments d'environ 10 secondes à 5.7, et la mémoire résidente d'environ 750MB à 365MB. Les redémarrages de conteneurs sont plus rapides et l'empreinte mémoire pour la mise à l'échelle horizontale est à peu près réduite de moitié.

annotation_type: highlight devient span. Une migration est en place et les configurations span existantes ne sont pas affectées. Mettez à jour les anciennes configurations en renommant le type. « span » est le terme standard dans tout le TAL, et ce renommage met le type d'annotation en accord avec lui.

Rattrapage : 2.5 et 2.4.5

Quelques versions entre la 2.4 et la 2.6 sont sorties sans article ici. Il vaut la peine d'en souligner les points forts, d'autant que le travail sur le codage qualitatif sous-tend précisément le Mode QDA :

2.5.0 a été la vague du codage qualitatif. Elle a ajouté les kappa de Cohen et de Fleiss aux côtés de l'alpha de Krippendorff, les exportateurs codebook et quotation_report, ainsi que des analyses d'administration pour la co-occurrence de codes et un tableau croisé des codes par attribut. Ce sont les briques de fiabilité et d'export sur lesquelles s'appuie le Mode QDA.

2.4.5 a apporté un cadre de raffinement validé pour améliorer les consignes d'annotation en mode solo, une CLI de validation de configuration (python -m potato.validate_cli) et un correctif de sécurité pour un contournement de path traversal (GHSA-q9m2-fhv9-3jcf). Si vous êtes sur une 2.4.x plus ancienne, la mise à niveau récupère ce correctif.

L'historique complet vit sur la page Nouveautés.

Pour l'obtenir

bash
pip install --upgrade potato-annotation

Pointez ensuite Potato vers l'un des exemples fournis (examples/advanced/qda-mode-example/, examples/ai-assisted/judge-calibration/, examples/agent-traces/trajectory-correction/) pour voir les nouvelles interfaces en action. Chaque version présentée ici a commencé par une question de quelqu'un qui utilisait l'outil ; si la 2.6 en soulève une chez vous, le dépôt GitHub est l'endroit où la poser.