Best Practices for Building Agents Recap
Arthur

Agent Reliability SLAs: How to Set SLOs for Probabilistic Systems

August 4, 20267 min read

Traditional SLAs were written for deterministic software. Send the same request, get the same response, and measure whether the service stayed up. AI agents break that assumption. The same input can produce a good answer today and a wrong one tomorrow, and the service can be fully available while the agent quietly hands users incorrect results.

That gap matters because agents now touch revenue, customer support, and internal systems where failure carries a real cost. Reliability targets still belong in the contract. What changes is what you measure and how you enforce it. This post covers how to define service level indicators for agents, set service level objectives and error budgets that account for non-determinism, and measure agent reliability continuously in production.

Why traditional SLAs don't fit AI agents

A conventional SLA promises availability: 99.9% uptime, a maximum response time, a support window. Those metrics assume correctness is a given once the service responds. For a payments API, that assumption holds. The endpoint either returns the right balance or it errors.

An agent can return a fluent, confident, and completely wrong answer with a 200 status code. Uptime tells you the process is running. It says nothing about whether the agent booked the right flight, generated valid SQL, or grounded its response in the retrieved documents. "The service is up" and "the agent did its job" have come apart.

Non-determinism compounds the problem. An agent that passes a test suite today can fail the same cases tomorrow because the model samples differently, a tool returns slightly different data, or retrieved context shifts. A reliability contract for agents has to measure the quality of outputs over a distribution of runs, not the binary availability of an endpoint.

What you're actually promising: correctness, not just availability

Agent reliability is several dimensions at once, and a useful SLA names each one:

  • Availability — the agent responds and completes its loop without erroring out.
  • Correctness — the output does what the user asked, judged against the task.
  • Groundedness — factual claims trace back to context the agent actually had.
  • Latency — the full agent loop finishes within an acceptable window.
  • Cost per task — the run stays inside a per-task compute budget.

A single "accuracy" number papers over all of this. An agent can score 95% on a benchmark and still hallucinate on the 5% of queries that matter most, or answer correctly but take 40 seconds and three model calls to do it. Reliability targets have to name the specific behaviors you care about so that a failure in one dimension is visible instead of averaged away.

Defining SLIs for agents

