← все видео

Build Evals That Actually Matter - Nick Ung, Lyft

AI Engineer · 2026-07-19 · 37м 45с · 3 145 просмотров · YouTube ↗

Топики: ai-agent-orchestration

🎧 Аудио

📝 Summary

model=deepseek-v4-flash · prompt=summary-v7 · 7 530→2 556 tokens · 2026-07-20 13:53:25

🎯 Главная суть

Команда Lyft строит eval-систему для AI-агента поддержки клиентов. Главный принцип: eval должен быть гейтом перед запуском, а не просто плавающей метрикой. Для этого создали офлайн-симулятор с реалистичным юзер-LLM (дообученным на данных Lyft), определили бизнес-метрики с бинарным pass/fail, внедрили цикл error analysis и eval-харнес для стандартизации.

Офлайн и онлайн evaluation: двухэтапный подход

Разработка AI-агента проходит через development → offline evaluation → launch gate → production. Офлайн этап обязателен: нельзя использовать живого пользователя как тестовые данные. Офлайн-симулятор запускает многотурные диалоги между агентом и юзер-LLM, затем LLM-as-judge оценивает качество. После прохождения гейта в проде работают онлайн-грейдеры, трейсинг и human-in-the-loop для анализа ошибок.

Три причины, почему eval обычно проваливаются

  1. Метрика не гейтит ничего — если LLM judge выдаёт счёт, но на его основе не принимаются решения (запуск/откат), то eval бесполезен.
  2. Шумный или слишком общий judge — непонятно, что делать с оценками, они не действенны.
  3. Нет механизма регрессии — при ухудшении в проде невозможно поймать момент и назначить ответственного.

Офлайн-симулятор: структура и источники данных

Вдохновлялись ToucanBench от Sierra AI. Компоненты: AI-агент, юзер-LLM, инструкции по политике (agent domain policy). Задаются:

В дополнение к LLM-as-judge используются детерминированные evaluator’ы — кодовые assertion’ы («если агент должен выдать компенсацию, проверяем, что вызов инструмента действительно привёл к компенсации»).

Синтетические данные: проблема репрезентативности

Нельзя просто сгенерировать 50 запросов одной промпт-командой — они не отражают реальный трафик. Подход Lyft:

  1. Взять выборку реальных обращений пользователей.
  2. Дополнить мутациями для покрытия edge cases (изменение критериев, сценариев).
  3. Использовать юзер-LLM, который говорит как реальный пользователь, а не как вежливый ассистент.

Почему юзер-LLM должен быть «грубым» и как этого добиться

В первой версии симулятора юзер-LLM (фронтовая модель) был слишком терпеливым, подробно объяснял проблему. Это давало 90+% успеха — unrealistic. Реальные пользователи нетерпеливы, пишут коротко, уже раздражены («I’m frustrated with earnings…»). Для симуляции такого поведения команда fine-tune’ла LLM на реальных обращениях Lyft. После этого офлайн-скоры упали, но стали честными — симулятор по-настоящему проверяет агента.

User personas: конкретные типы

Определены несколько поведенческих профилей:

Опирались на работу Microsoft UserLM, где тоже fine-tune’или юзер-модель и получали падение eval-скоров — ожидаемый эффект, усиливающий полезность симуляции.

LLM-as-judge: от общих метрик к бизнес-метрикам

Команда начинала с предсобранных метрик DeepEval (tool usage, response helpfulness, completeness). Проблема: «response helpfulness = 0.5» не говорило, что делать. Решение: совместно с domain experts формулировать метрики как бинарные pass/fail, завязанные на конкретный сценарий.

Пример — education rubric. Если AI-агент слишком много раз пытается «воспитать» пользователя (повторяет одну и ту же информацию) вместо эскалации — fail. Если слишком быстро эскалирует без попытки объяснения — тоже fail. Только такое метрики дают действенные инсайты.

Валидация judge как классификатора

LLM судью нужно верифицировать. Подход:

Criteria drift и ко-разработка evaluator’а с моделью

Критерии качества не статичны: по мере появления новых данных и примеров меняется понимание, что считать успехом. Eval и модель должны развиваться вместе. Нельзя раз и навсегда определить критерии — их нужно постоянно уточнять, глядя на результаты.

