<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Evals on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/evals/</link><description>Recent content in Evals on Nicole van der Hoeven</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Nicole van der Hoeven</copyright><lastBuildDate>Thu, 08 Oct 2026 14:00:00 +0200</lastBuildDate><atom:link href="https://nicolevanderhoeven.com/tags/evals/index.xml" rel="self" type="application/rss+xml"/><item><title>Roundtable: How We Really Use AI in Testing (HUSTEF 2026)</title><link>https://nicolevanderhoeven.com/blog/20261008-ai-testing-roundtable-hustef/</link><pubDate>Thu, 08 Oct 2026 14:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20261008-ai-testing-roundtable-hustef/</guid><description>&lt;p&gt;On the final day of &lt;a href="https://hustef.com/"&gt;HUSTEF 2026&lt;/a&gt; in Budapest, I joined the conference&amp;rsquo;s roundtable on AI in testing — &lt;em&gt;&amp;ldquo;AI Open Space Experiences: a roundtable with speakers on their experiences with AI testing.&amp;rdquo;&lt;/em&gt; It was five of us on stage: me plus &lt;strong&gt;Marta Firlej&lt;/strong&gt;, &lt;strong&gt;Kristoffer Nordström&lt;/strong&gt;, &lt;strong&gt;Callum Akehurst-Ryan&lt;/strong&gt;, and &lt;strong&gt;Maryia Tuleika&lt;/strong&gt;, with Marta moderating.&lt;/p&gt;
&lt;p&gt;The format was refreshingly honest — &amp;ldquo;how we &lt;em&gt;really&lt;/em&gt; use AI, with no bullshit.&amp;rdquo; Marta had run the same &amp;ldquo;AI open space&amp;rdquo; exercise with the Polish testing community, crowdsourcing the actual, un-hyped ways people use AI (information gathering, functionality discovery, generating tests and code, TDD, recruitment, presentation prep, even designing furniture and planning holidays), and then opened it up to the panel and the room. Here&amp;rsquo;s roughly how I answered her questions:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you use AI for?&lt;/strong&gt; Mostly two things at work: analysing codebases and test code to understand what something actually does, and filling gaps on teams without a dedicated quality engineer — baking my testing knowledge into an AI the team can ask questions of. On the personal side, I&amp;rsquo;ve run some weird experiments: I&amp;rsquo;m a lifelong note-taker with decades of context (journals, therapy notes, eight years of WhatsApp history with my partner), so I&amp;rsquo;ve fed it all into a &lt;em&gt;local, open-weight&lt;/em&gt; model and asked things like &lt;em&gt;&amp;ldquo;what do I claim to believe, and where have I acted contrary to that — cite your evidence?&amp;rdquo;&lt;/em&gt; It&amp;rsquo;s a surprisingly honest mirror. I&amp;rsquo;m in a privileged spot with effectively unlimited AI access right now, and I know it won&amp;rsquo;t last, so I want to find out what&amp;rsquo;s safe and what isn&amp;rsquo;t while I can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you stay up to date?&lt;/strong&gt; Honestly, I don&amp;rsquo;t — not by chasing model releases or news. I keep up with how &lt;em&gt;other people&lt;/em&gt;, especially in testing, are using AI, and I lean on my coworkers (we&amp;rsquo;re at the forefront of this at work, so stepping outside that bubble is a useful reality check). I do have a scheduled Claude Code task that scrapes my ~34 AI-related Slack channels into a daily digest of just the things I care about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One piece of advice?&lt;/strong&gt; Don&amp;rsquo;t trust AI too much, and don&amp;rsquo;t believe you&amp;rsquo;re as far behind as you think. Almost no one has really tried this stuff; it&amp;rsquo;s genuinely early, everyone&amp;rsquo;s learning, and your foundational testing skills transfer. Just pick it up, play, and if it&amp;rsquo;s not for you, move on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything you&amp;rsquo;d never use AI for?&lt;/strong&gt; Communicating with people as a &lt;em&gt;proxy&lt;/em&gt;. I&amp;rsquo;ll use it to translate or to help me sound more fluent (I live across multiple languages — Portugal, Dutch, English), but I never want it to craft a whole message I didn&amp;rsquo;t think of. I don&amp;rsquo;t want to lose the discipline of actually talking to a human.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ethical dilemmas?&lt;/strong&gt; Yes — which is exactly why I keep my use mostly in the context of work, and try not to generate imagery or anything that&amp;rsquo;s obviously lifting from artists who deserve to be paid for it. There&amp;rsquo;s no hard line; it&amp;rsquo;s a sliding scale, and I have to keep questioning myself. (A Mastodon line stuck with me: &lt;em&gt;the strange future where the humans do the menial tasks and the robots write poetry and paint.&lt;/em&gt; I try not to let AI stop me from making art.)&lt;/p&gt;
&lt;p&gt;The best part of these panels is always the disagreement and the texture — five people who use AI daily and still land in very different places on trust, ethics, and what it&amp;rsquo;s actually &lt;em&gt;for&lt;/em&gt;. Thanks to Marta for moderating and to Kristoffer, Callum, and Maryia for a genuinely good conversation.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hustef.com/"&gt;HUSTEF 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My HUSTEF keynote: &lt;a href="https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/"&gt;&lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Testing for AI&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Testing for AI (HUSTEF 2026)</title><link>https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/</link><pubDate>Wed, 07 Oct 2026 10:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/</guid><description>&lt;p&gt;This week I gave a keynote at &lt;a href="https://hustef.com/nicole_van_der_hoeven_2026/"&gt;HUSTEF 2026&lt;/a&gt; in Budapest, Hungary. The talk is called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Testing for AI&lt;/em&gt; — a testing-focused evolution of a talk I&amp;rsquo;ve been giving (and rewriting) for a while, previously as &lt;em&gt;Observability for AI&lt;/em&gt; at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; in London, &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;NewCrafts&lt;/a&gt; in Paris, and &lt;a href="https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/"&gt;ExpoQA Madrid 2026&lt;/a&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: &lt;strong&gt;a robot must be testable.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI systems fail differently than traditional software. There&amp;rsquo;s no single correct output to assert against. A response can be fluent and completely wrong. Models drift silently over time. And yet we&amp;rsquo;re shipping AI into production — often without knowing what &amp;ldquo;passing&amp;rdquo; even looks like.&lt;/p&gt;
&lt;p&gt;Observability is what makes testing possible. When we can see inside our AI systems — trace the chain of reasoning, measure what changed, surface what failed — we can start to write evaluations, define what &amp;ldquo;good&amp;rdquo; looks like, and catch regressions we didn&amp;rsquo;t know to look for.&lt;/p&gt;
&lt;p&gt;In this talk, I explore what it means to test AI in the real world, drawing on lessons from building and evaluating an AI assistant for a large-scale observability platform. I&amp;rsquo;ll cover how evaluations work as the AI equivalent of a test suite, what to measure, how to catch hallucinations, and how to know when your model has regressed.&lt;/p&gt;
&lt;p&gt;You cannot test what you cannot see — and you cannot trust what you cannot test.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-01.jpg" alt="Wide shot of me presenting the keynote at HUSTEF 2026, with the title slide reading “The Zeroth Law of Robotics: A robot must be testable” on the big screen above a full audience." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The big shift in this version is right there in the Zeroth Law itself. In earlier iterations I argued that &lt;em&gt;a robot must be observable&lt;/em&gt;. That&amp;rsquo;s still true — observability is the only way to see the reasoning behind a system and find out what actually happened. But I&amp;rsquo;ve come to think that pure knowledge isn&amp;rsquo;t the same as trust. You can know exactly what a system did and still not trust it. The only way to trust something is to put it through its paces: to know how it behaves in the situations you foresee, and even the ones you don&amp;rsquo;t. So the Zeroth Law has become &lt;strong&gt;a robot must be &lt;em&gt;testable&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I framed the whole thing around Asimov&amp;rsquo;s short story &lt;em&gt;Runaround&lt;/em&gt; (from &lt;em&gt;I, Robot&lt;/em&gt;) and its robot, Speedy. Speedy&amp;rsquo;s smuggler owners sent him to collect selenium on Mercury, and he got stuck in a loop — circling the selenium pool, unable to resolve the conflict between obedience (the second law) and self-preservation (the third). His owners couldn&amp;rsquo;t predict his behaviour and couldn&amp;rsquo;t reason about it, so they had to do the only thing left: go out into the danger zone and fix him in production. Speedy wasn&amp;rsquo;t untestable because his owners were incompetent or lacked the tools — he was untestable because he was never &lt;em&gt;built&lt;/em&gt; to be tested. That&amp;rsquo;s the trap I think a lot of AI systems are walking into right now.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-02.jpg" alt="Me looking up at a slide of an armoured robot running across the surface of Mars while I present." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The through-line for a testing audience: AI is rewriting &lt;em&gt;how&lt;/em&gt; software gets built, but it doesn&amp;rsquo;t rewrite the discipline of trust. Trust that a system does what we say it does, and that when it breaks we know why and can fix it — that&amp;rsquo;s always been the job, and it isn&amp;rsquo;t going anywhere. There&amp;rsquo;s a whole generation of AI engineers shipping software they haven&amp;rsquo;t tested and can&amp;rsquo;t explain, and when someone says &amp;ldquo;the agent does this,&amp;rdquo; our job is still to ask &lt;em&gt;how do you know?&lt;/em&gt; Testing isn&amp;rsquo;t just going to survive the age of AI — testing is the reason AI gets to survive, if we make it testable.&lt;/p&gt;
&lt;p&gt;I demoed this with my TTRPG side project: an AI Dungeon Master, instrumented and put under test. It turns out that writing evals for something non-deterministic forces you to confront your real requirements. I thought I knew exactly when a dungeon master should call for a dice roll — I GM myself! — but trying to put it into words (&amp;ldquo;in &lt;em&gt;this&lt;/em&gt; situation I&amp;rsquo;d roll, but in &lt;em&gt;that&lt;/em&gt; one I wouldn&amp;rsquo;t, because I want to keep the story moving&amp;rdquo;) surfaced decisions I&amp;rsquo;d never had to make explicit. Those are things we&amp;rsquo;d normally discover much later, in production. Having to figure them out up front is a win.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-03.jpg" alt="Me grinning during the talk, holding a microphone and presenter clicker." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The Q&amp;amp;A was genuinely great and ranged well beyond the slides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;When has an AI been tested &lt;em&gt;enough&lt;/em&gt;?&amp;rdquo;&lt;/strong&gt; Same answer as for anything else — it&amp;rsquo;s a mix of risk and budget. If it were a life-critical robot like Speedy, you test every scenario the people relying on it need. For my little demo app, less so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testers vs. developers in the age of AI.&lt;/strong&gt; I said I&amp;rsquo;d fire developers before testers — provocatively, but the point stands: anyone can write code now. What made a good developer good was never the coding; it was communicating with business &lt;em&gt;and&lt;/em&gt; engineers, translating requirements, finding creative-but-safe solutions. Testers already think at that level and translate across teams, which makes them &lt;em&gt;more&lt;/em&gt; important in the age of AI, not less.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defining expected results for non-deterministic systems&lt;/strong&gt;, multi-turn evals (I give the simulated user a &lt;em&gt;personality&lt;/em&gt; — adversarial, cooperative, beginner — rather than a script), and the broader shift from imperative to declarative: we no longer instruct step by step, we declare the end state we want, the way we do with Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convincing colleagues not to fear AI.&lt;/strong&gt; I don&amp;rsquo;t, really. AI is here to stay; the question isn&amp;rsquo;t whether you approve of it, it&amp;rsquo;s whether you want to stay in this industry and help make it safe and trustworthy — or sit on the sidelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also recommended the book &lt;a href="https://link.amazon/B0e4SIur8"&gt;&lt;em&gt;Slow AI&lt;/em&gt;&lt;/a&gt;, which lands where I do: not an AI apologist, not a boycott, but a clear-eyed list of what AI is and isn&amp;rsquo;t good for — and the reminder to keep checking whether a given use of AI is making you &lt;em&gt;more&lt;/em&gt; capable or less.&lt;/p&gt;
&lt;p&gt;The demo app (the instrumented AI DM) lives on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;, and I keep refining it with each iteration of this talk.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll update this post with the recording once HUSTEF publishes it.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicole.to/hustef"&gt;Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/asimov"&gt;Demo app on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://link.amazon/B0e4SIur8"&gt;&lt;em&gt;Slow AI&lt;/em&gt; (book)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Previous versions of this talk: &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;NewCrafts 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/"&gt;ExpoQA Madrid 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 4: Evaluating (Grafana AI Week — Thursday)</title><link>https://nicolevanderhoeven.com/blog/20260730-ai-week-thursday-evaluating/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-ai-week-thursday-evaluating/</guid><description>&lt;p&gt;Day four of AI Week is all about &lt;strong&gt;evaluating&lt;/strong&gt; — because building an agent is the easy part; &lt;em&gt;trusting&lt;/em&gt; it is where things get hard. The headline: &lt;strong&gt;Grafana Agent Observability is now generally available&lt;/strong&gt; — the tool Grafana built for itself while scaling Assistant, once it grew too complex to evaluate with unit tests. Instrument your agent with the SDK and your conversations, tool calls, traces, latency, token use, and cost all become observable in one place; add evaluators (LLM judges plus deterministic checks) to score quality on live traffic, feed low-scoring conversations into your test suite, and gate CI on experiments comparing a candidate against a baseline. And because evaluator metrics land in Prometheus, you can get paged when a bad prompt change tanks quality. The fun bonus: &lt;strong&gt;k6 agentic testing&lt;/strong&gt; — describe a browser test in plain language and an agent embedded in k6 drives the browser, no script required (they proved it by getting it to beat Wordle).&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FOHdEm-_DEQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day four of Grafana Labs&amp;rsquo; AI Week, and Thursday is all about &lt;strong&gt;evaluating&lt;/strong&gt; — because building an agent is the easy part. &lt;em&gt;Trusting&lt;/em&gt; it is where things get hard.&lt;/p&gt;
&lt;p&gt;The big news: &lt;strong&gt;Grafana Agent Observability is now generally available.&lt;/strong&gt; This is the tool we built for ourselves while scaling Grafana Assistant, when it grew too complex to evaluate with unit tests. Now it&amp;rsquo;s available to everyone on Grafana Cloud.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how it works: instrument your agent with the SDK, and your conversations, tool calls, traces, latency, token use, and cost all become observable in one place. Then add evaluators — LLM judges plus deterministic checks — to score quality on live traffic. Low-scoring conversations feed your test suite, and experiments let you compare a candidate against a baseline before you ship — you can even make it a CI gate. And because evaluator metrics land in Prometheus, you can get paged if a bad prompt change tanks quality in production.&lt;/p&gt;
&lt;p&gt;But my favorite part of today? &lt;strong&gt;k6 agentic testing.&lt;/strong&gt; Describe a browser test in plain natural language, and an agent embedded in k6 drives the browser for you — no script at all. And to prove it, we gave it one job: beat Wordle. Go watch that video. I&amp;rsquo;ll wait.&lt;/p&gt;
&lt;p&gt;Everything&amp;rsquo;s at &lt;strong&gt;grafana.ai&lt;/strong&gt; — see you tomorrow for the finale: using AI where your team already works.&lt;/p&gt;</description></item><item><title>Investigations Arena: how we test Assistant investigations</title><link>https://nicolevanderhoeven.com/blog/20260730-investigations-arena/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-investigations-arena/</guid><description>&lt;p&gt;How do you test an AI agent whose whole job is to investigate incidents — when every investigation is different and &amp;ldquo;correct&amp;rdquo; isn&amp;rsquo;t a single deterministic answer? In this interview I sit down with &lt;strong&gt;Will&lt;/strong&gt;, a software engineer at Grafana who&amp;rsquo;s spent the last year focused on AI: the Grafana Assistant, investigations, and memory features.&lt;/p&gt;
&lt;p&gt;The story here is how the team got from Investigations V1 to a much better V2. V1 hit a ceiling, and the demo environment they&amp;rsquo;d been testing against turned out to be the problem — the cases were too easy and too far from the messy reality of a production cluster. So they built an &lt;strong&gt;arena&lt;/strong&gt;: think competitive bot programming, but the &amp;ldquo;game&amp;rdquo; is investigating real incidents in Grafana&amp;rsquo;s own production environment. Different AI agents, each with its own strategy and tools, all take a swing at the same incident, and an LLM-as-judge scores their answers against a human-verified root cause.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s interesting is that the &lt;em&gt;score&lt;/em&gt; wasn&amp;rsquo;t even the most valuable output at first — the &lt;strong&gt;insights&lt;/strong&gt; were. Watching which strategies worked, which tools returned so much noise that they poisoned the context, and which agents wandered off is what let the team optimize bit by bit into the V2 release. The arena also compares more than models: different harnesses running Sonnet vs. Opus, Claude Code with the Grafana MCP, even just hitting the public API directly with &lt;code&gt;curl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A couple of my favorite moments: Will explains the &lt;strong&gt;guardrails&lt;/strong&gt; that stop agents from &amp;ldquo;cheating&amp;rdquo; (they can only look at data from within the incident&amp;rsquo;s time window, so they can&amp;rsquo;t peek at the fix commit that resolved it) — and how the models mostly play fair because they treat it like a game. And there&amp;rsquo;s a lovely example of emergent creativity: an agent reached for tools the team hadn&amp;rsquo;t even considered, they turned out to be genuinely useful for investigation, and those tools got promoted into the real harness. Will&amp;rsquo;s hope for the future is to open this up — an OliBench-style shared benchmark where the community can throw their own investigation agents into the arena and raise quality across the board.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YPfqchw8LCo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Hey, my name is Will. I&amp;rsquo;m a software engineer at Grafana. I&amp;rsquo;ve been there for three years, and for the last year I&amp;rsquo;ve been focusing on AI — the Grafana Assistant, investigations, and memory features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
And what&amp;rsquo;s the latest thing you&amp;rsquo;ve been working on?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
So we developed Investigations V1, and we saw that we hit a ceiling at some point. We came up with a different approach, but this time we needed a good evaluation environment — the demo environment wasn&amp;rsquo;t enough, because those cases were too easy and too far from the reality of a production environment. So we decided to build an arena.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a little bit like the idea of competitive bot programming, where bots fight against each other on specific tasks or games. In this case, the topic was investigations in our production cluster — real incidents. We started building bots that had different strategies and different tools; these were AI agents. Comparing a diversity of strategies let us surface the best approaches, and from there we could iterate, bring in more test cases from more incidents, and reach higher and higher quality.&lt;/p&gt;
&lt;p&gt;The idea is that the bots try to solve the same case, and we use an LLM as a judge to compare the different approaches. We have different criteria, because for each incident we have a root cause that&amp;rsquo;s been verified by a human. That gives us our ground truth, and the LLM-as-judge compares that ground truth against the answers the agents came up with.&lt;/p&gt;
&lt;p&gt;The important part at first wasn&amp;rsquo;t even the score — it was the insights. This tool was better with this strategy; this one had noise in the results that poisoned the context; the results returned from this specific tool were just too much. So we managed to really optimize bit by bit and come up with Investigations V2, which we just released. It&amp;rsquo;s a massive improvement compared to our V1 approach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So is it comparing just different models for investigations, or is it also comparing things like Claude Code and the Grafana MCP versus Assistant?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Both, actually. We have different versions of our harness for investigations that we run with Sonnet and with Opus, but we also use the Claude Code harness with the Grafana MCP — and even just using &lt;code&gt;curl&lt;/code&gt; to directly hit our public API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Do the models ever cheat?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
So far it&amp;rsquo;s been quite good. We have guardrails. Because we investigate past incidents, we need to make sure the LLM only looks at a specific time window — only from when the incident started — otherwise it would be able to find the pull request that was used to solve the incident. But they&amp;rsquo;re pretty good at following the rules; they take it as a game a little bit. We even have an agent that checks afterward, with the judge, to make sure they followed every rule.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s funny, actually — we had a case using Claude Code where it started to use some tools we hadn&amp;rsquo;t thought about in the first place, and they turned out to be very useful for investigation. We&amp;rsquo;d never considered them, so we brought them into our investigation harness and it helped a lot. Giving the agents freedom and creativity in this kind of environment is really useful. That diversity sponsors new ideas that we can put into our own work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Cool. Do you have any plans to publish this and share it so that other people can do it too — kind of like OliBench?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Yeah, I think, why not? I think we can go this way too. I&amp;rsquo;m sure it would be useful for other agents. And it would be very nice if we could compare agents from other people and other companies — maybe with different harnesses, maybe even different tools — because right now it&amp;rsquo;s mostly about our MCP, our CLI, and our investigation harness. But if the community comes up with their own investigation agents — and I think I&amp;rsquo;ve seen a few — it would be fun to put them in the arena and help not just our product, but any product improve in quality.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>The Great Doubt: What Building an AI Agent Taught Us About Trust (KubeCon Japan 2026)</title><link>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0900</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</guid><description>&lt;p&gt;This week I spoke at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/"&gt;KubeCon + CloudNativeCon Japan 2026&lt;/a&gt; in Yokohama, Japan. I gave a talk called &lt;em&gt;The Great Doubt: What Building an AI Agent Taught Us About Trust&lt;/em&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we started building an AI assistant for observability, we thought the hard part would be making it smart. We were wrong. The hard part was knowing when to trust it.&lt;/p&gt;
&lt;p&gt;AI agents hallucinate, forget context, and confidently give wrong answers. Traditional testing doesn&amp;rsquo;t catch these failures. What&amp;rsquo;s needed is evaluation grounded in systematic doubt.&lt;/p&gt;
&lt;p&gt;This talk shares lessons from shipping an AI agent to production: how to build a golden dataset of use cases you must get right, how to use LLM-as-judge when there&amp;rsquo;s no ground truth, and how to use OpenTelemetry traces to debug eval failures. You&amp;rsquo;ll also hear what&amp;rsquo;s still unsolved: evaluating multi-agent handoffs and closing the feedback loop between what users ask and what your evals cover.&lt;/p&gt;
&lt;p&gt;Kyoto School philosopher Nishitani Keiji called this &amp;ldquo;The Great Doubt&amp;rdquo; (大疑): questioning every assumption until only what survives is real. For AI agents, that&amp;rsquo;s not philosophy. It&amp;rsquo;s the job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The talk walks through the layers of doubt we worked through while building &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;: doubting the agent itself, then doubting our tests, then the LLM-as-judge, then our own scores — and finally doubting whether the doubt was even justified. Each layer needed a different tool, from a golden dataset run in a fully synthetic observability environment, through online evals on live traffic, to per-conversation OpenTelemetry traces that link every eval score back to the exact LLM and tool calls that produced it.&lt;/p&gt;
&lt;p&gt;You can find the slides at &lt;a href="https://nicole.to/doubtslides"&gt;nicole.to/doubtslides&lt;/a&gt;, and you can watch the full talk below:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uW9Hlp3fT14?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;p&gt;Grafana Assistant (generally available for Grafana OSS, Grafana Cloud, and Grafana Play):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/assistant/"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.grafana.org"&gt;Try it out on Grafana Play&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Assistant Investigations (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/investigations"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent Observability (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/agento11y"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;o11y-bench (OSS):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/o11ybench"&gt;Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Investigations Arena:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/YPfqchw8LCo"&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-reading"&gt;Related reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My Context Horizon piece &lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vZNlPD"&gt;&lt;em&gt;The Way of Zen&lt;/em&gt;&lt;/a&gt; by Alan W. Watts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3RgXGIP"&gt;&lt;em&gt;Zen Mind, Beginner&amp;rsquo;s Mind&lt;/em&gt;&lt;/a&gt; by Shunryu Suzuki&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vQW2eQ"&gt;&lt;em&gt;Religion and Nothingness, Volume 1&lt;/em&gt;&lt;/a&gt; by Nishitani Keiji&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4yFff6d"&gt;&lt;em&gt;Philosophers of Nothingness: An Essay on the Kyoto School&lt;/em&gt;&lt;/a&gt; by James W. Heisig&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>An Overview of AI Evaluation (The Context Window #05)</title><link>https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/</link><pubDate>Fri, 26 Jun 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/</guid><description>&lt;p&gt;How do you know if an AI agent is actually any good — and whether the change you just made to it made it &lt;em&gt;better&lt;/em&gt; or &lt;em&gt;worse&lt;/em&gt;? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/yasirekinci/"&gt;Yas Ekinci&lt;/a&gt;, an engineer on Grafana&amp;rsquo;s AI team who has spent the last several months focused almost entirely on evaluation. We talk about why trusting AI is so hard (non-deterministic models, oversized PRs, and the shift from &lt;em&gt;writing&lt;/em&gt; code to &lt;em&gt;reviewing&lt;/em&gt; it), the difference between online and offline evals, how we actually test &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;, and &lt;code&gt;o11y-bench&lt;/code&gt;, the open observability benchmark we announced at GrafanaCON. We recorded this one ahead of Yas&amp;rsquo;s two-month leave — so consider it a deep dive banked for the road.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_XGLBqVpL-Y?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="the-final-answer-problem"&gt;The &amp;ldquo;final answer problem&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;A recurring theme — and one close to my testing heart — is what I call the final answer problem. As a tester I&amp;rsquo;m used to looking at an outcome and asking &amp;ldquo;did this pass or fail?&amp;rdquo; But with AI, a plausible-looking answer isn&amp;rsquo;t enough. If the &lt;em&gt;process&lt;/em&gt; was wrong, you can&amp;rsquo;t trust the outcome even when it looks right — and a plausible-but-wrong answer is the dangerous case, because nothing on the surface tells you it&amp;rsquo;s wrong. Yas&amp;rsquo;s example: a broken Tempo tool that returned no spans, while the agent still answered convincingly by guessing from metadata. Plausible ≠ correct.&lt;/p&gt;
&lt;p&gt;This is also why the bottleneck has moved. The cost of &lt;em&gt;writing&lt;/em&gt; code has collapsed, so the burden now sits on review. Developers, as I like to put it, are becoming &lt;strong&gt;shepherds of intent&lt;/strong&gt; — less about typing the code, more about making sure the intent is clear and faithfully implemented.&lt;/p&gt;
&lt;h2 id="what-evals-are-and-online-vs-offline"&gt;What evals are, and online vs offline&lt;/h2&gt;
&lt;p&gt;An eval is simply a test of whether an AI agent behaves the way you want — from &amp;ldquo;who are you?&amp;rdquo; → &amp;ldquo;I&amp;rsquo;m Grafana Assistant&amp;rdquo; all the way up to multi-step querying and dashboarding. The point is to know &lt;em&gt;with confidence&lt;/em&gt; whether a change made the agent better, which is what lets you improve it consistently over time.&lt;/p&gt;
&lt;p&gt;There are two complementary flavours, and they map neatly onto testing concepts we already have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Online evals&lt;/strong&gt; — scoring a sample of real production conversations, usually with an LLM-as-a-judge. Great as a pulse check (it&amp;rsquo;ll catch a quality drop when a model provider silently swaps models), but it only tests the deployed variant and is hard to verify. Closest analogy: traditional observability / RUM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline evals&lt;/strong&gt; — a &amp;ldquo;golden set&amp;rdquo; of tasks run during development and CI against a controlled, reproducible environment. You can test every change, prompt, and implementation, and drill into specific skills (PromQL vs LogQL, dashboarding). Closest analogy: integration testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-we-test-grafana-assistant"&gt;How we test Grafana Assistant&lt;/h2&gt;
&lt;p&gt;Assistant evals run a real agent-plus-tools &lt;em&gt;harness&lt;/em&gt; against a real-ish environment (a Grafana with data sources, alerts, and dashboards), then grade the full transcript with &amp;ldquo;graders&amp;rdquo; or &amp;ldquo;verifiers.&amp;rdquo; The hard tension is that the environment has to be &lt;strong&gt;real and reproducible&lt;/strong&gt; at the same time. Because Assistant is a front-end plugin that runs some tools in the browser, the team uses Playwright to replicate real browser behaviour — which is where I made my pitch for k6&amp;rsquo;s browser module (now approaching Playwright parity) as a dogfooding option. The internal eval tool is a CLI called &lt;strong&gt;LLM Spec&lt;/strong&gt;, now on its third major iteration after the lessons from o11y-bench.&lt;/p&gt;
&lt;h2 id="o11y-bench"&gt;o11y-bench&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;&lt;code&gt;o11y-bench&lt;/code&gt;&lt;/a&gt; is our public benchmark, announced at GrafanaCON, with six task categories: dashboarding, investigation, logs, metrics, and traces. A few things I think make it genuinely interesting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s built on the &lt;strong&gt;Harbor&lt;/strong&gt; framework (also used by terminal-bench), which separates harness from environment from tasks — so you can swap harnesses and compare, say, &lt;code&gt;gcx&lt;/code&gt; + Claude Code against the Grafana MCP.&lt;/li&gt;
&lt;li&gt;The leaderboard includes open models (Qwen 3.6, Kimi), not just the frontier labs.&lt;/li&gt;
&lt;li&gt;It distinguishes &lt;strong&gt;pass@3&lt;/strong&gt; (got it right at least once in three runs — rough capability) from &lt;strong&gt;pass^3&lt;/strong&gt; (got it right all three times — reliability). The 10–20% gaps between the two are the whole reliability story in a single number.&lt;/li&gt;
&lt;li&gt;It runs against a &lt;strong&gt;synthetic environment&lt;/strong&gt; (Prometheus, Loki, Tempo in Docker) with generated data, so the correct answer is known in advance — and it uses &lt;strong&gt;fact-based rubrics&lt;/strong&gt;, where the grader runs its own known-good queries against the environment and checks the agent&amp;rsquo;s answer against them. That&amp;rsquo;s how you catch the subtle, plausible-but-wrong failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The internal eval set is a superset that adds scenarios drawn from real (private) conversations and Assistant-specific behaviour — like Slack&amp;rsquo;s not-quite-markdown formatting — while o11y-bench stays generic and harness-independent, grading on outcome rather than method.&lt;/p&gt;
&lt;h2 id="the-evaluation-loop"&gt;The evaluation loop&lt;/h2&gt;
&lt;p&gt;Yas&amp;rsquo;s blog post (the first engineering post on Grafana&amp;rsquo;s new community &lt;em&gt;Unprompted&lt;/em&gt; blog) and our GrafanaCON talk both center on the &lt;strong&gt;evaluation loop&lt;/strong&gt;: measure → make changes (new tools, prompt tweaks, bug fixes) → measure again. The crucial bit is that the loop can be driven by a coding agent — via an &lt;code&gt;LLM Spec Improve&lt;/code&gt; skill — because you can&amp;rsquo;t unit-test natural-language &amp;ldquo;programming&amp;rdquo; the way you test code. There&amp;rsquo;s no clean relationship between the instructions you write and what the model does, so the only way to know the impact of a change is to run the loop.&lt;/p&gt;
&lt;h2 id="where-its-going"&gt;Where it&amp;rsquo;s going&lt;/h2&gt;
&lt;p&gt;We closed on open questions and wishes: higher environment fidelity, more and harder tasks (very likely an o11y-bench 2.0), and getting more contributors — including PMs writing evals to capture desired product behaviour. I floated a k6-extension-style community model for evaluators, and using o11y-bench to support &lt;strong&gt;bring-your-own-model&lt;/strong&gt;, so users can see exactly where a smaller or local model falls short instead of assuming Assistant is broken. Yas&amp;rsquo;s industry hope is the neat one: if labs tune their models against o11y-bench, observability and Grafana performance improve across the board — free fine-tuning out of the box.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/o11y-bench"&gt;o11y-bench on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/engineering/demystifying-evals"&gt;Anthropic: Demystifying evals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com"&gt;Grafana Community Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="more-from-the-context-window"&gt;More from The Context Window&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/"&gt;#04: CLI and MCP Basics for AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/"&gt;#03: All About AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Hey everyone. Welcome to another episode of The Context Window. This is a semi-regular podcast — we try to make it every month — and it&amp;rsquo;s all about the things going on with AI at Grafana. Usually this is live, and you might think looking at this that it&amp;rsquo;s live, but it&amp;rsquo;s actually prerecorded, because Yas has a busy schedule ahead and I wanted to get him on here before he left. So hi, I&amp;rsquo;m Nicole van der Hoeven, a senior developer advocate at Grafana Labs, and I&amp;rsquo;m assigned to the AI team these days. And one of the people on the AI team is — this person over here. How do you say your last name, actually?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Oh, it&amp;rsquo;s Ekinci.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Ekinci. I was totally confused because I just found out you speak Dutch. Did not know that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;m based in Belgium, and I was like, &amp;ldquo;Nicole van der Hoeven&amp;rdquo; — okay, that sounds familiar enough to me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Yeah, it&amp;rsquo;s the name of my ex-husband, but it&amp;rsquo;s okay, we still like him. So tell us what you do on the AI team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;m an engineer on the AI team — I&amp;rsquo;m getting to five years at Grafana next week. When I joined, this was pre-AI; we had the machine learning team building predictive models, forecasting, that kind of stuff. As the AI wave came, we all got absorbed into this newer, larger AI department. It&amp;rsquo;s been quite varied — the assistant, the AI agent inside Grafana — but especially the latter half of this year I&amp;rsquo;ve been more and more focused specifically on evals: how do we figure out the quality and reliability of these things we&amp;rsquo;re deploying?&lt;/p&gt;
&lt;p&gt;AI is a very useful tool. It has utility — it&amp;rsquo;s not like NFTs. We use it day to day. My job has changed drastically over the last two years. But you still notice it needs guidance and sometimes has reliability issues. The trend is that the guidance has come down — a year or two ago I&amp;rsquo;d steer an agent 50, 60, 70 times in a session; now it&amp;rsquo;s more like five or ten. But you still need to do it. If you just blindly vibe-code your way out of this, you&amp;rsquo;re not going to end up in a good place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
It moves so quickly. Whenever someone tells me they tried AI and it didn&amp;rsquo;t do what they wanted, I ask, &amp;ldquo;Well, when was that?&amp;rdquo; Because if it was six months ago — try it again. In this episode we&amp;rsquo;ll talk all about evals, but first, some announcements. Assistant is now available for OSS and self-hosted Grafana, and I made a video showing how to do that. There&amp;rsquo;s also a new Medium blog for Grafana Labs called &lt;em&gt;Unprompted&lt;/em&gt; — a community-focused blog — and Yas wrote the first engineering post, about building an evaluation loop. And we&amp;rsquo;ve started AI weekly videos: the AI team has a weekly meeting, Mat Ryer had the idea to publish excerpts, usually the demo part. Just be warned we demo things that may never make it to production — you&amp;rsquo;re getting it raw, warts and all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I need to make sure I don&amp;rsquo;t wear my PJs anymore for the AI weekly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
A bit of quick AI news: Warp is now open source. There are new models — GPT-5.5, Gemini 3.1 Ultra with a two-million-token context window, Anthropic&amp;rsquo;s Claude Mythos security preview. And there&amp;rsquo;s a great article by Matt Shumer called &amp;ldquo;Something Big Is Happening,&amp;rdquo; where he says, &amp;ldquo;I am no longer needed for the actual technical work of my job&amp;rdquo; — which hits hard — and advises leaning into what&amp;rsquo;s hardest to replace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It&amp;rsquo;s still that guidance thing — you need a human in the loop to guide it. But if you ask me how much code I&amp;rsquo;ve manually written lately, the actual technical piece is very close to zero. We&amp;rsquo;ll talk about how that&amp;rsquo;s different for evals, because evals don&amp;rsquo;t work as well as coding does there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So why is it so hard to trust AI? Why don&amp;rsquo;t we just YOLO it and accept everything?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
A mix of things. Everybody knows these models are non-deterministic and not perfect — these aren&amp;rsquo;t new problems; underneath it&amp;rsquo;s all machine learning, numbers and math and stats. Every time you talk to it you might get a slightly different response. The second part is it writes &lt;em&gt;a lot&lt;/em&gt; of code. You can 10x your output — send ten agents at ten different features and launch all those PRs — but then someone needs to review them, and the PRs are typically big and over-engineered. One thing I always do at the end of a piece of work is ask it to find a simpler way and simplify. Bigger PRs plus so many changes makes it hard to keep a mental model of the whole thing. And interestingly, I&amp;rsquo;ll use AI to help review a PR — which gets you back to the same problem: if you use AI to review the AI, how much can you trust that?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I like the phrase that developers are becoming shepherds of intent — we&amp;rsquo;re not writing the code so much as making sure the intent is clear and implemented. And this is the difference between process and outcome — what I call the final answer problem. I come from performance testing; I&amp;rsquo;m used to looking at the outcome and asking did it pass or fail. But now, even if the outcome looks right, if the process was wrong I don&amp;rsquo;t trust it. And the reverse too: right process, wrong outcome, something else is broken.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Tests are interesting here, because most of those tests are also AI-generated — and the AI doesn&amp;rsquo;t shy away from just changing the test to make its branch pass. For any branch I review, I still look at all the changes; I won&amp;rsquo;t blindly rubber-stamp. That&amp;rsquo;s probably the biggest bottleneck right now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
One approach to trusting AI is human evaluation — thumbs up/thumbs down, or something like LMArena where you compare two answers blind. Useful, but not scalable; you can&amp;rsquo;t run it in CI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
On the eval side they&amp;rsquo;re all complementary. So, what &lt;em&gt;is&lt;/em&gt; an eval? It&amp;rsquo;s testing whether the AI agent behaves like you want. A simple one: ask &amp;ldquo;who are you?&amp;rdquo; and expect &amp;ldquo;I&amp;rsquo;m Grafana Assistant.&amp;rdquo; There are much more complicated ones around querying and dashboarding. At its core, an eval is how you figure out if the agent is any good — and the reason we do it is so that when we make changes, we know if it&amp;rsquo;s better. Answer that with confidence and you have a path to improve consistently over time.&lt;/p&gt;
&lt;p&gt;We split into online and offline. Online — we recently launched AI observability for agents — is about measuring how the deployed agent does against real production conversations from real users. Valuable, because you get a score based on real behaviour, but hard to verify; we typically use an LLM as a judge, so it&amp;rsquo;s not as robust. Offline is used more during development, in CI — much more controlled. You have a golden set of evals covering the behaviour you expect in production, and because you always test the same set, you can see whether changes make it better, and dig into PromQL vs LogQL, or dashboarding. Online is a great pulse check — it can catch quality dropping when Anthropic swaps a model — but it only tests the deployed variant. Offline can test all your changes, your implementation, and all your prompts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
It took me a while to translate these, because the testing industry already has this — we call it pre-prod and production testing. Pre-prod is everything from unit to system integration testing in dev and staging; you can really hammer the thing. Production you have to be more careful — synthetic monitoring, real user monitoring — same idea with an AI flavour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Definitely. Online is much more like traditional observability — you&amp;rsquo;re observing a system that happens to be powered by AI, turning natural language into a number you track over time and alert on. Offline is closer to an integration test: you give it a task, it runs the whole agent against a real environment, you get something out, and then separately you grade that outcome.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
We did an AI observability episode without you — you were at GrafanaCON — so I&amp;rsquo;ll link that. Let&amp;rsquo;s talk more about offline evals, since we haven&amp;rsquo;t covered those.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Offline is a bit of a beast. There&amp;rsquo;s a good Anthropic post called &amp;ldquo;Demystifying evals.&amp;rdquo; Back when we had simple single-turn LLM calls — incident summary was one of the first — the prompt was &amp;ldquo;here&amp;rsquo;s the context of the incident, summarize this,&amp;rdquo; and grading checked readability, completeness, appropriate length. Easy enough to set up. Agents get more complicated, because every time you run a task the agent can take very different trajectories — five steps one time, seven the next. The agent plus its tools is roughly the harness; it runs against an environment — a real Grafana with data sources, a certain alert and dashboard state — and keeps interacting using the tools until it&amp;rsquo;s done. Then we take the whole transcript and grade it with graders, sometimes called verifiers, to verify it actually got the task right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So how do you do it for Assistant, given how broad that environment is?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
We have the public benchmark we released recently and our internal evals — same approach, different number of tasks and some different data sources. We want an environment as real as possible, but with the tension that we also need to control it so a benchmark is reproducible. If two people run it and get different scores, which one was right? We started, like everybody, with manual tests — listing data sources to confirm a tool is wired up, some CPU questions, showing logs — with a human as the judge. That&amp;rsquo;s fine at four or five scenarios; you can&amp;rsquo;t do it as a human at 500. Assistant is a front-end plugin — some tools run in your browser, which is good for auth and security but makes testing hard — so we use Playwright to replicate real behaviour and pull the telemetry out. The internal eval tool is a CLI we call LLM Spec, and it can run against cloud instances or a local controlled environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Before the environment — did you consider using k6 instead of Playwright?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Interesting — yes and no. k6 is also a tool the assistant needs to use, but our goal isn&amp;rsquo;t to load test; it&amp;rsquo;s to hook into the plugin and get the messages and telemetry out, so we have a Playwright harness.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
There&amp;rsquo;s actually a browser module for k6 going towards feature parity with Playwright.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I did not know that. Might be interesting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Just dogfood all the things. I&amp;rsquo;d love to work with you on that. Okay, the environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
We test against cloud instances — for incidents especially, it&amp;rsquo;s a lot of data. And we run LLM Spec against a local controlled environment, which is quite similar to the open benchmark we published.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
You&amp;rsquo;ve mentioned o11y-bench — the benchmark announced at the last GrafanaCON. That was fast.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
o11y-bench has tasks across six categories — dashboarding, investigation, logs, metrics, traces. We wanted to bring our internal approaches outward, and it was a learning opportunity: we used a framework called Harbor, also used by the makers of terminal-bench. The nice thing is it separates harness from environment from tasks — so the default harness is a simple system prompt plus the Grafana MCP, but the folks working on GCX run Claude Code plus GCX against o11y-bench and compare GCX with MCP. There&amp;rsquo;s a leaderboard with a bunch of models, including open ones like Qwen 3.6 and Kimi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
They&amp;rsquo;re getting good. Qwen 3.6 is awesome — not top five, but for an open-weight model, impressive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
And this is the interesting part: sort on pass@3 and it looks different from pass^3. pass@3 runs each task three times and passes if it gets it right one out of three — rough capability. pass^3 means you need three out of three on every task — reliably solving it, not just getting lucky once. You see 10–20% differences between the two scores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
That&amp;rsquo;s awesome. And this is public, right?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Yep — the repo&amp;rsquo;s on GitHub with all the tasks. We run o11y-bench against a synthetic environment — a Prometheus, Loki, and Tempo in Docker — and we generate the data, so every run uses the same data and we know what the answer should be before we even run it. We also do fact-based rubrics: separately from what the agent does, the grading side runs its own known-good queries against the environment and checks whether the agent&amp;rsquo;s answer matches. That matters because these agents fail in subtle ways. We once made a change to the Tempo tool that broke the spans — the agent got no spans but still answered, fairly realistically, from metadata. Without testing for it you&amp;rsquo;d never catch it; the text looked plausible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
That&amp;rsquo;s exactly process versus outcome. If the answer were negative two seconds it&amp;rsquo;s obviously wrong, but a plausible answer is the dangerous one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Exactly, and that happens a lot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
An early Assistant once told me it created a dashboard, and it didn&amp;rsquo;t look right — turned out it couldn&amp;rsquo;t find the data source so it just used dummy data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Same thing happened to me locally — I broke all the tools, and it still came up with tool calls it couldn&amp;rsquo;t execute because of rough instructions in the system prompt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So what&amp;rsquo;s missing in o11y-bench that means you still need an internal one?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Two levels. First, some scenarios are based on real conversations or our own internal environments — anything involving private data can&amp;rsquo;t go public. Second, there are very Assistant-specific things we want to test — Slack, for instance, has its own version of markdown that looks like markdown but isn&amp;rsquo;t, and early Slack Assistant struggled to write it consistently, so we wrote tests for that. The internal set is a superset; the public set is still part of it. The public set is generic observability tasks — asking questions about your data, dashboarding, basic Grafana API checks — and because the harness is independent, we can test GCX, MCP, our assistant, or any other agent against it, grading on the outcome rather than how it was solved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
We talked about your blog post — let&amp;rsquo;s define the evaluation loop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
At its core: measure the current state, see where it works and where it doesn&amp;rsquo;t, make changes — a new tool, tool instructions, the system prompt, bug fixes — then measure again, and again. The key is that loop can be driven by a coding agent, not us manually. If your evals are robust enough to pass a clean feedback signal back, the agent can keep improving until it hits 100%, and then you make harder tasks or increase coverage. At scale it&amp;rsquo;s nearly impossible for one human to understand the whole system and make targeted improvements, because an agent isn&amp;rsquo;t programmed as code — it&amp;rsquo;s programmed with natural language, and there&amp;rsquo;s no clear relationship between the instructions and what the model does. The only way to probe that is to run a bunch of these loops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Is the loop equally implemented for o11y-bench and LLM Spec?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It&amp;rsquo;s implemented internally. o11y-bench is really just the measurement part — we&amp;rsquo;ve used it for GCX and MCP, but more manually. In LLM Spec we have an &lt;code&gt;LLM Spec Improve&lt;/code&gt; skill — you pick the agent, and it runs measure-improve-measure-improve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Where are you going next — no promises?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;ve done a lot on the harnesses — the Playwright stuff, and there was an LLM Spec 1.0, then a 2.0 revamp for speed and robustness, then o11y-bench, and the learnings from that went into what I&amp;rsquo;d call LLM Spec 3.0. The two big challenges now are environment fidelity — more an issue for internal evals — and the number and quality of tasks: how do we cover more of Grafana? We weren&amp;rsquo;t sure o11y-bench would be a recurring thing, but there&amp;rsquo;s a lot of interest, so we&amp;rsquo;ll probably do an o11y-bench 2.0. And I want more people contributing — I was talking at the PM all-hands about getting product managers to write evals, because the tasks capture desired behaviour: when someone asks about my product, how should the agent ideally respond?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
What I&amp;rsquo;d love is something like the k6 extension model applied to evaluators. When Grafana acquired k6 — I was on k6 — k6 had extensions and modules, and we got a lot of cool community extensions. I think evaluators would be the same. After my Madrid talk, all the questions about the evaluator section were &amp;ldquo;can we add this, can we add that, why isn&amp;rsquo;t this in the template?&amp;rdquo; — and it could be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It would be nice to do that across both o11y-bench and the internal ones — there are open questions on making them work together; internally we&amp;rsquo;re in Go, o11y-bench is on Harbor in Python, but the tasks and most verifiers are language-independent by design. A fourth thing is getting to a better golden set over time — we haven&amp;rsquo;t yet automated going from real AI-observability conversations to verifiable offline tasks. As the product changes, your tasks might not stay relevant — imagine k6 didn&amp;rsquo;t exist and now people ask Assistant about k6. Bridging online and offline in a more automated way would be the fourth big thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I also have a wish for o11y-bench beyond being a benchmark — with no internal knowledge and no promises: it could be a step toward making Assistant bring-your-own-model. One barrier is that people try Assistant with a tiny local model and conclude it doesn&amp;rsquo;t work, when really you need certain models. A standardized way to measure that and show users where their model falls short — versus where the latest Opus sits on the leaderboard — lets them make an informed decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;d go beyond Assistant — we&amp;rsquo;ve got GCX and MCP too. If you want to use your own models with them, the benchmark should reflect, for observability tasks, which are the best models and the best &lt;em&gt;open&lt;/em&gt; models. It gets to your point: people can make a more informed decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Where are we still missing things as an industry, not just as a company?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Just recently a new benchmark called DeepSWE was released, and it&amp;rsquo;s a bit controversial because it flips the ranking from the most popular software-engineering benchmark — where Opus was always leading, here GPT-5.5 leads by a margin. So there&amp;rsquo;s something to be said about the reliability of the benchmarks themselves, since labs test and sometimes tune their models against them. That might actually be good for o11y-bench — I&amp;rsquo;d &lt;em&gt;want&lt;/em&gt; a lab to tune against it, so we get free fine-tuning out of the box: as newer models use o11y-bench to tune on observability tasks, they get better at using Grafana and solving observability problems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Thank you — we just hit time. It was really informative, and I&amp;rsquo;m glad we both found time; this got rescheduled for various reasons. A great overview of all the evals we&amp;rsquo;re doing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Thanks — it&amp;rsquo;s nice to step out of the day-to-day and talk about this stuff.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
And if you&amp;rsquo;re watching, leave any eval questions in the comments and I&amp;rsquo;ll bug Yas to answer them. Thanks everyone for watching.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Bye.&lt;/p&gt;</description></item></channel></rss>