Service level indicators are the measured signals underneath your targets. For agents, the indicators that map to real user outcomes include goal accuracy (did the agent fulfill the user's intent), hallucination rate, task completion rate, tool-call correctness, and end-to-end latency. Each one corresponds to a failure mode a user would actually notice.

These signals only mean something if you measure them against real production traffic, not a static offline sample. The distribution of inputs in production is far wider than any handwritten test set, and non-deterministic behavior means yesterday's pass rate does not guarantee today's. Measuring an SLI continuously requires visibility into what the agent did on every run: the prompts, the tool calls, the retrieved documents, and the reasoning steps in between. That depends on instrumenting every tool call, retrieval, and reasoning step so the raw data for each indicator is captured as the agent executes. Without that trace data, your SLIs are guesses.

Setting SLOs and error budgets for probabilistic systems

A service level objective turns an indicator into a target: hallucination rate under 2%, goal accuracy above 95%, p95 latency under eight seconds. The targets should reflect what the use case can tolerate. A customer-facing support agent handling refunds needs a tighter groundedness objective than an internal drafting tool.

The measurement primitive underneath these targets should be binary. Score each interaction as pass or fail against a specific check rather than on a 1-to-10 range. Range scores push the judgment onto a human who has to decide what threshold matters, and model-based scorers are inconsistent enough that the same interaction can return a 4 on one run and a 6 on the next. Anchoring targets to binary pass/fail evaluations gives you a rate you can actually hold a number against: the fraction of runs that passed.

From there, error budgets follow naturally. If your goal accuracy SLO is 95%, your error budget is the 5% of runs allowed to fail before the objective is breached. The budget becomes an operating rule. As long as you are inside it, you keep shipping changes. When you burn through it, the priority shifts to fixing reliability before adding features. That framing gives product and engineering teams a shared, measurable definition of "reliable enough."

Latency and cost budgets

Latency and cost are reliability dimensions, not afterthoughts. A correct answer that takes 30 seconds fails a user who expected 5. Set latency SLOs across the full agent loop, since a single request can fan out into multiple model calls, tool invocations, and retrieval steps. Measuring latency per LLM call hides the compounding delay that the user actually experiences.

Cost per task deserves the same treatment. Every model call, tool invocation, and evaluation adds spend, and agents that loop or retry can blow a per-task budget without failing any correctness check. This tension shows up sharply when you add model-based safety checks. A hallucination or toxicity guardrail that runs in the hot path improves correctness but adds latency and cost to every request. Treating both as budgeted dimensions forces the tradeoff into the open instead of letting it surprise you in production.

Measuring against your SLOs in production

Setting objectives is the easy part. Knowing whether you are meeting them requires a meter that runs continuously against live traffic. Unsupervised evaluations do that work: they assess each interaction using only the context the agent had, with no pre-labeled correct answer required, so they can run on every production request. Hallucination, answer completeness, goal accuracy, and topic adherence all fit this pattern, and together they produce the pass/fail rates that tell you whether you are inside your error budget right now.

What you do when a rate crosses a threshold depends on your confidence in the evals. Teams with high-confidence, low-false-positive checks wire up alerts that fire the moment a failure rate spikes, so someone investigates before more users are affected. Earlier-stage teams use failures as a triage queue instead, clustering flagged interactions for human review to find common patterns. Either way, the eval failure rate is the live reading of your SLO.

Enforcing SLOs before regressions ship

Error budgets are most useful as a gate on deployment. Before promoting a prompt change, a model swap, or a retrieval tweak, re-run it against a dataset of known cases and confirm it stays inside your objectives. A change that improves one failure mode while breaking another should never reach users, and the only way to catch that is to measure before you ship.

This is the loop at the center of the Agent Development Lifecycle: observe production behavior, surface failure modes from the traces, feed those cases back into your evaluation suite, and ship improvements only when the suite confirms no regression. The dataset that drove each fix becomes a permanent regression test, so a bug you fixed once cannot silently return. Over time the suite grows into the accumulated definition of how your agent should behave, and your SLOs become enforceable rather than aspirational.

Reliability SLAs as the foundation for governance

Once you have SLOs measured against production traffic, you have something to report. Stakeholders, compliance teams, and enterprise buyers all ask the same question before an agent goes live: how do you know it works, and how do you keep it working. Documented reliability targets, live evaluation results, and running guardrails answer that directly.

This is where reliability engineering meets agent discovery and governance. Governance reviews want evidence that an agent's behavior is measured, that safeguards are active, and that someone owns the numbers. An agent with defined SLIs, enforced SLOs, and continuous evaluation walks into that review already able to demonstrate control. Reliability targets are not just an internal engineering tool. They are the proof of production readiness that clears the path to deployment.

TLDR

  • Traditional availability SLAs don't fit agents, because a fully available agent can still return wrong answers, and non-determinism means the same input can pass today and fail tomorrow.
  • Break agent reliability into named dimensions: availability, correctness, groundedness, latency, and cost per task. A single accuracy number hides the failures that matter.
  • Define SLIs that map to real user outcomes (goal accuracy, hallucination rate, task completion, tool-call correctness, latency) and measure them continuously against production traffic.
  • Turn SLIs into SLOs with binary pass/fail measurement, then set error budgets that gate when you ship versus when you stop and fix.
  • Budget latency across the full agent loop and treat cost per task as a first-class reliability dimension.
  • Measure against your objectives with continuous evals, enforce them before regressions ship, and use the results as the evidence that carries an agent through governance review.

Want to go deeper on the practices behind these targets? Start with the best practices series on observability, evaluation, and guardrails, or book a demo with an AI expert to see how to measure agent reliability against your own objectives.

SHARE