
Evaluating AI Agents
A practical guide to grading an agent's path, not just its answer: tools and MCP, the trajectory, multi-turn conversation, trace analysis, and safety when the agent can act.
Get the guideYour agent reports what it did. EvaliQA stores it, groups it into sessions, scores it against the same metric catalogue your test runs use, and tells somebody when a rule breaks.
Online evaluation is scoring the traffic your AI application actually receives in production, as it arrives, rather than a test set you chose in advance. Each trace is stored, grouped into a session, scored against metrics and watched by alert rules, so a regression in the wild is found by a score rather than by a user complaint.
Runs on live traffic, and feeds a bad session back to your tests.
If your stack already emits OpenTelemetry, point an OTLP/HTTP exporter at EvaliQA and you are done. If it does not, the Python SDK wraps your agent's entry point, records each step as a span and posts the finished trace as JSON. Pick by what your app already has, not by what it might need later. Traces from either door are stored, grouped into sessions, and attributed to users identically.
Not every session deserves a strong model reading it end to end, and not every problem needs one to be found. So scoring is layered, and you choose how deep it goes per project.
Under a minute: turn online evaluation on for a project, and production traffic starts getting scored with the same metrics the release was gated on.
Every trace, its spans, its inputs and outputs, filtered by project, session, user or time, with the scores attached.
One rule, one project, one thing to watch, fanned out to Slack, Discord, Teams, Telegram, email or any webhook.
A real session that went wrong is the best test row you will ever write. Pull it back into a dataset and it becomes a regression test.
Traces expire on your plan's window, 14 days on Free and 180 on Team. Scores and datasets are never deleted.
The method behind the product, written down in full. Free to read and keep.

A practical guide to grading an agent's path, not just its answer: tools and MCP, the trajectory, multi-turn conversation, trace analysis, and safety when the agent can act.
Get the guide
A practical guide to measuring retrieval and generation separately, building datasets you can trust, and turning one-off checks into a regression process.
Get the guideOffline evaluation runs a test plan against a dataset you wrote before release. Online evaluation scores the conversations your users actually have after it. EvaliQA keeps the two on separate rails, so a noisy day in production never moves a release-gate number, and they meet only at the metric catalogue, so a score means the same thing whether it came from a test run or from live traffic.
Observability shows what your AI application did per request: the trace and its spans, the inputs and outputs, latency, tokens and cost, grouped into sessions. Evaluation adds a score on top, so you can tell whether what happened was actually good. A logging tool answers what happened; online evaluation answers whether it was right, and tells you when it stops being.
You score the traces it produces as they arrive, instead of a test set you chose in advance. Your agent posts one trace per request, EvaliQA groups the traces into sessions and scores each session against the metrics you bound, and a rule tells someone when a score drops. Nothing runs on your eval path: the scoring happens on our side, on your workspace's key.
Two ways. If your stack already emits OpenTelemetry, point an OTLP/HTTP exporter at EvaliQA and you are done, GenAI span conventions included. If it does not, the Python SDK wraps your agent's entry point, records each step as a span and posts the finished trace as one HTTP request. No daemon, no long-lived connection, and nothing runs on the request path.
Bind the metrics that measure them, faithfulness and groundedness for a hallucination, relevancy and your own judges for quality, and they score live traffic exactly as they score a test run. Deterministic detectors flag errors and retry loops in under a second, and the AI Analyst reads a whole session for reasoning and tool-use problems. An alert fires when a pass rate slips, not only when latency spikes.
A rule watches one thing on one project: a metric's pass rate, its mean score, or findings above a severity. When a freshly scored session crosses the line, the alert fires once and reaches the channels you picked, Slack, Discord, Teams, Telegram, email or any webhook. Because it watches evaluation signals, it catches a quality drop, not just a 500 or a slow response.
Yes, and it is the point. A real session that went wrong is the best test row you will ever write, so you pull it back into a dataset and it becomes a regression test on the offline rail. The next release is scored against the failure you already saw in the wild, so the same problem cannot ship to users twice.
Traces expire on your plan's retention window, 14 days on Free and 180 days on Team. The scores computed from them, and any dataset rows you pulled from a session, are never deleted, so your history and your regression tests outlive the raw traces they came from.
Send one trace, see it scored, and set the rule that would have told you.