The standard advice for LLM applications has become “wrap the prompt and ship it,” and it is wrecking production stability. The NeMo Agent Toolkit is one answer to that. I thought we were past the black box era of development, and yet devs keep building complex agentic workflows with no visibility at all into what happens between the input and the final response.
In 14 years of wrestling with code, the lesson that keeps holding is that you cannot maintain what you cannot measure. Shipping an AI agent without observability is like shipping a WordPress plugin with WP_DEBUG off and no error logs. You are guessing. The NeMo Agent Toolkit (NAT) is how I stop guessing, with real observability and evaluation.
The observability bottleneck
Multi-step agents, a robust vibe agent for example, produce a messy chain of thought. A tool call hangs, data retrieval hits a race condition, or the LLM decides to hallucinate a JSON schema. Without tracing, all you have to work with is a “Server Error” or output that makes no sense.
The NeMo Agent Toolkit integrates with Arize Phoenix and W&B Weave to give you a full trace of every hook and filter in your AI workflow. Setup is a matter of configuring your YAML. This points NAT at a local Phoenix server:
# config.yml configuration for NAT tracing
general:
telemetry:
tracing:
phoenix:
_type: phoenix
endpoint: http://localhost:6006/v1/traces
project: bbioon_happiness_report
From then on, every tool call, token count and latency metric gets logged. That is how you find token bloat, where the agent makes redundant calls that add nothing to the answer and plenty to your API bill.
Trajectory evaluation, not just the answer
Most developers stop at Answer Accuracy: does the output match the ground truth? Worth measuring, but incomplete. You also want the Trajectory. An agent that takes 8 steps to solve a problem that needs 3 is a bottleneck even when the answer is right.
The NeMo Agent Toolkit runs automated evaluators using LLM-as-a-Judge prompts, scoring the agent on groundedness (did it use the data you gave it?) and on trajectory accuracy. If AI hallucinations are giving you trouble, this is where you catch them before the client does.
# Running the evaluation via CLI
nat eval --config_file src/configs/config.yml
The results come back as a normalized score. I have watched a switch from a heavy model like Claude 3.5 Sonnet to a lighter one like Haiku drop trajectory accuracy from 0.85 to 0.55. On paper Haiku was faster and cheaper. The evaluation showed it taking twice as many steps to reach a worse result.
Comparing model versions without breaking things
Refactoring is part of the job, and refactoring an LLM app is risky because the output is non-deterministic. NAT makes model comparison manageable: with W&B Weave you can generate radar charts that put different versions of your application side by side.
The modular config also lets you swap your chat_llm or calculator_llm without touching a line of your core logic, the same way a clean WordPress build keeps theme and custom plugin logic apart.
If this NeMo Agent Toolkit work is eating your dev hours, hand it over to me. I have been wrestling with WordPress and AI integrations since the early days, and I know how to build systems that hold up as they grow.
Where to start with AI observability
AI is not a magic layer that gets to skip standard dev practice. Get your metrics in order with the NeMo Agent Toolkit, and put trajectory evaluation near the top of the list, because an agent can be correct and still be wasteful. A bottleneck you can see in Phoenix or Weave is a bottleneck you can fix. The ones you cannot see turn into a support ticket that eats your weekend.