As I'm sure you already know, AI responses aren't always correct (your favorite LLM probably has a disclaimer saying the same thing). So as adoption of AI coding agents like Claude Code—or really any application that calls tools—takes off, it's natural to have questions about the answers users get back. Did the agent call the right tool? What context went to the LLM before it gave its response?
Traditional application monitoring can tell you that an API responded successfully within 5 seconds. That's useful! But when that observability philosophy is applied to AI, it treats the entire workflow (whether it's agentic, RAG, or beyond) as a single black box.
That's why AI observability matters: it makes it possible to connect the response a user sees to the model calls, retrieved context, tool uses, and all the other steps that produced it. In this blog post, I’ll walk through a typical agentic application and show you how that can work, using the open source project MLflow behind the scenes.
Where you can go wrong without AI observability
Say we have a mortgage lending application, where our team can ask an AI assistant questions about the business—something like "show me the current pipeline status." The assistant uses tools that retrieve internal data.
Figure 1 illustrates the dashboard where team members can see data and interact with the assistant. At first glance, the assistant’s answer looks solid. But notice that its 44% pull-through rate and 60 average days to close response doesn't match the dashboard, which gives 43.2% and 52.5 days for the same metrics.
So did the model hallucinate? Well… we don't know! The dashboard and the assistant could be using different time windows, different queries, or different definitions of "pull-through." From this view, there's no way to tell. That's the observability gap, and the way out of it is being able to see the path that produced the answer.
Finding the request in MLflow
All we've seen so far is a final answer, but there was an entire decision-making process that happened in the few seconds between the question and the response. A typical agentic query like this one generates more than 30 metrics (token counts, LLM latency, database query times) and more than 15 log events (agent decisions, tool parameters, and so on) into a single distributed trace. MLflow can provide visibility into those traces, as shown in Figure 2.
This gives us a lot more than an HTTP access log. We can associate a request with a conversation session, inspect its complete response, and open the trace directly instead of manually correlating a handful of services, as shown in Figure 3.
In this specific trace, we can see:
- The first model call took 2.48 seconds and decided what action to take.
- A tool call (
ceo_pipeline_summary
) grabbed data from our internal application and returned it to the LLM in 75 milliseconds. - A second model call took 2.40 seconds and composed the final answer.
So the tool wasn't the bottleneck here. Almost all of the request time came from the 2 model calls. That's immediately useful to 2 different teams: your SRE/platform folks get real latency attribution, and your AI engineering team gets a view into model behavior and decision quality.
Tracing what happened to the AI agent
Now let's look inside those spans, specifically the ceo_pipeline_summary
tool call we mentioned earlier. Figure 4 illustrates what this looks like.
There it is! MLflow shows that our agent received an input of 44% and 60 days, the exact numbers it reported. So we have concrete evidence the model didn't invent those figures. It accurately summarized what it received from the tool.
This means that the difference between our assistant and the dashboard is farther upstream. Maybe the data is calculated differently, maybe one result was cached, maybe the tool is querying a different date range. We still don't know the answer! But we've gone from "the AI got it wrong" to "the tool and the dashboard disagree," and that's a bug someone can actually pick up and fix. That's the practical value of tracing an agent.
What MLflow adds to your observability stack
Simply put, we need metrics, logs, and traces more than ever. MLflow connects a single user request to the model calls, tools, prompts, and context that produced an answer.
MLflow is open source and compatible with OpenTelemetry, and also with automatic tracing integrations for popular model and agent frameworks, including LangChain, Claude Code, and many other AI tools.
With Red Hat OpenShift AI, you get logical isolation for your traces and experiments, so alongside serving models and running automations, you can debug requests and watch how your AI applications and agents are actually performing, in one place, across any hybrid cloud provider. That's pretty neat, I'd say! You can try out the demo application we’ve been discussing (see Figure 5 for the architecture) as a Red Hat AI Quickstart. It demonstrates a complete (and sovereign) agentic AI use case with MLflow.
Wrapping up
We just walked through debugging a single request, but the real value shows up over time. Once you're capturing traces, you can use them to evaluate future versions of the application, watch for changes on your model provider's end (did it just get nerfed?), and build pipelines that catch regressions in tool calls before your users do.
As we depend more and more on AI applications and agents, I really think AI observability stops being just nice to have and becomes a requirement for anything you put in production. It makes it possible to either confirm that you’re getting the right answer back, or to figure out exactly where you went wrong.
Facts Only
* An AI agent can use tools to interact with internal data.
* A discrepancy was observed between an assistant's reported metrics (44% pull-through, 60 average days) and dashboard metrics (43.2% pull-through, 52.5 days).
* MLflow traces a typical agentic query, capturing model calls and tool executions.
* One trace showed the first model call took 2.48 seconds for action decision.
* A tool call, `ceopipelinesummary`, returned data in 75 milliseconds.
* The second model call took 2.40 seconds to compose the final answer.
* Tracing confirmed that the tool accurately provided the input metrics (44% and 60 days) reported by the agent.
* MLflow provides visibility into token counts, LLM latency, database query times, and agent decisions.
* MLflow is compatible with OpenTelemetry and frameworks like LangChain and Claude Code.
* Red Hat OpenShift AI integrates MLflow for tracing and experimentation in hybrid cloud environments.
Executive Summary
AI observability is necessary to connect the final user response to the complex sequence of internal operations that produced it, addressing the "black box" nature of agentic systems. Traditional monitoring focuses on external API success times, but AI observability extends this concept to trace model calls, retrieved context, and tool usage within a workflow. This visibility is crucial because discrepancies between an assistant's output and underlying data sources (like a dashboard) can occur due to differences in time windows or data definitions, which traditional logs cannot resolve.
The tracing mechanism, utilizing tools like MLflow, allows inspection of distributed traces that capture metrics and log events for every step of an agentic query. For example, tracing demonstrated that tool execution did not cause the overall latency bottleneck, isolating the actual delay to the model processing time. Tracing further allowed verification that data retrieved from a tool was accurately reflected in the final response, shifting debugging focus from blaming the LLM hallucination to investigating data synchronization or upstream system bugs between tools and external dashboards.
Full Take
The necessity of AI observability arises from the functional divergence between externally observable results and internally executed steps, revealing a critical gap where user perception does not align with operational reality. The shift demonstrated—from assuming an AI output is faulty to investigating disagreement between system components—points toward a necessary epistemological shift: treating the entire agentic workflow as a traceable computation rather than a monolithic answer generator.
The pattern detected involves a systemic failure in accountability layered onto complex, multi-step reasoning systems. When disparate data sources (an assistant and a dashboard) conflict, the immediate human tendency is to assign error to the most visible output (the AI), bypassing the mechanism that connects the inputs to the outputs. The value of MLflow lies not just in logging events but in creating an auditable chain of causality between tool invocation and final synthesis. This structure challenges the assumption that complex decision-making can be functionally opaque; instead, opacity introduces systemic risk because errors become entangled and unresolvable across system boundaries.
The implication is that for production AI systems, observability transcends mere performance metrics; it becomes a mechanism for ensuring data integrity and operational coherence across interconnected services. The risk lies in accepting superficial results while ignoring the distributed nature of failure, allowing subtle inconsistencies between tools and models to accumulate unnoticed until they manifest as systemic bugs, which requires tracing capabilities to detect proactively rather than reactively. What subsequent research is needed to establish formal standards for asserting truth provenance across dynamically executed agentic workflows?
