Skip to main content
This page provides a comprehensive reference for every trace-level metric in PandaProbe. Each metric produces a score between 0.0 and 1.0, where higher is better (except where noted).

Task Completion

Registry name: task_completion · Default threshold: 0.5 · Method: LLM judge (2-stage)
Evaluates whether the agent accomplished the user’s stated objective. This is typically the most important metric — it answers the fundamental question: Did the agent do what was asked?

How it works

Scoring guide

Metadata returned


Tool Correctness

Registry name: tool_correctness · Default threshold: 0.5 · Method: LLM judge (2-stage)
Evaluates whether the agent selected appropriate tools for its task. Catches over-selection (unnecessary tools), under-selection (missing tools), and mis-selection (wrong tools).

How it works

What the judge evaluates

  • Correct selection — Were the tools used appropriate and sufficient?
  • Over-selection — Were unnecessary or redundant tools called?
  • Under-selection — Were useful available tools ignored?
  • Mis-selection — Were wrong or irrelevant tools chosen?

Metadata returned


Argument Correctness

Registry name: argument_correctness · Default threshold: 0.5 · Method: LLM judge (3-stage)
Evaluates whether the arguments passed to each tool call were correct for the user’s task. While Tool Correctness checks which tools were called, Argument Correctness checks how they were called.

How it works

Score calculation

The score is computed deterministically from the verdicts:
If a trace has no tool calls, the metric returns a perfect 1.0 score (nothing to evaluate).

Metadata returned


Step Efficiency

Registry name: step_efficiency · Default threshold: 0.5 · Method: LLM judge (2-stage)
Evaluates how efficiently the agent executed its task, penalizing redundant steps, unnecessary tool calls, and speculative work.

How it works

What lowers the score

  • Redundant or duplicate tool calls
  • Unnecessary intermediate steps
  • Speculative work that wasn’t needed for the task
  • Overly verbose reasoning chains that don’t add value

Metadata returned


Confidence

Registry name: confidence · Default threshold: 0.5 · Method: LLM judge (1-stage)
Evaluates whether the agent’s actions were decisive, appropriate, and well-founded. This metric is also used as a signal for session-level aggregation in agent_reliability and agent_consistency.

How it works

A single LLM call evaluates the entire trace against four criteria:
  • Decisiveness — Did the agent act without unnecessary hesitation or contradictory steps?
  • Appropriateness — Were the actions relevant to the user’s goal?
  • Consistency — Did the agent maintain a coherent strategy throughout?
  • Indicators of low confidence — hedging language, contradictions, unnecessary retries, vague outputs, repeated tool calls with identical parameters, or abandoned strategies

Scoring guide

Metadata returned


Plan Adherence

Registry name: plan_adherence · Default threshold: 0.5 · Method: LLM judge (3-stage)
Evaluates how closely the agent followed its declared or implied plan during execution. Useful for agents that produce a plan before acting.

How it works

If no plan is found in the trace, the metric returns 1.0 (no plan to deviate from).

Scoring guide

What the judge evaluates

  • Were all planned steps executed?
  • Were steps followed in the intended order?
  • Were there extraneous actions not in the plan?
  • Were any planned steps skipped?

Plan Quality

Registry name: plan_quality · Default threshold: 0.5 · Method: LLM judge (3-stage)
Evaluates the intrinsic quality of the agent’s plan, independent of whether the plan was followed. While Plan Adherence checks execution vs. plan, Plan Quality checks whether the plan itself was good.

How it works

If no plan is found, the metric returns 1.0.

What the judge evaluates

  • Completeness — Does the plan address all aspects of the task?
  • Logical coherence — Are steps ordered and structured sensibly?
  • Optimality/efficiency — Could the plan be streamlined?
  • Level of detail — Sufficiently detailed without being overly verbose?
  • Alignment with task — Does the plan match the user’s intent?

Scoring guide


Coherence

Registry name: coherence · Default threshold: 0.5 · Method: Embedding distance (no LLM call)
Measures whether the agent’s output logically follows from its input using embedding-based cosine distance. This metric is fast and deterministic — it only requires embedding API calls, no LLM generation.

How it works

  1. The trace’s input and output are serialized to text
  2. Both texts are embedded using the configured embedding model
  3. The cosine distance between the two embeddings is computed
  4. Score = 1.0 - cosine_distance (clamped to [0, 1])
A small distance (high score) means the output is semantically aligned with the input. A large distance (low score) suggests the output is unrelated or off-topic.

Edge cases

  • If either input or output is empty, the metric returns 1.0 with a note explaining coherence was assumed
  • The metric also serves as a signal for session-level aggregation

Metadata returned


Loop Detection

Registry name: loop_detection · Default threshold: 0.5 · Method: Hybrid semantic + Jaccard similarity
Detects whether the agent is stuck repeating itself across traces in the same session. This metric requires session context — it compares the current trace’s output against previous traces.
Loop Detection is excluded from standalone trace eval runs. It runs automatically as a signal during session-level evaluations.

How it works

  1. The current trace’s output and the previous traces’ outputs (up to a window of 3) are collected
  2. All outputs are embedded using the configured embedding model
  3. For each previous trace, two similarity scores are computed:
    • Cosine similarity (semantic overlap) between embeddings
    • Jaccard similarity (lexical overlap) between tokenized word sets (with stop-word removal)
  4. A hybrid score = cosine × Jaccard is computed for each pair
  5. Final score = 1.0 - max(hybrid_scores) (clamped to [0, 1])

Why the hybrid approach

The multiplication of cosine × Jaccard ensures that only outputs that are both semantically and lexically similar are flagged as loops.

Metadata returned


Model override

All LLM-based metrics support a model override parameter. When creating an eval run, you can specify model (e.g., "openai/gpt-5.4") to change which LLM serves as the judge. If omitted, the system default is used. This lets you balance cost and accuracy — use a faster model for quick checks and a more capable model for production evaluations.

Next steps

Agent Evaluation Metrics

Learn about session-level aggregation metrics.

Run via API

Create trace eval runs programmatically.