Skip to main content
Build a multi-agent customer support system using Google ADK and progressively add HoneyHive observability — from auto-tracing through enrichment, custom spans, and evaluation. What you’ll build: A coordinator agent that routes customer queries to specialist sub-agents (billing and technical support), with full tracing and an evaluation pipeline.

Get the code

Clone the cookbook repo to run it yourself
Looking for more runnable examples? Browse the full cookbook collection on GitHub. Prerequisites:

Setup

Create a .env file:

Walkthrough

1

Define agents and add tracing

The app has three agents: a coordinator that routes queries, and two specialists with tools.
The coordinator uses ADK’s native LLM delegation — the model reads each sub-agent’s description and decides where to route.Adding HoneyHive tracing takes 4 lines. Initialize the tracer and instrumentor before running your agents:
Run it:
In HoneyHive, you’ll see the full trace hierarchy: coordinator routing decisions, sub-agent delegation, LLM calls, and tool executions — all captured automatically with no changes to your agent code.
2

Enrich traces with business context

Auto-tracing captures the agent mechanics, but you also need business context to make traces useful in production: which user made this request, what environment is this, what version of your app.
This attaches to the session, so every trace in this session carries the context. In HoneyHive you can now:
  • Filter traces by user, plan, or environment
  • Search for all traces from a specific customer
  • Compare behavior across app versions
3

Add custom spans for business logic

The instrumentor captures ADK internals automatically. For your own code that wraps around agent calls — input validation, formatting, orchestration — use the @trace() decorator:
This creates a span in the trace for preprocess_query, so you can see exactly how long input processing takes alongside the agent spans.When to add custom spans vs rely on auto-instrumentation:
4

Evaluate agent quality

Once your agent is traced, you want to know: is it actually good? The evaluate.py script runs the agent against a test dataset and measures quality.Define a dataset of customer queries with expected categories:
Define evaluators — functions that score each response:
Run the experiment:
HoneyHive’s evaluate() runs your agent against every datapoint, applies each evaluator, and uploads the results. You can view them in the Experiments UI to see scores per query, aggregate metrics, and compare across runs.

Next steps

Production Deployment

Configure tracing for serverless, web servers, and Kubernetes

Distributed Tracing

Trace agents across service boundaries

Experiments Quickstart

Deep dive into HoneyHive’s evaluation framework

Other Frameworks

LangChain, LangGraph, Strands, CrewAI, and more