Skip to content

Évaluation de trace à trois volets (eval_trace)

L'affichage eval_trace divise la trace d'un agent en trois volets synchronisés (Raisonnement, Appels de fonctions et Réponse finale) afin que l'évaluateur voie d'un coup d'œil ce que l'agent a pensé, fait et produit. Conçu pour l'évaluation continue.

L'affichage eval_trace divise une seule trace d'agent en trois volets synchronisés : Raisonnement, Appels de fonctions et Réponse finale. L'évaluateur voit côte à côte ce que l'agent a pensé, ce qu'il a fait et ce qu'il a produit, ce qui convient à l'évaluation continue où de nouvelles traces arrivent et doivent être jugées rapidement.

Contrairement à un affichage vertical de trace d'agent qui empile une trace entrelacée dans une seule colonne, eval_trace décompose une trace en ses trois composantes sémantiques, de sorte que la structure du comportement de l'agent est visible sans avoir à faire défiler.

Affichage eval_trace à trois voletsUne trace d'agent divisée en volets Raisonnement, Appels de fonctions et Réponse finale

Démarrage rapide

Exécutez l'exemple fourni depuis la racine du dépôt :

bash
python potato/flask_server.py start examples/agent-traces/continuous-eval/config.yaml -p 8000

L'exemple propose aussi une variante avec surveillance de répertoire (config-watch.yaml) pour ingérer les fichiers de trace déposés.

Configuration

yaml
instance_display:
  layout:
    direction: vertical      # task header above the (internally horizontal) panes
    gap: 12px
  fields:
    - key: task_description
      type: text
      label: "Task"
 
    - key: trace             # the field holding the agent trace
      type: eval_trace
      label: "Agent Trace"
      display_options:
        pane_labels: ["Reasoning", "Function Calls", "Final Answer"]
        show_step_numbers: true
        collapse_long_outputs: true
        max_output_lines: 12
        link_steps: true

Options

OptionValeur par défautDescription
pane_labels["Reasoning", "Function Calls", "Final Answer"]En-têtes des trois volets.
show_step_numberstrueAffiche les numéros d'étape #N sur les cartes de raisonnement et d'appel.
collapse_long_outputstrueReplie les résultats d'outil plus longs que max_output_lines dans un bloc dépliable.
max_output_lines20Seuil de lignes pour le repliement des résultats.
link_stepstrueSurlignage entre volets : cliquer sur une carte surligne les cartes liées dans les autres volets.
compactfalseMarges intérieures et espacement plus resserrés.

Format des données

eval_trace accepte les mêmes formats de trace que l'affichage de trace d'agent. Le plus courant est une liste d'étapes {speaker, text} :

json
{
  "id": "eval_001",
  "task_description": "Find a vegan lasagna recipe.",
  "trace": [
    {"speaker": "Agent (Thought)",      "text": "I'll search for a highly-rated recipe."},
    {"speaker": "Agent (Action)",       "text": "web_search(query='vegan lasagna')"},
    {"speaker": "Environment",          "text": "10 results found..."},
    {"speaker": "Agent (Final Answer)", "text": "Here's a great recipe: ..."}
  ]
}

Les formats thought/action/observation et step_type/content sont également pris en charge.

Comment les étapes correspondent aux volets

Étape (type déduit du speaker ou du label)Volet
Thought, raisonnement, planification, systemRaisonnement
Action, tool, function, callAppels de fonctions (le Environment/résultat adjacent s'imbrique sous l'appel)
Final Answer, send_message, respond, finish, ou la dernière action si aucune ne correspondRéponse finale

Pour définir une réponse finale explicite, terminez la trace par une étape dont le speaker correspond à un motif de réponse (tel que "Agent (Final Answer)") ou par une action send_message(...).

Liaison des étapes

Les étapes sont regroupées en cycles logiques : une pensée et les appels qu'elle déclenche partagent un même index d'étape. Avec link_steps: true, cliquer sur n'importe quelle carte surligne toutes les cartes partageant cet index dans les différents volets, ce qui vous permet de remonter d'une pensée à l'action qu'elle a produite.

Évaluation continue

Associez eval_trace à l'un des transports d'ingestion à l'exécution de Potato pour que les traces soient évaluées dès leur arrivée :

  • Webhook et SSEtrace_ingestion: {enabled: true} expose un point de terminaison webhook et diffuse les nouvelles traces aux annotateurs.
  • Interrogation Langfuse — ajoutez une source langfuse sous trace_ingestion.sources.
  • Surveillance de répertoiredata_directory avec watch_data_directory: true ingère les fichiers .json et .jsonl déposés.

Les traces ajoutées à l'exécution sont immédiatement attribuables aux annotateurs. Combinez cela avec la file de triage pour faire remonter en tête les traces en erreur ou faiblement notées.

Remarques et limites

  • eval_trace sert uniquement à l'affichage ; il ne collecte aucune annotation par lui-même. Associez-le à des schémas d'annotation tels que reasoning_quality, tool_use_correctness ou answer_helpfulness, comme dans l'exemple.
  • L'annotation de segments n'est pas prise en charge par eval_trace. Utilisez un affichage de trace d'agent ou code si vous avez besoin de surligner des segments dans le texte de la trace.

Pages liées

Pour les détails d'implémentation, consultez la documentation source.