AI observability is how you understand what your LLM and agent systems are actually doing in production, from the input a user sent to the output your model returned and every step in between. It covers the traces, evals, and feedback signals that tell you whether the system was right, not just whether it answered.
A model can return a 200, respond in 400 milliseconds, and still be wrong. Your dashboards stay green while a user reads a confident, fluent, incorrect answer. Uptime is not correctness, and closing that gap is the entire job of AI observability.
Why AI Observability Is Different From Traditional Observability
Traditional observability was built for deterministic systems. The same input gives you the same output, and when something breaks it breaks loudly: an error, a timeout, a 500. You watch latency, error rates, and resource usage, and those three catch most of what goes wrong.
LLM systems break quietly. The same prompt can return a different answer every time you run it. Nothing throws when a model invents a citation or ignores half your instructions. The bad response looks exactly like a good one. Same status code, same latency, same shape. The only thing wrong is the content, and content is the one thing your old tooling never had to look at.
Here are three things that make AI systems hard to observe:
- They are non-deterministic. You cannot reproduce a bad output by replaying the input, because the input was never the whole story. Temperature, model version, and context all move under you.
- They have no ground truth at runtime. A failed database query is failed, full stop. A weak model answer is a judgment call, and that judgment has to come from an eval, a human, or a downstream signal. A status code will never give it to you.
- They fail on a new axis: quality. A traditional service is up or down. An AI system can be up, fast, cheap, and wrong at the same time. Quality is the dimension your old tools cannot see, and it is the one that loses you users.
How AI Observability Works: The Core Signals
AI observability works by capturing a handful of signals at every layer of a request, then letting you query them together. No single signal tells you the whole story.
Those signals do not float free. Each one lives at a specific layer of an LLM or agent stack, and knowing where each belongs is half of instrumenting cleanly. There are four layers to observe:
-
Interface layer - The user-facing edge, where input comes in and feedback comes back.
-
Orchestration layer - Prompt construction, retrieval, and routing. If you run RAG, retrieval is its own surface here: watch embedding quality and retrieval relevance, since a wrong answer often traces back to the wrong document, not the model.
-
Reasoning layer - The agent's steps: planning, tool calls, and loops.
-
Model layer - The raw LLM call, where tokens, cost, and latency are set.
Traces tie those layers into one request, and evals attach a quality judgment at any of them. The rest of this section walks the signals themselves.
Traces and Spans
A trace is the full record of one request moving through your system. Each step inside it is a span: the retrieval call, the prompt you built, the model call, a tool invocation, the parsing of the response. A simple chat completion might be a single span. An agent run can be dozens.
Traces are the floor you build everything else on. Without them, you are debugging from scattered logs and guesses. With them, you open any request a user complained about and see exactly what the model saw and what it did next. If you want the mechanics, LLM tracing goes deeper on how spans get captured and stitched together.
Evals
Evals are how you put a quality judgment on an output. They run from cheap deterministic checks (did you get valid JSON, did it stay under the token budget) to LLM-as-judge scoring (was this relevant, grounded, on-instruction) to human review.
Collecting evals is not the same as running them. The point is not a pile of stored scores. It is to alert on them, diff them across releases, and catch a regression before your users do. An eval you never act on is just an expensive log line.
User Feedback
User feedback is the ground truth traditional observability never had. Thumbs up and down are the obvious signals. The implicit ones are usually more honest. A user who edits your output, retries the same prompt, or quits the session is telling you something failed, even if they never touch a button. Capture those and real usage becomes a running eval.
Cost and Tokens
Every LLM call has a price, and unlike CPU or memory, it maps straight to a line on an invoice. Treat token counts per call, per user, and per feature as first-class signals, not an afterthought. They show you where spend piles up, which features lose money, and the moment a prompt change quietly doubled your bill. You watch cost right next to quality, because the two are always pulling against each other.
Observability vs Monitoring
Monitoring tells you whether the system is up. Observability lets you ask why it behaved the way it did, including whether the answer was correct. Monitoring is the smaller thing, and it sits inside observability rather than replacing it.
The Pillars of Observability
The classic framing is logs, metrics, and traces. It still holds for AI systems, but on its own it misses the point, because none of those three capture output quality. For LLM and agent systems, evals and user feedback belong right alongside the original three.
AI Observability Metrics to Track
These are the numbers you actually watch once it is running. Group them so a dashboard answers three questions at a glance: Is it fast? Is it expensive? Is it any good?
Performance
- Latency, at p50, p95, and p99. Averages hide the slow tail, and the tail is what users feel.
- Time to first token, for anything streamed to a user.
- Error and timeout rate, split by model and provider.
Cost
- Tokens per request, input and output separately, since output usually costs more.
- Cost per request, per user, and per feature. Per-feature is what tells you which parts of the product are unprofitable.
- Cost trend over time, so a prompt change that doubles spend shows up as a line, not a surprise invoice.
Quality
- Eval pass rate, tracked per release so a regression is visible before users find it.
- Groundedness or hallucination rate, for anything doing retrieval or citing sources.
- User feedback signals: thumbs, edit rate, retry rate, abandon rate.
The first two groups your old tooling can produce. The third is the reason AI observability exists. A dashboard that shows latency and cost but nothing about quality is monitoring an AI system as if it were a web server, and that is exactly the gap that lets a green dashboard sit on top of a broken feature.
The AI Monitoring and Observability Checklist
Most checklists you will find stop at latency and errors, which is the half a good APM tool already gave you. The evals and quality signals are the half teams skip and regret. Here is the full baseline for instrumenting an LLM or agent system:
- Capture full request and response traces on every LLM call
- Log token counts and cost per call, per user, and per feature
- Track latency at the span level, not just end to end
- Run evals on outputs, not just collect them
- Alert on quality regressions, not only errors and downtime
- Capture user feedback signals: thumbs, edits, retries, abandons
- Tag traces by version (prompt, model, agent config) so you can diff releases
- Monitor tool-call success and failure rates for agents
- Sample high-volume endpoints so cost stays sane
- Retain traces long enough to debug an issue reported days later
The line runs through the middle of that list. Everything above "run evals" is table stakes your old tooling can handle. Everything from evals down is specific to AI, and it is where the real failures hide.
AI Agent Observability Best Practices
A single-call LLM app has one thing to observe. An agent has a chain. It plans, calls a tool, reads the result, decides again, calls another tool, and loops until it thinks it is finished. Every link can fail, and a broken link usually shows up as a weird output three steps later. So you observe the whole run, not just the final answer.
Here are some best practices for AI agent observability:
Trace the Full Multi-Step Run
Capture the entire agent run as one connected trace, with every planning step, tool call, and model call as a span underneath it. The value is in the sequence. A wrong final answer almost always traces back to a bad decision several steps earlier, and you can only find it when the steps are linked. This is the same discipline that turns agent debugging into something you can actually do instead of guess at.
Instrument Tool Calls
Tools are where agents touch the real world, and where they break most visibly. Record the arguments the agent passed, the raw response the tool returned, and whether the call succeeded. A malformed argument, or a tool error the agent silently ignored, is one of the most common reasons a run goes sideways. Designing agent tools that fail cleanly is half the battle, since an agent can only recover from an error it can actually see.
Catch Loops and Runaway Chains
Agents loop. Sometimes they loop nearly forever, retrying the same failed step and burning tokens on every pass. Track the step count and the cost per run, and alert when either crosses a threshold. A run that took forty-seven tool calls to do a two-call job is a bug, and it stays invisible unless you are counting.
Track Handoffs Between Agents
In a multi-agent system, one agent hands work to another, and the handoff is a failure point. Context gets dropped, an instruction arrives ambiguous, two agents disagree. Watch what state crosses each boundary so you can see exactly where the chain of custody broke.
AI Observability in Production
In production, observability is metrics, saved views, and alerts running on the same logs and traces you already instrument for debugging. You watch requests, tokens, errors, latency, and cost as they move, and you get paged when something crosses a line you set. The failure mode is fragmentation: metrics in one tool, traces in another, cost in a billing export. When a chart spikes, you cannot open the runs behind it, and the number stops meaning anything.
Respan keeps those together. It lets you route, observe, and evaluate every LLM call from one platform, and the observability side is built so the dashboard you chart and the traces you debug run on the same data. The payoff is simple: you know when production shifts, and you act before it spreads.
Here is how it works:
-
Ingest - Send traffic with the Respan SDK or OTLP so every request feeds metrics, logs, and traces at once. Tag requests with metadata like feature, environment, and a customer identifier so you can slice them later.
-
Aggregate - Track requests, tokens, errors, latency, and cost on the dashboard, broken down by model, user, and API key. A cost spike is a chart you can read, not a surprise on the monthly invoice.
-
Save views - Filter logs or traces down to what you care about (production errors, high-cost requests) and save the filter as a view. Nobody rebuilds the same query during the next incident.
-
Monitor - Deploy monitors that watch error rate, cost, latency, or tokens and alert Slack, email, or a webhook on breach. You catch a cost or latency regression that returns a clean 200, which is the class of failure HTTP-only alerts miss entirely.
Because the metrics, views, and monitors all sit on the same traffic, an alert comes with the runs attached. On-call opens the failing traces from the same filter that fired the monitor, instead of starting the search from scratch.
Instrumenting is a few lines. The Respan SDK works through the OpenAI SDK you are probably already using:
import os
from openai import OpenAI
from respan import Respan
os.environ["RESPAN_API_KEY"] = "YOUR_RESPAN_API_KEY"
Respan()
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
extra_body={
"customer_identifier": "user_123",
"metadata": {"feature": "support_bot", "environment": "production"},
},
)
print(response.choices[0].message.content)That metadata block is what makes the dashboard breakdowns and the monitor conditions work. Tag by feature and environment on the way in, and you can slice cost by feature or scope an alert to production later.
Why teams run observability on Respan
Instead of reading logs after the fact, use Respan to run observability in production, know when production shifts, and act before it spreads.
- See requests, tokens, errors, latency, and cost in one place, broken down by model, user, and API key. No stitching three tools together to answer one question.
- Alert when metrics breach on cost, latency, and tokens, not just errors, so you catch the regressions that still return a clean 200.
- Every alert arrives with the runs attached. On-call opens the failing traces from the same filter that fired the monitor, instead of starting the search from scratch.
- Tag by feature, environment, and user, then slice cost and quality by any of them to find what is actually driving spend.
- Instrument through the OpenAI SDK you already use. It is a few lines, not a migration.
If you are still weighing options before you instrument, our 9 best LLM observability tools roundup covers the current landscape and where each one fits.
Frequently Asked Questions
Is AI Observability the Same as Monitoring?
No. Monitoring tells you whether the system is up and responding. Observability lets you ask why it behaved the way it did, including whether the output was correct. Monitoring sits inside observability as the smaller piece.
AI Observability vs LLM Observability: What's the Difference?
AI observability is the broad category for any AI system in production. LLM observability is the subset focused on large language model applications. If you are building on LLMs and agents, the two overlap almost completely, and the signals (traces, evals, feedback, cost) are the same either way.
What Are the Pillars of Observability?
The classic three are logs, metrics, and traces. They still apply to AI systems, but they are incomplete on their own, because none of them capture output quality. That is why evals and user feedback belong next to them for LLM and agent workloads.