Evaluation
Praval evaluation runs deterministic metrics and versioned model or agent
judges against immutable execution subjects. A subject contains one completed
ExecutionObservation for an agent or workflow, with bounded aggregated facts
for model calls, tools, retries, HITL, and Reef handoffs. Complete records live
in an EvaluationStore; OpenTelemetry receives correlated summaries and
trends, not the authoritative dataset.
Evaluation does not query Jaeger, Tempo, or another tracing backend. The target
runtime hands the same provider-neutral observation independently to the
configured observation recorder and to the evaluation runner. This preserves
the dependency boundary: praval.observability never imports praval.eval.
- Install and five-minute quickstart
- Evaluation configuration reference
- Recommended agent and evaluator-agent patterns
- Defining evaluator agents
- Evaluator flow and capability policy
- Direct model judges
- Cases, datasets, and suites
- Agent and workflow evaluation
- Metrics, plugins, and RAGAS
- Gates, baselines, and CI
- Sampled online evaluation
- Stores and retention
- Evaluation telemetry and trace correlation
- Cost, privacy, and security
- Evaluation production recipes
- 1. Local deterministic evaluation
- 2. Paired target and evaluator agents
- 3. Workflow judging
- 4. CI regression gate and explicit baseline
- 5. PostgreSQL shared store
- 6. RAGAS through Praval runtimes
- 7. Sampled online evaluation
- 8. Metadata-only and redacted-content deployment
- 9. Failure and graceful-shutdown exercise
- 10. Correlate an evaluation result with its trace
- Troubleshooting
- Evaluation API reference
Choose an evaluation mechanism
Question |
Mechanism |
Model call |
|---|---|---|
Did execution terminate successfully? |
|
No |
Does structured output exactly match the reference? |
|
No |
Were the expected tools selected in order? |
|
No |
Does a custom deterministic rule apply? |
|
Usually no |
Does semantic quality require a rubric? |
|
Yes |
Does evaluation require safe tools or retrieval? |
|
Yes |
Is the task RAG or agentic quality? |
Optional RAGAS metric |
Often |
Start with deterministic checks. Add model judgment only for qualities that cannot be asserted reliably, and use an evaluator agent only when the judge genuinely needs its own tools, retrieval, memory, or HITL policy.
Record boundary
case -> target agent/workflow -> one immutable ExecutionObservation
-> EvaluationSubject
-> metrics and judges
-> gates and terminal EvaluationResult
-> EvaluationStore (authoritative)
-> linked OTel summaries (operational)
Prompts, responses, reference contexts, and judge evidence remain ephemeral or content-addressed by default. Metadata-only records carry identities, hashes, sizes, status, usage, cost, and bounded error types.
Executed evidence
The examples under examples/evaluation/ are credential-free and use only
public APIs. Their positive, boundary, failure, and safety behavior is covered
by tests/eval/, and the release suite runs them from the exact built wheel.
PostgreSQL, Collector, RAGAS, RabbitMQ, privacy, performance, and shutdown
contracts are separate explicit release gates.
Tutorial/recipe |
Guide or executable |
Executed evidence |
|---|---|---|
Local deterministic suite |
|
|
Paired target/evaluator agents |
|
|
Workflow handoffs and tools |
|
|
Deterministic, model, and agent mechanisms |
|
|
JSONL selection and reproducibility |
|
|
CI gate and baseline |
|
|
PostgreSQL records and jobs |
|
|
RAGAS and plugin extension |
|
|
Sampled online evaluation |
|
|
Privacy, cost, and failures |
|
|
Trace/result correlation |
|
The production recipes turn this matrix into complete install, configuration, run, inspection, failure, cleanup, and next-step procedures.
The exact-wheel smoke executes all three credential-free examples. Real PostgreSQL and RAGAS tests run separately because tracing and service lifecycle are part of their contracts.