Статистическая строгость: доверительные интервалы

Сырые point estimates вводят в заблуждение. Пример: два evaluator’а показали 84% и 88% на 50 трассах — разница в 4% может быть шумом. Нужны доверительные интервалы и корректные размеры выборки. Резервировать строгую статистику стоит для моментов, когда оценка влияет на решение (запуск, доклад руководству). Более крупные изменения и paired-дизайны требуют меньше данных.

Цикл error analysis: глубокая диагностика

Это постоянный процесс, а не единоразовый аудит. Шаги:

  1. Погрузиться в raw traces (все вызовы, ответы, токены, латенси).
  2. Определить failure modes.
  3. Оставить только те метрики, которые меняют решение (отсечь шум).
  4. Сформулировать новую гипотезу, перезапустить цикл.

Регулярность: еженедельно или раз в две недели.

Tracing и annotation queues

Трейсинг (LangSmith, LangFuse) фиксирует каждый шаг графа. Можно обогащать трейсы метаданными. Annotation queues — UI для domain experts, где они в удобной форме ставят метки, не глядя в JSON. Эти метки используются как ground truth для валидации judge’ов и пополнения офлайн-датасетов.

Continual learning: три уровня улучшений

Ошибки из eval-цикла кормят три направления:

Eval harness: стандартизация и повторяемость

Офлайн-симулятор размазан по ноутбукам — это не масштабируемо. Планируется единый eval harness, где конфиги хранятся в YAML, легко редактируются не только инженерами, но и аналитиками. Определяются примитивы: task, dataset, persona, LM adapter, evaluator. Harness запускается:

Требуются параллельность и пропускная способность для тысяч/десятков тысяч примеров.

Планы: post-training и reward modeling

Накоплены реальные сигналы об успешности агента. Следующий шаг — fine-tune собственной модели под задачи поддержки и построение reward модели для reinforcement learning, чтобы улучшать агента на основе данных о поведении в проде.

📜 Transcript

en · 4 909 слов · 78 сегментов · clean

