AI Engineer Europe 2026
The maturity phases of running evals
About this talk
Braintrust solutions-engineering leader Phil Hetzel describes how agent-evaluation practices mature from focused human assessments into scalable, production-informed quality systems. He recommends documenting subject-matter experts’ judgments, converting those rationales into scoring functions and LLM-as-a-judge evaluations, validating automated judges, and expanding assessment from individual outputs to complete agent traces. He concludes by highlighting production-scale topic modeling for discovering failure modes and discusses deterministic evaluation during audience questions.
Chapters
- 0:00Introduction: Phil Hetzel, Braintrust, and agent evaluation maturity
- 4:59Practical evaluation scope and scoring functions
- 7:32Human annotation and capturing expert judgment
- 10:31Scaling with LLM judges and evaluating their reliability
- 13:42Full-trace evaluation and automated failure-mode discovery
- 17:20Audience questions on deterministic evaluation and ground truth
Talk transcript
- 0:00
[on-hold electronic music] Welcome, everyone.
- 0:15
Um, it's always a challenge to be a presenter directly after lunch because that's typically when the energy level goes from right around here to around here. But I'm gonna try to make this session worth your while, uh, today.
- 0:27
We've got 18 very quick minutes, uh, together, and, uh, during that time, I'm gonna be talking about the, uh, different maturity levels that I see people go through as they perform evals for their agents.
- 0:41
Uh, before I get into that, um, just roughly quick agenda today. Um, I'll explain a little bit about myself, the company that I work for. We'll spend most of the time today on, on more theoretical concepts, not product concepts.
- 0:54
And then, um, we'll, we'll talk about, um, where I, I think this field is going in the future. Uh, also, make sure to leave enough time, hope- hopefully a couple minutes, for questions as well.
- 1:05
I didn't over-prepare the content in, in hopes that we could have a little bit more of a discussion, uh, at the end of this. Uh, first of all, this is me.
- 1:13
My name is Phil Hetzel. I lead solutions engineering for a company called Braintrust. Effectively, what that means is that it is me and my team's job to make sure that people are getting the most value out of the platform as quickly as possible.
- 1:28
Prior to Braintrust, I spent 12 years in consulting and systems implementation. Uh, first four years with KPMG, last, uh, eight years in consulting with a company called Slalom Consulting.
- 1:40
And with Slalom, I led their global Databricks business unit. And I noticed that a lot of my customers were prolific at creating generative AI proofs of concepts. They were not as prolific at bringing those proofs of concepts to production.
- 1:53
So I started using Braintrust first as a user because I wanted to help bridge that gap, uh, for my customers. And I liked the product so much that I ended up joining the company, and I've, I've been here for about a year.
- 2:07
Um, outside of, of work, I like to play chess, but I'm not very good at it, and I like to spend time with my wife and my dachshund. His name's Pistol Pete.
- 2:16
Um, he's the one in brown, not the one in, in black. [laughs]
- 2:20
Uh, what is Braintrust? Uh, the company that I work for. Braintrust is an agent quality company. Um, one of the, uh, I guess two of the main ways that we contribute to agent quality are evals and observability, which we consider to be very much the same problem, uh, from a systems perspective.
- 2:39
Evals, of course, being the thing that you're doing in order to gain confidence in your agent as you want to bring it to production, and then observability being the practice of once that agent is in production, remaining confident in it.
- 2:55
Um, it's a growing space. It's a very fast-moving space. And, uh, in, uh, when you build an evals platform, you really have to grow with the technology, the underlying technology, as it changes.
- 3:07
So it's a very fun, uh, fun place to be in.
- 3:10
Uh, let me give, like, a, a, a quick overview of the problem. Uh, we talked a little bit about why we do evals in the first place. How many you, of you all are doing evals today, hopefully, as, as you build?
- 3:22
Um, every single hand should be up. And, and certainly, when I give this talk next year at this conference, all you are gonna come back, of course, to this session, and every hand is gonna be up.
- 3:32
Eval is very important. The reason why we do evals is wholly in service to agent quality. That's the most important thing. We wanna make sure that our agents are doing what we expect when confronted with real usage and, and, and real users.
- 3:47
Um, this is really important from a risk perspective and, and a brand perspective. We don't want, um, the reputational risk of an agent being unkind or unhelpful to a customer.
- 3:59
We don't want the systems risk of an agent costing us too much money as it, as it operates. Um, and there could even be compliance and legal risks if your agent goes too far off the rails.
- 4:10
So evals are a de- both a defense against those types of risks, but they're also, uh, they can play offense with evals in knowing with each tweak that you make to your agent how it's improving and how much it's improving your application.
- 4:26
Um, a couple of primitives here. Evals are not unit tests, where- whereas unit tests are very exhaustive in, in how you perform them. With evals, you wanna make sure that you start very high level with the failure modes of your agent.
- 4:41
Either, either you or a subject matter expert can educate about the specific failure modes of an agent, and you build evals around those very specifically. What you don't do, like you would with unit test, is think about exhaustively every single thing that could potentially go wrong with your agent and try to make an eval for it.
- 4:59
Why can't we do that? Because it's, it's infinite. You would spend all of your time writing tests and none of your time shipping, which is, which is not productive.
- 5:07
Uh, eval re- results don't, don't need to be perfect. Sometimes they can be d- sometimes they can be directional. Um, using LLMs to judge o- other LLMs, LLM-as-a-judge techniques, you're probably not gonna get 100% every time.
- 5:20
That's okay. As, as long as you're trending in the right directions with those more non-deterministic techniques, um, that, that, that is completely fine. Um, different primitives with the eval, uh, itself, how it's constructed.
- 5:33
You have three things. You have a task. That's the, uh, agent under test or the prompt under test. You have some dataset of examples that initiate that task. How do you invoke that task?
- 5:46
You use some example that you give to an LLM or give to an agent to, um, to start that workflow. And then you have certain scoring functions which you're using to judge the utility or the quality of that task.
- 5:59
Um, there are a couple of different maturity, uh, areas that I've noticed some of our customers go through. Um, I've listed four here. Th- this is probably more of a continuum than, than being very discrete.
- 6:10
But suffice to say that these stages, um, uh, you know, uh, you will, you will traverse these stages as and when you create more complexity within your agent just by, just by necessity.
- 6:23
Uh, the more complex, uh, agent you're, uh, that you're building, the more vectors there are for failure, the more failure modes you... that you may need to account for.
- 6:33
Um, we're only gonna be focusing on the, uh, like eval theory itself today. We're not g- gonna really talk about the platform surrounding evals. Uh, we've got a booth for that downstairs.
- 6:45
Uh, if, if you're interested, you can come find me. So go through these four: just getting started, uh, measuring to manage, accounting for complexity, and then, um, some advanced eval techniques.
- 6:57
Okay, just getting started. It's not wrong to just get started with, with vibes. I know, like, like vibe checking is a, a very, uh, uh, nasty phrase here at, at this conference.
- 7:07
I actually think it's okay. It's, it's certainly better than nothing. Um, when you're first starting out, you can't help but start with vibes. I think the only thing that I would really recommend is that as you are vibe checking, you're also documenting.
- 7:21
So when you have an agent under test, you give that agent maybe 10 different example inputs and, and, and loop through those inputs to see what the output is.
- 7:32
You should probably have some human, whether it's the person who built the agent or even better, a subject matter expert that really knows what a quality response would look like.
- 7:42
You should really have them analyze these outputs and, and, uh, give two pieces of information.
- 7:49
You should give a thumbs up or thumbs down. Is it... Was this response, uh, good? Was it bad? But more importantly, you should make that human annotator, um, perform a justification for why they chose that thumbs ur- up or thumbs down.
- 8:05
Reason being is that you, you're, you need to extract a lot of this domain-specific knowledge out of that human annotator's head so that eventually you can scale that type of knowledge through a, through a technique like, like LMS Judge.
- 8:18
But this is a great first step, performing human, human annotation. Who, who in this room is like at, at, at this step?
- 8:26
We're... Okay, this is way more advanced group. That- that's okay. That's okay. That's a good place to start. Are you using like human expert, uh, an- annotators?
- 8:34
I, I've just got like a... I mean, I, I haven't got any infrastructure set up.
- 8:38
Yeah.
- 8:39
Just, uh, yeah, it's pure run an agent on my data, see-
- 8:44
Yeah, see how it looks. Yeah
- 8:46
... create a prompt, and then repeat.
- 8:47
Yeah, totally. That's... It's, it's, it's you have to start somewhere. It's a great place to start. Um, uh, this is, this is how like that, that workflow is gonna, is gonna look.
- 8:55
You have a trace come in, thumb up, thumbs up or thumbs down, and then you add some justification, um, to that, so that eventually you can use it as, as an LMS Judge score down the line.
- 9:09
Um, this is like what this might look like in a, in a platform like Braintrust. Um, [chuckles] uh, we have like a, like a human annotator view, uh, built into the platform.
- 9:19
We actually let you vibe code your own annotation views. Um, important point, don't give a generic, uh, a- annotation platform to users. Really make it very specific to them.
- 9:32
They're gonna have an idea of how these agent traces should look, so you should deliver that to them, and it'll encourage them to, um, evaluate these, uh, these appropriately.
- 9:43
Um, okay. The ne- the next part is expanding upon that a bit, where now I just don't... I don't have only some human grader giving thumbs up and, and thumbs down and justification.
- 9:55
Now I'm starting to use those justifications, and I'm, I'm probably, um, running those justifications through a, a cursor cloud code or, or Codex to try to derive the actual failure modes of why when they gave a thumbs down, why they delivered a thumbs down.
- 10:12
Though these, you, you're, you now know and understand the failure modes of your agent.
- 10:17
Now that you understand the failure modes of your agent, you wanna be able to scale that human knowledge and be able to, to automate it so that you're not dependent on, uh, a few people with expertise to judge a agent, uh, agent outputs.
- 10:31
Uh, a couple ways to, a couple ways to do this, one of which using LMS to judge, uh, other LMS, LMS Judge. We, we've... That, that concept's been around for, for quite some time.
- 10:41
Very effective. Um, important here is that whenever you use an LM Judge, just because you put a robe and a cloak on an LM, that doesn't make it inherently more trustworthy.
- 10:53
You should be evaluating LMS as Judge outputs as well. Um, that's not really covered in this presentation, but, um, you should not just judge, uh, LM Judges blindly in that regard.
- 11:05
Uh, there also might be some objective failure modes where you can deterministically, um, encounter them just through code. That's okay too. You don't have to use LMS to judge other LMS.
- 11:16
You can use code to understand, um, if you're using too many tool calls, you might wanna fail that eval as an example. If you're using too many tokens, you might wanna fail that ev- uh, eval.
- 11:27
Um, I think the most important point here is that this dataset, uh, that's, that's on, on the right-hand side of this slide, at this point, you should probably be gathering production traces or at least, uh, UAT level traces into that evaluation dataset.
- 11:45
We want it to be ver... Uh, like don't think about evals as running tests. Think about evals like rerunning production because ultimately we wanna be confident as we run, uh, run these workloads in, in production.
- 11:58
Great way to do that is just to capture production data.
- 12:02
Um, most important point is, is this. Uh, we, we call it like the, the flywheel internally. We wanna be able to capture these traces, these agent traces in production Understand what's going wrong with them, either through a human or, or through automated tooling, um, and then bring those examples back to some offline experimentation environment, rerun production
- 12:27
through an eval, and then use that to guide us to which direction we should be improving our agent. So evals, that-that's, like, more playing offense with, with your evals.
- 12:39
Um, this is just, like, a, an example of, uh, setting up an, setting up an LLM as, uh, as judge scoring function to e-expand, um, your, your ability to evaluate at scale rather than using just a human.
- 12:54
Um, okay, uh, level two. Now we're starting to not just do simple model calls. We might be performing work with external systems. I think of, of tool calls in two different ways.
- 13:07
There's context gathering tools that are just, uh, gathering data and injecting that into the LLM, and then there is CRUD-based tools where you're creating, reading, updating, or deleting information from a database or an external system.
- 13:21
Um, both of these are, uh, can have a lot of lift in terms of whether your agent is quality or not. It also means that there's a lot of other things that can go wrong with your agent when you're starting to interact with external, uh, external systems.
- 13:38
Often now, instead of just having one, uh, um, uh,
- 13:42
of evaluating one specific part, i.e. the output of an agent, now you might be having to evaluate the entire trace of an agent. So, um, in that sense, t- like, this is where tooling starts to come into play.
- 13:56
You'll, you'll need some way to capture these large traces, understand each and every step that an agent took to be able to introspect and eventually target evals towards maybe even individual tool or MCP calls, uh, that your, that your agent is creating.
- 14:14
The other, the other problem here that, that we might have is, um, when you're performing CRUD on, on a system, you c- you don't really wanna do that when you're offline, of course.
- 14:25
There might not be a way to do that when you're offline. So y- when you run an eval, um, there's, there's two things that are problem areas. One, really challenging to represent the state that, that, um, uh, other external systems were, were in at the time that eval input was created, and then two, it makes it really
- 14:46
challenging to interact with those systems that the agent could be interacting with because you don't wanna overwrite any, any production data. These are real challenges that, that we have to solve for.
- 14:56
I would say it's not completely solved right now. Um, however,
- 15:01
um, there, there does need... There, there are some ways where you can represent external system state and interact with, like, mock level, uh, APIs so that you can approximate, um, real...
- 15:13
a real production environment in, um, as, as you're running evals. Um, the idea for this is that, um, these, these agent traces can be arbitrarily large. Um, in that sense, it's, it's a lot different than application tracing.
- 15:29
So if a trace can be arbitrarily large, you can actually cram in a ton of context, i.e. system state, the state that the external systems were in at the time, into these traces and inject that into a, i-into the task that you're running the eval upon.
- 15:46
In that way, uh, instead of having to, uh, um, uh, create an en-entire test structures and, and, and infrastructure, you can represent a lot of that stuff within the trace itself and encapsulate it there.
- 16:01
The other thing that you can do is you can use, like, really s- really specific querying techniques to, um, perform timestamp queries, uh, to systems that support them. So if an input came, um, and, and you added it to your dataset at a certain point in time, perhaps, uh, the way that you've set up your vector database,
- 16:22
you can run a version query to query the vec-vector database at a certain point in time, so that way you're adequately representing the state of, uh, of, of when that task ran originally.
- 16:35
These are more complex techniques, um, but ones that, ones that are a little, uh, that are a little bit more emerging. Um, I only have about two minutes left to go.
- 16:47
Um, what's next? Um, performing topic modeling at scale to make sure that you're uncovering those failure modes automatically in production. Um, that's something that, like, more than happy to talk about at, uh, at the booth downstairs.
- 17:00
And then of course, performing evals in a way where you're, um, using Claude Code and the eval provider CLI to be able to do this in an automated, uh, automated way.
- 17:11
These are two other patterns that, uh, that I see emerging in the space. I wanna be conscious of time. I probably have time for, like, one question, uh, before, before I have to jump here.
- 17:20
Is anyone curious about anything specifically? Otherwise, uh, you can find me at, at the booth. Yes, sir.
- 17:25
In our sphere, like, it's kind of normal to put a bit more respect on deterministic evaluation-
- 17:33
Yeah
- 17:33
... rather than deterministic graders. Do you agree with it? Do you think that we should push for more deterministic graders in this, in our eval platforms, or do we embrace LLM-as-a-judge as a solve?
- 17:45
I would-- Some things are subjective. That's why we love agents so much. I would embrace LLM-as-a-judge, but also perform a lot of evals on the LLM as, as judge so that, like, it's, it's very aligned with what a human would decide in the same circumstance.
- 17:59
You would eval the eval as a you but-
- 18:01
Yeah. It's easier to do that because LLM judge outputs are gonna, are going to be, uh, discrete, so you can create a ground truth dataset for that. Yeah. All right, everyone, I have to jump.
- 18:11
I'm at my time. Um, it was a pleasure to be with you all. And yeah, feel free to find me in the booth downstairs. [audience applauds] [outro music]