AI Engineer World's Fair 2026
Build Evals That Actually Matter - Nick Ung & Akshay Sharma, Lyft
About this talk
Lyft speakers Nick Ung and Akshay Sharma explain how to evaluate multi-turn customer-support AI agents before production deployment. Their approach combines production-representative simulated users, LLM-as-a-judge grading, explicit launch gates, and τ-bench-inspired simulations of LangGraph agents. They emphasize decision-relevant metrics, adequate sample sizes, avoiding evaluation anti-patterns, and continual improvement across the model, context, and evaluation harness.
Chapters
- 0:05Speaker introductions and Lyft's customer-support evaluation agenda
- 2:02Offline evaluations, simulated conversations, LLM judges, and launch gates
- 7:35τ-bench-inspired simulation with LangGraph agents and user personas
- 19:03Meaningful metrics, sample sizes, and evaluation anti-patterns
- 31:05Continual learning and closing the evaluation loop
Talk transcript
- 0:05
Hi, everyone. Uh, my name's Nick, and I'm here with Akshay to give a talk about evals. Uh, we are from, we're from Lyft, and we've been building Lyft customer support AI agent for a year or two now, and gave a lot of, a lot of thoughts about how to build eval that actually matters and scale, um, our
- 0:29
AI agents, multi-AI, multi-AI agent system. Uh, just a little bit of quick introductions. My name is Nick. I'm a data science manager. I've been at Lyft for six years, a long-time Lyfter.
- 0:42
Uh, really excited to talk to you a little bit more about evals. Uh, hand off to Akshay.
- 0:50
Hi, everyone. Uh, I'm Akshay. I'm in Nick's team, and we've been working together, uh, on customer support agents for Lyft, uh, improving the harness, improving the evals, things like that.
- 1:04
And I've been at Lyft for almost four years now. I'm very excited to be here and talk about, uh, building evals that actually matter.
- 1:16
Super excited to be here and super honored to be, to be on the online track for AI Engineer World Fair. Um, yeah, and let's dive in. Um, for the agenda of today, uh, I will talk ab- primarily focus on eval.
- 1:34
Uh, we will start by sharing how we think about the end-to-end pipeline for our evaluations. We're building support, customer support AI agent system. Uh, we'll go into deep dive into each component, uh, more deeply as we go.
- 1:51
Uh, we'll start by talking about offline evaluations, online evaluations, eval harness, as well as what we are planning to build going forward.
- 2:02
All right, let's dive in. Um, I wanna quickly explain the, you know, high-level system of how we think about evaluation system for AI agents. Uh, so here you can see we have the development phase and the production phase.
- 2:21
Uh, so during development, if you're building agents, you should be very familiar with, uh, you know, managing context, building RAG pipeline to give your agents educational context, uh, defining your tool, building your agentic graph, as far as writing a system prompt.
- 2:39
Uh, so once all of that engin- agent engineering process is done, you have an, you have an AI agents. Uh, the way we think about this is before we launch this AI agents to productions, we want to go through a rigorous offline evaluation process to make sure that this agent, uh, actually has sufficient performance before we launch
- 3:01
this to a live, uh, users. So coming from, you know, data science and machine learning background, uh, we've been building model, m-machine learning model for, for, for, for a while, and I think the way that we think about agent development is very similar to building machine learning models as well.
- 3:21
If we are running, um, offline evaluations for our machine learning model before that goes to productions, I think we should do the same for AI agents as well, or any other agentic platfor-- uh, agentic applications.
- 3:35
Uh, but what I think, you know, offline evaluation, how that, how that is different than, uh, traditional machine learning model is that, you know, we typically we're building specifically for customer support AI use case, we are building a agent that's multi-turn.
- 3:52
Uh, so for offline evaluation, there will be a component of simulated conversations. So you want, you typically want to have a dataset, synthetic dataset that's representative of your productions traffic, um, have a use LLM that plays, plays out the complete multi-turn simulated conversation, um, a-as well as having a grader
- 4:17
such as a LLM-as-a-judge, um, to be able to evaluate how good that interactions was. And then we have a launch gate, right? We want to make sure that we have certain criteria on our offline eval, and we are meeting that criteria before we decide to launch this AI agent to productions.
- 4:38
And so the, the real imperative here really is that i- we don't wanna use our live user as, you know, test data for our AI agents. And I think in any, any cases that, that is not, not good practice.
- 4:52
So we really wanna emphasize the importance of having a offline evaluation process.
- 4:58
So once the agent hit productions, we also have an online evaluation pipeline as well. We have our own favorite tracing tools to, uh, trace all the executions and contacts that the AI agent use to response to a real user in, in productions environment.
- 5:17
We have our online grader as well that grades how well our AI agent is doing in productions, um, as well as having a human-in-the-loop pipeline to do error analysis, identify failure mode, and feed that, that insights to the development teams to continuously improve our AI agents.
- 5:39
I wanna quickly go over, I think, three of the most common reasons why we think, uh, evaluation typically fail in, uh, for, for different teams. So the first reason is that, you know, the, the grader that we create, the scores that we create needs to be meaningfully gating something.
- 5:59
Um, this is What we really emphasize on in the previous slide that we need to have a launch gate. If your LLM-as-a-judge is just floating out there, there, there's a score, but no one is really using that score as a meaningful gate, uh, for your development and productions environment, then that LLM-as-a-judge is not, not valuable.
- 6:22
Uh, we have also seen a lot of, a lot of
- 6:26
mishap people had when they're creating their LLM-as-a-judge. Um, there's a lot of different opinion out there on, in terms of how do you create, uh, a good LLM-as-a-judge. And typically, uh, and, and unfortunately also very early on in our journey, the LLM-as-j- the LLM judge that we created are, um, very noisy, too generic.
- 6:48
Uh, it will output a score and, but people don't really believe in, uh, in what the LLM judge is doing, or they don't think the LLM judge insight is actionable.
- 7:00
And finally, I think when something regresses in productions, we need to have clear mechanism to be able to, to, to catch that regression, as well as identify clear owners to be able to take actions on, uh, the insights of our graders and regression case.
- 7:20
Very cool. I wanna sequence into talking about our offline evaluation system. And as we... as I touched on early on, I think this is the most critical piece of going from development cycle to, to productions.
- 7:35
We really wanna have a robust off-offline evaluation system to be able to get more confidence in, uh, in the AI agents that we are shipping to productions. We took a lot of inspiration from, um, this paper called TAO-Bench, uh, which is, uh, developed by the wonderful people at Sierra AI.
- 7:54
Uh, and this is specifically for customer support AI agent, but we also think this is applicable for any user-facing agentic applications.
- 8:05
Uh, so here, as you can see, this is a offline, offline simulations where you have the AI agent as well as a user, uh, LLM that are interacting with each others to produce the, uh, multi-turn traces.
- 8:22
Uh, you have agent domain policy, which is essentially what the, you know, for each customer support use case, there is instructions, policy on how to handle different, uh, different customer support issues.
- 8:38
So taking inspiration from TAO-Bench, this is sort of a high-level approach that we have in creating our offline simulator. Uh, as we mentioned earlier, we have our LangGraph agents that we've built, and we have defined, uh, an instructions for our, our user LLM, right?
- 9:00
As you can see, for simulation-wise, we define the user intent, we define, you know, what this intent is supposed to, uh, to represents, and we define the user data point or the world state of the, of, of our user.
- 9:17
For example, you know, the driver that are coming to us might be a luxury driver that might have been driving for us for, for a couple years, and so on and so forth.
- 9:27
And finally, to define the user, user behavior, user personas, as we would typically see with our real, uh, you know, real Lyft user as well. We also created these different persona for our user.
- 9:41
Uh, one example here is that, you know, this can be a loyal, longtime Lyft customer, but they are frustrated with, uh, with, uh, Lyft earning systems.
- 9:51
So in our offline simulator, we have this LangGraph agent that are, you know, interacting with our user LLM model and generating this multi-turn trajectories, uh, of, uh, of, of this multi-turn agentic, uh, agentic trajectory.
- 10:09
And we also built our offline, offline grader or offline evaluator. Uh, LLM Judge is a big component of that. We will dive, dive a little... a little, a, a lot more deeper into how to build a great LLM-as-a-judge.
- 10:24
Uh, and apart from, you know, LLM-as-a-judge, we also have more deterministic, uh, evaluator as well, and these usually looks like a code assertion, as you will see in traditional unit test.
- 10:37
Uh, and for example, here, some, some of the deterministic criteria that we have created so far, uh, looks something like this, right? If, you know, if in this, in this specific interactions, the AI agent is supposed to grant concession, we'll write, like, a rules like this, whether or not the AI agent has indeed grant concessions.
- 10:57
Uh, and we'll compare the agent, uh, agent tool calls with the expected outcome to make sure that, uh, we ha- we can measure the accuracy of the agent instruction following behavior.
- 11:16
So one of the big gotcha that we faced with running our offline evaluation is the sy- creating syntactic data is, is one of the key challenges in making sure our offline dataset is representative of our productions, uh, data.
- 11:35
So, uh, here we, you know, um, here we have a meme here. Um, what... ideally, what you don't want to be doing is just to simply prompt an LLM model to generate 50 different test query for your offline datasets.
- 11:51
Uh, so here's a couple of suggestions where you can approach this, you know, much more, much more realistically and, uh, assemble a dataset that, that closely resemble to your production data.
- 12:03
So this is also something that we, we try to do for customer support AI agent as well. We take, uh, we, we, we, we take some sample from our production data.
- 12:16
Uh, so, uh, Lyft user has been reaching out to support for a long time. We take a sample of our real production example and, uh, supplement our offline dataset with that.
- 12:30
And you-- and the second thing that we can-- we, we do is we mutate, uh, different criterias for, from our offline, uh, datasets to be able to cover different golden path and edge cases.
- 12:48
So one problem with our offline evaluator is that as, as we mentioned in the previous slide, if you were simply, uh, sampling different fifty, fifty test use-- te-uh, test query from, uh, by using a LLM model.
- 13:10
Uh, another thing-- An-a-another big gotcha that we, we faced in, in building this offline simulator was that we were using a Frontier Lab LLM, uh, model to role-play Lyft user in our offline evaluations.
- 13:26
Um, and for the most part, you know, Frontier Lab model are trained to be helpful assistant rather than a, uh, Lyft user that might not, uh, that might not sound as nice as, uh, as always.
- 13:41
So I, I think, uh, for everyone that have tried customer support before, you know, you don't typically reach out to customer support agent, uh, with a very nice verbatim.
- 13:52
Um, so in our first pass at running our offline evaluation, what we've noticed is that our LLM user sounds almost too nice. And as you can see on, on the right here, these verbatims are very, very, very, very complete.
- 14:10
The use-- The LLM user are very patiently explaining the issues that they are facing in productions. And our first attempt at our offline evaluation gave us ninety-plus pass rate or accuracy rate, right?
- 14:25
Uh, this almost sounds too good to be true, and I think it indeed is too, too good to be true. So in reality, these are the real user verbatim that we get in productions.
- 14:37
Um, a-as you can see here, most user, they are-- they're impatient, they're already frustrated. So the verbatim, they, they, they, they don't want to explain their issues like a L-LLM user will.
- 14:52
Uh, so typically what we see in production is, is something like this. Uh, and in, in fact, in reality, the, th-this makes, you know, AI agents, uh, much more difficult to evaluate.
- 15:06
So what can we do here? How, how can we
- 15:11
make sure our Lyft user LLM, uh, simulate this real-life Lyft user much closely, right? Uh, so
- 15:22
what we, what we-- how we approach this is we fine-tune a LLM model with a Lyft user verbatim. So instead of speaking like this, very verbose and very nicely and patiently explaining their issues, uh, our LLM user will produce verbatim that's resemble this much closely.
- 15:46
And the benefit of this is while, you know, we, we did see our evaluation score goes down after we fine-tune a LLM model that speaks more like our Lyft user and therefore making our evaluation more difficult.
- 15:59
Uh, but in reality, this is really what you want, uh, when you're building this user simulator, right? If you have an eval that's too easy, that doesn't give you any real, uh, production insights into how your AI agent is actually going to perform.
- 16:15
Um, and this also give you a lot more room to be able to tweak your AI agents to deal with, quote-unquote, difficult user. And as I, as I gave a little bit of sneak peek earlier as well, we also did a lot of work to define Lyft user personas.
- 16:32
Uh, this can really ground our LLM user to adopt a specific Lyft user persona and therefore, uh, simulate our real life user much more closely. Uh, a couple of different user persona that we've defined here, uh, are, you know, bypasser user who just wanna escalate to agent regardless of and not giving AI a chance, refund seeker, uh,
- 16:55
AI skeptics. So the... We, we really also took inspiration from this paper, uh, from Microsoft User LLM, uh, Microsoft paper.
- 17:12
Uh, and I think they adopt a very similar, similar approach as well. They fine-tune a, uh, user LLM model, and so evaluation score goes down. Um, but I think r- in reality, this is really what's e-e-expected and, and good for, for your applications.
- 17:31
All right. I, I'll hand off to Akshay to talk more about LL, LLM judge.
- 17:37
All right. Uh, hi, everyone. So I'm gonna take from here. I'll talk about second problem, which we usually face when we are doing evals with LLM-as-a-judge. And here you can see, uh, this is how pretty much everyone is using LLM as a judge to evaluate their agents.
- 17:55
The focus can be slightly different based on the use case. Someone can focus more on safety, someone can focus more on cost and latency, someone can focus more on quality.
- 18:06
But People are going to measure these sort of metrics more or less. So, uh, we want to detect leaks, we want to detect safety issues, um, and, and things like that.
- 18:17
So some parts are deterministic, which can be evaluated by code, and some are not, which are evaluated by the LLM.
- 18:24
Now, the problem with this approach is, uh, that these metrics are too generic and not actionable. So for example, we also started with our e-eval journey using prebuilt metrics from DeepEval, which were, uh, which were measuring tool usage appropriateness, uh, response helpfulness, conversation naturalness, completeness, and things like that.
- 18:50
And we did see those metrics, but the problem was these metrics were not actionable. They were not giving us any actionable insights. If something-- If, let's say, response helpfulness is point five, then what do we do with it?
- 19:03
So, uh, things like... A-and other, other scores like toxicity score, bias, fairness, conciseness, all these are kind of relevant, but if the metrics are just, uh, scores, we, we don't know what to do with them.
- 19:18
So we can use these prebuilt eval metrics as a baseline, but we shouldn't use them as our core eval metrics because we want eval metrics to be actionable and tied to the business outcome or the product which we are focusing on.
- 19:35
Uh, okay, so what LLM-as-a-judge should be? Uh, we collaborate very closely with, uh, domain experts and utilize their insights.
- 19:50
So eval should be framed around a task success or failure. And a binary outcome is very easy to calibrate and train, um, LLM judge that can consistently score your agentic tra-trajectory.
- 20:04
When we partner with domain experts and data scientists to build metrics which are actionable and aligned with business goals, we can see much more meaningful results, uh, and actionable insights.
- 20:16
Not only this is more consistent, uh, but when an agent fails an interaction, we can systematically analyze the error pattern and have-- and actually know what, what we can do to fix this.
- 20:29
Here is an example of an, uh, actionable metric for our use case, uh, which is called education rubric. Here the AI-- We, we define the metric, how it should be, and we define success and fail criteria for LLM judge.
- 20:43
So for example, the AI agent tries too many times to educate the user, uh, if it could have excelate-- uh, escalated the, the issue,
- 20:52
or if it's escalating too soon without giving any chance to educate the user. So things like that comes under failure ca-category. So we, we mark this as fail, uh, but if it's an expected behavior, we, we mark it as, as pass.
- 21:09
Uh, okay. So with this, how do we validate if our, uh, LLM judge is working as expected?
- 21:21
First thing is we need to treat it as a classifier. So how we train our classification models in machine-- traditional machine learning, we can also treat our evaluation judges as, as those traditional ML classifiers with binary outputs.
- 21:38
Once we have binary outputs for every metric, uh, or a task based on our business goals and functional requirements, we can hand label, uh, around hundred examples with pass/fail labels and then split the data into, uh, train, dev, and validation sets, like how we used to do with machine learning models.
- 21:59
Uh, then we score precision and recall, uh, for our judge based on human label ground truths, which will give us an actual report on how good our, uh, judge is performing.
- 22:11
Uh, and how do we split our data to do-- to calculate precision and recall is this. So we split the data similar to how we used to do in training machine learning models, but the difference is the percentage of splits.
- 22:31
Uh, and here we are not actually training model weights, so we are just using the data to inform judge's prompt. So the percentages are little bit different. For example, in training data, we, we pick a few short examples from the, from this set, uh, for the judge's prompt, and then we iterate the prompt against the dev set,
- 22:52
uh, and improve our harness or our prompt. And then finally, we validate against the test set, uh, to see that we didn't overfit on the dev examples.
- 23:04
This is the practical, uh, way of like splitting the data and then calculating precision and recall, uh, scores for your judge to actually know that the judge is working as, as expected.
- 23:23
All right, next slide. Okay, so this is another thing which, uh,
- 23:32
this is another thing which most of us ignore when we are doing evaluations, uh, which is criteria drift and validating the validators. The key idea is that we actually discover what our evaluation criteria is by looking at the data and grading our outputs.
- 23:50
Uh, our... And our sense of, uh, quality will also evo-evolve, uh, with, with new data we see and more, uh, examples we grade. So
- 24:03
the evaluation should not be decoupled from model observations. In fact, they should be developed, uh They should be co-developed with the model when we are testing the evaluator and calculating the precision and recall scores.
- 24:19
So, uh, we-- there, there's always a gap when we, when we talk about LLM-as-a-judge. We cannot define the criteria beforehand and then evaluate agents against them. Uh, our, our criteria should also be evolving as and when we see more examples, and then we should refine our metrics, uh, for our judges and then evaluate judges on top of
- 24:42
those metrics. Okay. So the next step, uh,
- 24:56
one of the things which, which can make the numbers we are reporting more meaningful is to add some statistical rigor to it, right? Uh, we report alignment rates as bare point estimates.
- 25:08
So if we add confidence intervals, we do some calibration and proper sampling, uh, the same numbers can become more meaningful. We should definitely reserve the expensive rigor for the moments a number actually gates something or like, like a shipping decision, or we are reporting numbers to, uh, company leaders.
- 25:31
But depending on the use case, we should definitely have, uh, confidence intervals for the, for the numbers we report, because every score needs an interval.
- 25:45
So this is just a small example to give you, uh, an insight on what this actually means. Uh, let's say we have two evaluators and one scores eighty-four percent and one, uh, and the other scores eighty-eight percent.
- 26:01
And the number of samples we-- number of traces which we have, uh, used is, let's say, fifty. So to show that, like this is, this is a very small gain, and we, we need much more than fifty examples to actually, uh, show that this gain, gain is real.
- 26:20
Uh, with just fifty examples and only four percenta-- point percentage gains, uh, gain, we, we don't actually know if this gain is real or not. So bigger gains and bigger gains and paired designs need far less, uh, and we can reserve the rigor,
- 26:39
statistical rigor for, for things which matter the most.
- 26:46
Okay, so this is a non-exhaustive list of observed eval anti-patterns. I'm not going to read all of them, but, uh, these definitely contain some low-hanging fruits. We need to put in time and effort if we, if we need meaningful evals.
- 27:04
So we cannot rely on LLMs for everything yet. Uh, and what I can say is ignoring the data is one of the most important, uh, things which we shouldn't do, uh, and which we sometimes don't focus on due to lack of time or resourcing, but it acts as the foundation for meaningful evalu-evaluations.
- 27:25
If you don't look at the data, you won't be able to create meaningful criteria, uh, or labels. And if you don't have labels, you won't be able to evaluate your judges.
- 27:35
And if you are not evaluating your judges, you don't know if your, uh, agentic pipeline is working as, as expected. So this acts as a base, so, um, one of the most important things we should, uh, not ignore.
- 27:50
Okay, uh, we, we said that we want to make metrics more actionable and standardize the pipeline, but how actually we should do it? So this, this gives you like a template to, to do an error analysis loop.
- 28:07
And it is important to know that this loop is something which runs continuously. It's not, uh, not an one-off audit. Uh, so we deep dive into raw traces. So once we have logged our traces for our agentic flows, multi-agent systems or whatever we have in our, uh, use case, then we pinpoint failure modes.
- 28:31
So basically, we try to identify what exactly is failing, and we only keep the metrics that change a decision. We remove all the noise. We only prioritize on the metrics which are tied to business use cases, functional, uh, requirements, and actually something which changes a decision.
- 28:50
Then we form a fresh premise to reevaluate, and then we repeat it. So we can have like a regular cadence of doing this pipeline. It can be weekly, it can be biweekly, but this is something which needs to run, uh, continuously, and it's, it's not a one-off audit.
- 29:14
Okay, so tracing. Tracing, as we said, is, uh, one of the most important things, and everything kind of depends on it. For diving deep into raw traces, we definitely need to log them first.
- 29:27
So we can use tools like LangSmith, LangFuze, et cetera, to log and view the traces. Uh, and here each trace captures the full graph execution, which nodes ran, what LLM saw, which tools were called, uh, what was the token usage, what was the latency for every call, and things like that.
- 29:45
We can also end its traces with metadata if we want, which gives you more insights than, uh, than the actual data.
- 29:54
Okay, and we also have annotation queues. Annotation queues are nothing but, uh, an interface which is very helpful for domain experts to label or give feedback to evaluators in, in an easy-to-understand UI.
- 30:10
So they don't have to look at the raw traces, uh, JSONs and st-stuff like that to figure out what to focus on. They can use this annotation queue, and they can give feedback, uh, or label examples easily.
- 30:23
We can then add these traces to datasets for offline evaluation. Or we can use this for our calculating our precision and recall for our judges. So this forms the basis to validate the evaluation with ground truth labels.
- 30:43
Okay, I... Now I'll hand it over to Nick to, to close the evaluation loop.
- 30:51
Thank you, Akshay. Uh, and I think the, the goal of having eval is to be able to feed, uh, our evaluation insights back into improving the model performance or the agent's performance.
- 31:05
So here, uh, I will introduce a couple ways that we think about continual learning for our AI agent and closing the evaluation loop. Um, and here you have model learning, context learning, and harness learning.
- 31:20
Uh, model learning is really about, you know, post-training, updating the underlying model weights, and training a custom LLM model. Uh, context learning and harness learning is really more about improving, uh, everything else other than the model.
- 31:35
Uh, so context is improving what information the agent actually sees. This can be document, this can be, uh, the store memories of the user, tool outputs, and so on and so forth.
- 31:48
Harness, uh, that means updating the model system prompt, uh, tool schemas, control flow, routing, retries, and, and so on and so forth.
- 32:01
So I think from, you know, the error analysis that Akshay shared earlier, I think that has really helped us to understand how can we improve, uh, our agent prompt, as well as updating, uh, updating our knowledge base and tune the context management strategy that we have our AI agent, and identify failure mode really help us, uh, be
- 32:25
able to feed that insights into actual improvement for the agent, AI agents.
- 32:31
So I wanna quickly talk about what's next for us, uh, in our journey of building customer support AI agent at Lyft. Uh, we have a... We, we, we have, we have some, some level of ability to run our offline, uh, simulator, but in fact, I think, you know, it, it's not repeatable.
- 32:53
These are currently stored as, uh, scatter script across different notebooks and different analysis repo. Uh, I think one thing that we're looking really, really looking into investing is a systematic eval harness, uh, then having a,
- 33:10
uh, a, a harness system that can help run our offline evaluation in, in a systematic and standardized manner and allow different people to contribute to, uh, our evaluation suite with, uh, very...
- 33:24
We, we, we predefine, uh, primitive and config-based, uh, workflow. Uh, another thing that we have been talking, thinking a lot about is, uh, post-training. Uh, as we mentioned earlier, you know, identify model failure mode has really helped us tune the agent context and as well as the agent harness.
- 33:45
Uh, but over the years, we have gathered a lot of real user signals on our agent performance as well. Uh, so we, we're really starting to think about how do we fine-tune a model that does different tasks for our customer support AI agent, um, as well as framing a reward modeling problems to, to enable reinforcement learning.
- 34:11
I wanna quickly share a little bit about the work that we're doing with eval harness and how we think about building, uh, building, building eval harness for, uh, agent-facing, uh, user-facing agentic applications.
- 34:26
Uh, so again, eval is really that scaffolding that you, that we need to be able to run eval efficiently, uh, in a standardized format across, uh, all the different agents and sub-agents that we have for customer support AI agents.
- 34:44
And, and as you can see from my offline simulator slide earlier, uh, our eval harness is config-driven, and these are typically stored as YAML file that's easily editable, uh, by different contributor and not just by engineers.
- 34:59
Uh, analysts and data scientists can, can contribute to this, uh, evaluation suite as well. And, you know, with thousands, if not tens of thousands examples, uh, in our evaluation suite, we need, you know, parallelism and throughput to be able to run, uh, our offline evaluation in a reasonable amount of times.
- 35:22
And to enable a user to be... A different user to be able, to be able to contribute to our ev- eval evaluation suite, we also define, you know, primitive around our eval, eval harness.
- 35:35
Uh, these are high-level things like task, datasets, personas, LLM adapter, and e- and evaluator.
- 35:44
And after all, you know, the benefit of having a eval harness is that you can define the config once and run these eval indefinitely many times across different, at different touchpoints or different gates of your agent development process.
- 35:59
This can be, you know, locally when you're developing this agent. Uh, at, at any point when you tune a prompt, you can run the evaluation suite and get an immediate im- im- uh, immediate feedback on how your agent is doing compared to the previous versions.
- 36:17
We can run these at pre-commit hook, uh, to make sure that our performance doesn't degrade before we push a change, uh, to, uh, our agent service. Uh, another area that we are looking at is also at CI/CD and how we can use our eval harness to, uh, build our regression test suite, uh, acceptance, acceptance test suite as
- 36:40
well. So that wraps up our presentation today. Uh, we've gone through a lot of... We've gone through a lot of, uh,
- 36:53
a lot of different topics, uh, for evaluations. Uh, really, I think this is an end-to-end journey, uh, for building a evaluation pipeline that works for customer support, AI agent or any user-facing agentic applications.
- 37:10
Uh, Akshay and I, we are very interested to hear about, you know, what you all have been working on and share any learnings that you have for eval. So feel free to contact us, uh, if you have any questions or you just wanna share, um, uh, brainstorm about how to improve your evaluation system.
- 37:30
All right. Thank you, and I hope you all enjoy the AI Engineer World's Fair.
- 37:36
Thank you.
- 37:38
Thanks all.