Показать текст транскрипта
Hi everyone, my name is Nick and I'm here with Akshay to give a talk about evalves. We are from Lyft and we've been building Lyft customer support AI agent for a year and two now and gave a lot of thoughts about how to build evalves that actually matters and scale our AI agents, multi-AI agent system. Just a bit of quick introductions. My name is Nick. I'm a data science manager being at Lyft for six years, a long time Lyfter. Really excited to talk to you a little bit more about eVals. I'll head off to Akshay. Hi everyone. I'm Akshay. I'm in Nick's team and we've been working together on customer support agents for Lyft, improving the hardness, improving the eVals. things like that. And I've been at Lyft for almost four years now. I'm very excited to be here and talk about building evals that actually matter. Super excited to be here and super honored to be on the online track for AI, engineer warfare. Yeah, and let's dive in. For the agenda of today, I will talk about primarily focus on evals. We will start by sharing how we think about the end-to-end pipeline for our evaluations for building customer support AI agent system. We'll go into deep dive into each component more deeply as we go. We'll start by talking about offline evaluations, online evaluations, eval harness, as well as what we are planning to build going forward. All right, let's dive in. I want to quickly... explain the high-level system of how we think about evaluation system for AI agents. So here you can see we have the development phase and the production phase. So during development, if you're building agents, you should be very familiar with managing contacts, building red pipeline to give your agents educational contacts, defining your tool. building your agentic graph as well as writing a system problem. So once all of that agent engineering process is done, you have an AI agent. The way we think about this is before we launch this AI agent to productions, we want to go through a rigorous offline evaluation process to make sure that this agent actually has sufficient performance before we launch this to a live user. So coming from data science and machine learning background, we've been building machine learning models for a while. And I think the way that we think about Asian development is very similar to building machine learning models as well. If we are running 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 applications. But what I think, you know, offline evaluation, how that is different than traditional machine learning model is that, you know, we typically we're building specifically for customer support AI use case, we're building an agent that's multi-turn. So for offline evaluation, there will be a component of simulated conversations. So you typically want to have a data set, a synthetic data set that's representative of your production's traffic, have a user LLM that plays out the complete multi-term simulated conversation, as well as having a grader such as the LLM as a judge to be able to evaluate how good that interaction 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're meeting that criteria before we decide to launch this AI agent to productions. And so the real imperative here really is that we don't want to use our live user as test data for our AI agents. and I think in any cases that is not good practice. So we really want to emphasize the importance of having an offline evaluation process. So once the agent hit productions, we also have an online evaluation pipeline as well. We have our own favorite tracing tools to trace all the executions and contacts that the AI agent use to respond to a real user in production's environment. We have our online grader as well that grades how well our AI agent is doing in productions. As far as having a human in the loop pipeline to do error analysis, identify failure mode, and feedback that insights to the development teams to continuously improve our AI agents. I want to quickly go over, I think, three of the most common reasons why we think evaluation typically fails for different teams. So the first reason is that the greater that we create, the scores that we create, needs to be meaningfully gating something. This is what we really emphasized on in the previous slide, that we need to have a launch gate. If your LM as a judge is just floating out there, there's a score, but no one is really using that score as a meaningful gate for your development and productions. environment then that LM as a judge is not available. We've also seen a lot of mishap people have when they're creating the LM as a judge. There's a lot of different opinions out there on in terms of how do you create a good LM as a judge and typically and unfortunately also very early on in our journey the LM is the LM judge that we created are very noisy too generic. it will output a score but people don't really believe in what the LN judge is doing or they don't think the LN judge insight is actionable. And finally, I think when something regresses in productions we need to have clear mechanism to be able to catch that regression as well as identify clear owners to be able to take actions on the insights of our graders and regression gate. Very cool. I want to sequence into talking about our offline evaluation system. And as I touched on early on, I think this is the most critical piece, going from development cycle to productions. We really want to have a robust offline evaluation system to be able to get more confidence in the AI agents that we are shipping to productions. We took a lot of inspiration from this paper called Tau Bench. which is developed by the wonderful people at Sierra AI and this is specifically for customer support AI agent but we also think this is applicable for any user-facing authentic applications so here as you can see this is a offline offline simulations where you have the AI agent as well as a user LLM that are interacting with each other to produce the multi-term traces. 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 customer support issues. So taking inspiration from TileBench, this is sort of a high level approach that we have in creating our offline simulator. As we mentioned earlier, we have our LandGraph agents that we've built, and we have defined instructions for our user, our LandGraph. As you can see, simulation-wise, we define the user intent, we define what this intent is supposed to represent, and we define the user data point. or the world state of our user. For example, the driver that are coming to us might be a luxury driver that might have been driving for us for a couple of years, and so forth. And finally, to define the user behavior or user personas, as we will typically see with our real Lyft user as well, we also created these different persona for our user. One example here is that this can be a loyal longtime Lyft customer, but they are frustrated with Lyft earning systems. So in our offline simulator, we have this LandGraph agent that are interacting with our user LL model and generating this multi-term trajectories of this multi-term agentic trajectory. And we also built our offline grader or offline evaluator. LLM judge is a big component of that. We will dive a lot more deeper into how to be able to grade LLM as a judge. And apart from LLM as a judge, we also have more deterministic evaluator as well. And this usually looks like a code assertion, as you will see in traditional unit tests. And for example, here, some of the deterministic criteria that we have created so far looks something like this, right? If, you know, if 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, and we'll compare the agent tool calls with the expected outcome to make sure that we can measure the accuracy of the agent instruction following behavior. So one of the big dot-shot that we face with running our offline evaluation is creating syntactic data is one of the key challenges in making sure our offline data set is representative of our production's data. So here we, you know, here we have a meme here um what ideally what you don't want to be doing is just to simply prompt an lm model to generate 50 different test queries for your offline data sets uh so here's a couple of suggestions where you can approach this you know much more much more realistically and assemble a data set that closely resembles your production data so this is also something that we we try to do for customer support ai agent as well we take uh we we we take some sample from our production data uh so uh lift user has been reaching out to support for a long time we take a sample of our real production example and supplement our offline data set with that and you and the second thing that we can we do is we mutate different criteria for our offline datasets to be able to cover different golden path and edge cases. So one problem with our offline evaluator is that as we mentioned in the previous slide, if you were simply sampling different 50 test query by using an LLM model, Another big godshot that we would face in building this offline simulator was that we were using a Frontier Lab LLM model to roleplay Lyft user in our offline evaluations. And for the most part, our Frontier Lab model are trained to be helpful, persistent, rather than a Lyft user that might not sound as nice as always. So I think for everyone that have tried customer support before, you know, you don't typically reach out to customer support agent with a very nice verbatim. So in our first past at running our offline evaluation, what we noticed is that our LLM user sounds almost too nice. And as you can see on the right here, these verbatims are very, very... very very complete the use the lm user are very patiently explaining the issues that they are facing in productions and our first attempt at our offline evaluation gave us 90 plus cost rate or accuracy rate right this almost sounds too good to be true and i think it indeed is too good to be true so in reality these are the real user pervading that we get in productions As you can see here, most users, they are they're impatience, they're already frustrated. So the varying, they don't want to explain their issues like a LM user will. So typically what we see in production is something like this. And in fact, in reality, this makes, you know, AI agents much more difficult to evaluate. What can we do here? How can we make sure our Lyft user, LN, simulates this real-life Lyft user much closely, right? So how we approach this is we fine-tune a LN model with Lyft user verbatim. So instead of speaking like... this very verbose and very nicely and patiently explaining their issues uh our lm user will produce verbatim that's resembled as much closely and the benefit of this is well you know we we did see our evaluation score goes down after we fine-tune a lm model that speaks more like our lift user and therefore making our evaluation more difficult but in reality this is really what you want when you're building this user simulator, right? If you have an edile that's too easy, that doesn't give you any real production insights into how your AI agent is actually going to perform. And this also gives you a lot more room to be able to tweak your AI agents to deal with quote unquote difficult users. And as I gave a little bit of sneak peek earlier as well, we also did a lot of work to define live user personas, uh this can really ground our alum user to adopt a specific lift user persona and therefore simulate our real life user much more closely a couple of different user persona that we define here uh are in the bypasser user who just want to escalate to agent regardless of and not giving ai a chance refund seeker uh ai skeptics so the We really also took inspiration from this paper from Microsoft UserLM Microsoft paper and I think they adopted a very similar approach as well. They fine-tuned a user LLM model and saw evaluation score goes down. But I think in reality this is really what's expected and good for your applications. All right, I'll hand it off to Akshay to talk more about LLM judge. All right. Hi, everyone. So I'm going to take from here. I'll talk about the second problem which we usually face when we are doing evals with LLM as a judge. And here you can see this is how pretty much everyone is using LLM as a judge to evaluate their agents. 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 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 uh and and things like that so some parts are deterministic which can be evaluated by code and some are not which are evaluated by the rlm 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 evaluation using pre-built metrics from deep eval, which were measuring tool usage appropriateness, response helpfulness, conversation naturalness, completeness, and things like that. 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 0.5, then what do we do with it? So things like, and other scores like toxicity score, bias, fairness, conciseness, all these are kind of relevant, but if the metrics are just scores, we don't know what to do with them. So we can use these pre-built. 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 uh okay so what llm as a judge should be uh we collaborate very closely with uh domain experts and utilize their insights so eval should be framed around a task success or failure And a binary outcome is very easy to calibrate and train LLM jets that can consistently score your agentic trajectory. 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 and actionable insights. Not only this is more consistent, but when an agent fails an interaction, we can systematically analyze the error pattern and actually know what we can do to fix this. Here is an example of an actionable metric for our use case, which is called education rubric. Here the AI, we define the metric, how it should be, and we define success and fail criteria for LLM judge. So for example, the AI agent tries too many times to educate the user if it could have escalated the issue or if it's escalating too soon without giving any chance to educate the user. So things like that comes under failure category. So we mark this as fail, but if it's an expected behavior, we mark it as a sparse. Okay. So with this, how do we validate if our llm judge is working as expected 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 once we have binary outputs for every metric or a task based on our business goals and functional requirements We can hand label around 100 examples with pass-fail labels and then split the data into train, dev, and validation sets like how we used to do with machine learning models. Then we scored precision and recall for our judge based on human-labeled ground roots, which will give us an actual report on how good our judge is performing. 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 and here we are not actually training model weights so we are just using the data to inform judges from so the percentages are a little bit different for example In training data, we pick a few short examples from this set for the judges prompt. And then we iterate the prompt against the dev set and improve our hardness or our prompt. And then finally, we validate against the test set to see that we didn't overfit on the dev examples. This is the practical way of like... splitting the data and then calculating precision recalls scores for your judge to actually know that the judge is working as is expected. Okay, so this is another thing which is another thing which most of us ignore when we are doing evaluations, 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. And our sense of quality will also evolve with new data we see and more examples we grade. So the evaluation should not be decoupled from model observations. In fact, they should be co-developed with the model. when we are testing the evaluator and calculating the precision and recall scores so uh we there there's always a gap when we when we talk about lm as a judge we cannot define the criteria beforehand and then evaluate agents against them uh 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 those metrics So the next step, one of the things which can make the numbers we are reporting more meaningful is to add some statistical rigor to it, right? We report alignment rates as bare point estimates. So if we add confidence intervals, we do some calibration and proper sampling, the same numbers can become more meaningful. We should definitely reserve the expensive rigor for the moments. a number actually gates something or like a shipping decision or we are reporting numbers to company leaders. But depending on the use case, we should definitely have confidence intervals for the numbers we report because every score needs an interval. So this is just a small example to give you an insight on what this actually means. Let's say we have two evaluators and one scores 84% and the other scores 88%. And the number of samples, the number of traces which we have used is, let's say, 50. So to show that this is a very small gain and we need much more than 50 examples to actually show that this gain is real. With just 50 examples and only 4 point percentage gain, we don't actually know if this gain is real or not. So bigger gains and paired designs need far less. And we can reserve the rigor, statistical rigor for things which matter the most. Okay, so this is... non-exhaustive list of observed eval anti-patterns. I'm not going to read all of them, but these definitely contain some low-hanging fruits. We need to put in time and effort if we need meaningful evals. So we cannot rely on LLMs or everything yet. And what I can say is ignoring the data is one of the most important things which we shouldn't do. which we sometimes don't focus on due to lack of time or resourcing but it acts as the foundation for meaningful evaluations if you don't look at the data you won't be able to create meaningful criteria or labels and if you don't have labels you won't be able to evaluate your judges and if you are not evaluating your judges you don't know if your agentic pipeline is working as it is expected so this acts as a base so one of the most important things we should not ignore. Okay. We said that we want to make metrics more actionable and standardize the pipeline, but how actually we should do it. So this gives you like a template to do an error analysis loop. And it is important to know that this loop is something which runs continuously. It's not in one-off audit. So we deep dive into raw traces. so once we have logged our traces for our agent to close multi-agent systems or whatever we have in our use case then we pinpoint failure modes 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 requirements and actually something which changes a decision. 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 continuously and it's not a one-off audit. Okay, so tracing. Tracing, as we said, is 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 so we can use tools like langsmith line fuse etc to log and view the traces uh and here each trace captures the full graph execution which nodes run what llm saw which tools were called what was the token usage what was the latency for every call and things like that We can also enrich traces with metadata if you want, which gives you more insights than the actual data. Okay, and we also have annotation queues. Annotation queues are nothing but an interface, which is very helpful for domain experts to label or give feedback to evaluators in an easy to understand UI. So they don't have to look at the raw traces, JSONs and stuff like that to figure out what to focus on. They can use this annotation queue and they can give feedback or label examples easily. We can then add these traces to data sets for offline evaluation or we can use this for calculating our precision and recall for our judges. So this forms the basis to validate the evaluation with ground truth labels. Okay. Now I'll hand it over to Nick to close the evaluation loop. Thank you, Akshay. And I think the goal of having Eval is to be able to feed our evaluation insights back into improving the model performance or the agent's performance. So here I will introduce a couple of ways that we think about continual learning for our AI agent and closing the evaluation loop. And here you have model learning, context learning, and harness learning. Model learning is really about post-training, updating the underlying model weights, and training a custom LLM model. Context learning and harness learning is really more about improving everything else other than the model. So context is improving what information the agent actually sees. This can be document, this can be the store memories of the user, two outputs, and so on and so forth. Harnessed, that means updating the model system prompt, two schemas, control flow, routing, retries, and so on and so forth. So I think from the error analysis that I actually shared earlier, I think that has really helped us to understand how can we improve. our agent prompt as well as updating our knowledge base and tune the context management strategy that we have for our AI agent. The identify failure mode really help us be able to feed that insight into actual improvement for the AI agents. So I want to quickly talk about what's next for us in our journey of building customer support AI agent at Lyft. have a we we have we have some some level of ability to run our offline simulator but in fact i think you know it's not repeatable 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 and having a a harness system that can help run our offline evaluation in a systematic and standardized manner and allow different people to contribute to our evaluation suite with predefined primitive and conflict-based workflow. Another thing that we've been thinking a lot about is post-training. As we mentioned earlier, Identify Model Failure Mode has really helped us tune the agent context and as far as the agent harness. But over the years, we have gathered a lot of real user signals on our agent performance as well. So we're really starting to think about how do we fine tune a model that does different tasks for our customer support AI agent. as well as framing a reward modeling problem to enable reinforcement learning. I wanna quickly share a little bit about the work that we're doing with eval hardness and how we think about building eval hardness for agent facing, user facing agentic applications. So again, eval is really that scaffolding that we need to be able to run eval efficiently. in a standardized format across all the different agents and sub-agents that we have for customer support AI agents. And as you can see from my offline simulator slide earlier, our email harness is conflict-driven and these are typically stored as YAML files that's easily editable by different contributors and not just by engineers. uh analysts and data scientists can can contribute to this evaluation suite as well and you know with thousands if not tens of thousands of examples uh in our evaluation suite we need you know parallelisms and throughput to be able to run our offline evaluation in a reasonable amount of times and to enable a user to be a different user to be able to be able to contribute to our eval evaluation suite we also define you know primitive around our eval eval harness these are high level things like tasks data sets personas lm adapter and evaluator and after all you know the benefit of having an eval harness is that you can define the config once and run these eval indefinitely many times across different at different touch lines or different gates of your agent development process. This can be locally when you're developing this agent. At any point when you tune a prompt, you can run the evaluation suite and get immediate feedback on how your agent is doing compared to the previous versions. We can run these at pre-commit hook to make sure that our performance doesn't degrade before we push the change. and to our agent service another area that we are looking at is also at ci city and how we can use our eval harness to build our regression test suite acceptance acceptance test suite as well so that wraps up our presentation today we've gone through a lot of we've gone through a lot of a lot of different topics for evaluations Really, I think this is an end-to-end journey for building an evaluation pipeline that works for customer support, AI agent, or any user-facing agentic applications. Akshay and I, we are very interested to hear about what you all have been working on and share any learnings that you have for eval. So feel free to contact us if you have any questions or you just want to share a bump. brainstorm about how to improve your evaluation system. All right, thank you and I hope you all enjoy the AI engineer welfare. Thank you. Thanks all.

