Skip to main content

Granular Evals

Sometimes you can’t use cases. Each test case has unique logic—different ways of deriving ground truth, different validation. EZVals handles this naturally.

The Problem

You’re evaluating an agent that handles diverse tasks. Each test case:
  • Derives ground truth from a different source
  • Has custom validation logic
With most frameworks, you’d need a separate dataset for each. With EZVals, you just write functions.

The Eval

What’s Happening

Same target, different validation — All evals share run_agent but each derives ground truth differently: weather API, stock API, calendar check, or pure computation. Same dataset — All four evals write to "agent_tasks". You get one unified result set. Input in decorator — Each eval declares its input upfront in the @eval decorator. Custom validation per test — Weather checks temperature mentions, stock allows tolerance, calendar verifies side effects. Each test validates what matters.

Running It

When to Use This Pattern

Use granular evals when:
  • Each test needs different external data sources for ground truth
  • Validation logic varies significantly per test
  • You’re testing diverse agent capabilities in one suite
Use case-based evals when:
  • All test cases share the same logic
  • You have a large dataset of input/output pairs
  • Ground truth is known upfront