Skip to main content
DecimalAI provides a comprehensive evaluation framework for assessing the quality of your agent’s outputs. Evaluations can be run client-side (in your process), server-side (via the platform), or through external tools like DeepEval and LangSmith.
Evaluators attach via your framework’s install() call, not init(). decimalai.init(...) sets up tracing; the evals=[...] and builtin_evals= arguments live on the framework integration’s install() function (e.g. decimalai.langchain.install(...)). The examples below use the LangChain install(); swap in your framework’s module.

Pre-Built Evaluators

DecimalAI ships 10 ready-to-use evaluators in two tiers:

Deterministic Evaluators (Free)

These run instantly with zero external calls:

Built-in Auto-Checks (Always On)

In addition to the evaluators above, DecimalAI runs 5 automatic quality checks on every trace — zero configuration, zero cost: These appear in the dashboard labeled source: builtin and feed into the Decision Engine alongside your custom evaluators.
Built-in evals run SDK-side, not server-side. They are attached to the trace payload by install()’s wrapper before the trace is sent. If you ingest traces via bare HTTP POST /api/v1/traces (without the SDK), no built-in scores are computed automatically — push them yourself via POST /api/v1/traces/{id}/eval-scores or use the SDK.
You don’t need to configure or register these when using the SDK — they run automatically on every trace. To disable them, set builtin_evals=False in install().

LLM-as-Judge Evaluators

These use an LLM to score outputs on a 0.0–1.0 scale with a pass/fail verdict:

Execution Modes

Evals run in your process using your own API key via litellm:
  • Unlimited evaluations — no metering
  • You choose the judge modelgpt-4o-mini for cheap, gpt-4o for quality, claude-sonnet-4-6 for diversity
  • Works offline — in CI pipelines, notebooks, local testing
  • Privacy — trace data never leaves your infrastructure
Set your model’s API key in the environment:

Custom Evaluators

The @eval Decorator

eval is two different things. The @eval decorator that defines a custom evaluator lives at decimalai.evals.eval (import it with from decimalai.evals import eval). The top-level decimalai.eval(...) is a different function — it pushes an already-computed score to a trace (see External Score Import). It is not the decorator. Reach for decimalai.evals.eval to define a check, and decimalai.eval to record a result.
Write custom evaluators that run on every trace:
An evaluator’s return type determines how its result becomes a score:

Sampling Rate

Expensive evaluators (especially LLM-as-judge) can run on a subset of traces:
Traces not sampled are skipped silently — no score is recorded for them.

TraceData Fields


Eval Dashboard

The Evaluate page provides a production-grade dashboard:
  • Stat Cards — Pass rate, evaluated count, average score, failed/review counts
  • Pass Rate Over Time — Stacked bar chart showing daily pass/fail trends with a trend line
  • Score Distribution — Histogram of eval scores across all evaluators
  • Evaluator Breakdown — Scores grouped by source (builtin, SDK, LLM judge, external)
  • Verdict Filters — Filter the trace table by pass, fail, review, or unevaluated

Auto-Scoring

Configure automatic evaluation of incoming traces per-agent: Configure auto-scoring from the Evaluate dashboard’s Auto-Scoring panel, or by registering evaluators via the API. Each evaluator you create for an agent runs automatically on that agent’s incoming traces:
The older GET/PUT /api/v1/agents/{name}/eval-policy route is deprecated. Configure auto-scoring through /api/v1/evaluators (above) instead.

External Score Import

Push scores from external evaluation tools (DeepEval, LangSmith, custom pipelines):

SDK Convenience Methods

REST API

LangSmith Webhook

For teams using LangSmith online evals, set up a webhook to push scores automatically:
External scores appear alongside built-in scores in the dashboard and feed into the same decision engine.

Decision Engine

The decision engine aggregates scores from all sources (built-in, SDK, LLM judge, external) into a unified verdict: The eval verdict (Pass / Fail / Review / Unevaluated) answers “is this output high quality?” It is orthogonal to the compatibility verdict (keep / repair / flag / replay / drop), which answers “what should we do with this trace for training?” The engine reads both as inputs but keeps the two axes distinct. Verdicts feed into:
  • Dataset filtering — only pass traces are included in training data
  • Compatibility scoring — combined with manifest verdicts (keep/repair/replay/drop)
  • Dashboard analytics — pass rate trends and regression detection

Batch Evaluation

Run evaluators across multiple traces programmatically:
Batch eval fetches traces from the backend, runs your evaluators in parallel, and pushes scores back. Useful for backfilling scores on existing traces or running offline eval passes.

Next Steps

Eval Scores API

Push and retrieve evaluation scores per trace.

Evaluation concepts

Evaluators, eval scores, eval verdicts, the unified decision engine.

Datasets

Filter datasets by eval verdict — only train on high-quality traces.

Migration from other tools

Push scores from DeepEval, LangSmith, or your custom eval pipeline.