⚙️ Pipeline jobs

StageStatusAtt.UpdatedError
download done 1/3 2026-07-20 13:52:34
transcribe done 1/3 2026-07-20 13:52:58
summarize done 1/3 2026-07-20 13:53:25
embed done 1/3 2026-07-20 13:53:28

📄 Описание YouTube

Показать
Your agent passes offline evals at 90%. You ship. Production immediately finds failure modes your eval never saw. Sound familiar?

The culprit is almost always the same: the "customer" in your offline eval is an off-the-shelf LLM that sounds nothing like your real users, and your synthetic test set doesn't capture how messy, angry, or off-topic real conversations get. Your eval was too easy.

At Lyft, our customer-care agents resolve roughly a third of all customer issues — millions of conversations a month. To trust them at that scale, we built an adversarial user simulator: a fine-tuned LLM trained on real Lyft rider and driver transcripts that can role-play frustrated, confused, and adversarial users with the same distribution as production. It found regressions our synthetic dataset missed for months.

This talk walks through the full eval lifecycle that surrounds it: the harness primitives that let any engineer write a benchmark in 20 lines, how we calibrate LLM-judge rubrics against human labels until they match inter-rater agreement, how we route failed production traces back into the offline test set, and the continual-learning loop that feeds improvements into prompts, harness, and the model.

Speakers:
- Nick Ung (Lyft): Nick Ung leads Data Science for Safety & Customer Care at Lyft, where his team built and operates the multi-agent platform that powers AI agents resolving roughly a third of all Lyft customer issues.
  LinkedIn: https://www.linkedin.com/in/unglikteng