Skip to content

Harnais d'évaluation MCP : 12 tâches juridiques vérifiables + boucle agentique#6

Open
hermias1 wants to merge 1 commit into
Dahliyaal:mainfrom
hermias1:feat/eval-harness
Open

Harnais d'évaluation MCP : 12 tâches juridiques vérifiables + boucle agentique#6
hermias1 wants to merge 1 commit into
Dahliyaal:mainfrom
hermias1:feat/eval-harness

Conversation

@hermias1

Copy link
Copy Markdown

Motivation

JusticeLibre n'a aujourd'hui aucun moyen d'objectiver l'impact d'un changement de design des tools (description, pagination, format d'erreur, consolidation…) sur la capacité réelle d'un agent à s'en servir. Cette PR ajoute le harnais d'évaluation recommandé par l'article Anthropic Writing effective tools for agents : des tâches réalistes multi-appels avec vérificateurs, une boucle agentique sur le serveur MCP réel, et des métriques au-delà de la précision.

Concrètement : avant de merger un changement de design, on lance l'éval sur les deux versions et on compare taux de réussite / appels de tools / tokens — au lieu d'en débattre à l'intuition.

Contenu

  • evals/tasks.py — 12 tâches juridiques réalistes couvrant 4 dimensions : articles de loi versionnés (la killer feature), lookups par identifiant + routage inter-tools, workflows multi-appels (dont la règle impérative snippet → texte intégral), et robustesse (honnêteté sur résultat vide, récupération d'erreur). Tous les attendus sont ground-truthés contre le endpoint live (2026-07-11) — aucun fait de mémoire. Les vérificateurs sont volontairement tolérants (insensibles casse/accents, jamais de comptage exact qui dériverait avec les mises à jour DILA).
  • evals/run_evals.py — boucle agentique (SDK Anthropic + client MCP streamable HTTP), endpoint public par défaut donc aucune DB locale requise ; appels de tools parallèles gérés, résultats tronqués à 30k chars (borne annoncée au modèle), usage tokens accumulé cache inclus, transcripts complets dans results.json. Modèle par défaut claude-opus-4-8 (--model pour changer).
  • evals/README.md — usage, coût indicatif, comment ajouter une tâche, limites.

Mode --dry-run (zéro token)

Valide la connectivité MCP, le schéma des tâches, l'existence des tools attendus sur le serveur, et refuse tout vérificateur qui accepterait une réponse vide. Vérifié contre justicelibre.org/mcp : 12/12. Le run complet nécessite une clé ANTHROPIC_API_KEY (je n'en avais pas sous la main — le dry-run et les vérificateurs sont testés, la boucle LLM suit strictement les patterns documentés du SDK).

Bonus trouvé en ground-truthant

La tâche robustesse-fts5 reproduit un crash réel du serveur actuel : search_cjue("C-131/12 Google Spain")fts5: syntax error near "/" (le / du numéro d'affaire). C'est précisément la famille de bugs corrigée par #4 — une fois #4 mergée, cette tâche devrait passer sans que l'agent ait à se rattraper.

Volontairement hors de tests/run_all.sh : l'éval a besoin du réseau et d'une clé API, ce n'est pas un test de régression offline.

… agentique

Méthodologie de l'article Anthropic 'Writing effective tools for agents' :
tâches réalistes vérifiables (articles versionnés, lookups par id,
workflows multi-appels, robustesse), boucle agentique branchée sur le
endpoint MCP réel (public par défaut — aucune DB locale requise),
vérificateurs tolérants (casse/accents, pas de comptage exact), et
métriques au-delà de la précision : appels de tools, erreurs, tokens
(cache inclus), durée, transcripts complets dans results.json.

Usage : python3 evals/run_evals.py [--dry-run|--tasks ids|--endpoint URL].
Le --dry-run (validé contre le endpoint live : 12/12) vérifie MCP + schéma
des tâches sans consommer de tokens. Les attendus sont ground-truthés
contre justicelibre.org/mcp (2026-07-11).

Permet d'objectiver l'impact d'un changement de design des tools en
comparant les runs avant/après (ex : la tâche robustesse-fts5 reproduit
le crash FTS5 'syntax error near /' corrigé par ailleurs).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant