[
  {
    "startMs": 12760,
    "text": "My name's Fuad Ali. I work in product at Arize AI, and I've been working on agent experimentation and generally agent tooling across the stack at Arize. Uh, you just heard from Laurie, uh, who is also part of our team here at Arize. He's gonna be flitting around the room. Aparna, our co-founder and CPO, will also be flitting around the room to help you guys out if you require during this workshop. Uh, what we're gonna be talking about today is building self-learning loops for your agent. Um, and just to give you a bit of background"
  },
  {
    "startMs": 42800,
    "text": "on myself and, and how I got into this space, I think this concept of self-learning loops is really new to this idea of AI engineering. Uh, and there's a lot of features in Arize that kind of help you support it. But to kind of frame this, um, I actually worked in backend distributed sy- systems at SpaceX, and it is actually quite interesting how we're kind of coming full circle in this world of telemetry, where, you know, if you think about it, uh, a rocket system that is continuously course-correcting every millisecond is"
  },
  {
    "startMs": 72680,
    "text": "actually consuming its own telemetry and then actioning that telemetry in order to self-correct. And basically, what I'm gonna explain is how we've sort of built this idea of self-learning loops for your agent in Arize and how you can use that to self-correct. Cool. So to give you a bit of history on Arize, we made a few big bets. Uh, we were first to the market with LLM as a judge back in twenty twenty-three. Uh, we created the first set of semantic conventions for LLM applications"
  },
  {
    "startMs": 102480,
    "text": "with OpenInference, open sourced. Uh, we created the first real-time AI data store, ADB. Uh, in twenty twenty-five, we released Agent Evals and Alyx, which is our in-house agent, uh, to kind of help you with AI engineering. Think of Cursor for engin- AI engineering. And in twenty twenty-six, the next big bet we really wanna make is how you can create self-correcting agents with a feedback loop. Um, and I think everyone understands sort of, like, how that is going to be extremely powerful"
  },
  {
    "startMs": 132500,
    "text": "to this idea of, of agents generally. Um, and so I really think the, the industry is evolving quite a bit, um, when it comes to software engineering. Uh, you sort of have the classic, you know, software one point oh where there's an app, and it's traced to Datadog, and there's some sort of observability platform that human beings read. A human dev then writes code to actually correct it. I think two point oh was really humans interacting with this in prompts. Um, so same"
  },
  {
    "startMs": 162400,
    "text": "thing, but instead of you writing the code, you write a prompt that then corrects the behavior that you're seeing in your app. Uh, what we're moving to really is phase three, which is the fully autonomous loop. In this loop, your application produces telemetry events, observability, and then what is actually reading that is your coding agent. It's not just a human reading it and then putting a prompt in. Um, if any of you guys are using things like Cursor, Claude Code, the Datadog CLI, you're already seeing some of this."
  },
  {
    "startMs": 192780,
    "text": "Uh, the gap is you're still probably prompting that to go read that information from a backend like Datadog or whatever it is. Um, and I think when you evolve to the, to the needs of, like, you know, thousands of agents across a stack, it starts to become pretty much impossible for a human being to actually read those things. And so, um, gonna be talking a little bit about some of the fe- new features in Arize that we've released that kind of support this, uh, flow. But what I want you guys to center on is that observability has to"
  },
  {
    "startMs": 222280,
    "text": "evolve from humans reading dashboards to really programmatic interfaces that agents consume, agents can operate on, and agents can self-reflect on as well."
  },
  {
    "startMs": 238140,
    "text": "So just some proof in the market, uh, Arize has processed over one trillion spans. Uh, we've run over sixty million evaluations per month. Uh, and we have over three million downloads per month. Uh, trusted by a ton of different cool teams, uh, whether it's Spotify, Reddit, Uber, TripAdvisor. So just to, you know, build some confidence that I'm not just here vibe coding something and telling you guys how it should work. Um,"
  },
  {
    "startMs": 265740,
    "text": "and I think if you look at the industry, um, the industry is really kind of moving towards this as well. It's not just, you know, these teams, but it's also teams that aren't even Arize customers, like Ramp Labs, and how they've kind of moved to this idea of making software self-improving and self-healing. Um, and I just point this out to say the industry is really moving in this direction. It's not just us. You want agents that can detect a problem, investigate it, ship a fix in the same"
  },
  {
    "startMs": 295780,
    "text": "loop, uh, and that's sort of the loop I'm gonna show you guys how to build today."
  },
  {
    "startMs": 302660,
    "text": "Cool. So, um, I think the, the big problem I wanna outline here is the failures that cost you are invisible at launch, and that's sort of by definition because if you had caught them, they wouldn't have cost you. You would have shipped the fix already. Um, and I think, like, really what I'm trying to center on here is, you know, your agent works in your experimentation phase. It works with the evals that you set up. You don't really know all the evals that you have to set up before you ship it, otherwise you would have written"
  },
  {
    "startMs": 332640,
    "text": "it. Um, and something bre- breaks in edge case that your team just wasn't aware about. For example, in this, in this example, a shopper's asking for a birthday gift under thirty bucks. They get a list of items over thirty, fifty dollars. And then what you'll see in production is the agent confidently purchases the wrong item, always does so extremely confidently, uh, because it never verifies the product. And these don't-- again, these don't show up in staging. They show up when users complain. They show up when you get a support ticket. They show up when you get"
  },
  {
    "startMs": 362420,
    "text": "paged on call at three AM. Um, and that gap, it works in staging, didn't work in production, something sees off, is what I'm trying to close here."
  },
  {
    "startMs": 375440,
    "text": "Cool. So, uh, real quick just to ground our kind of talk in an example, we have this thing called the Wonder Toys Assistant. Um, it's a shopping assistant, very simple application, has a few tools available to it to search products, get product details, get the information required for one particular product, purchase that product, uh, check an order status, and cancel an order. Um, we have the OpenAI Agents SDK running on top of this, a fast"
  },
  {
    "startMs": 405300,
    "text": "API backend, uh, search with a vector search and a text fallback, and it's traced to Arize, so you can actually see the source of truth for what that agent is doing in production. And just to give you a little kind of like sneak preview of what that agent is, very simple. You know, you kind of have like a web interface for Wonder Toys, and I'll zoom in a bit so you guys can see. Um, I can click on ask about the product."
  },
  {
    "startMs": 436380,
    "text": "Ask the agent to"
  },
  {
    "startMs": 441140,
    "text": "purchase the product, and don't worry, no real credit card's involved in this demo at all."
  },
  {
    "startMs": 446860,
    "text": "Cool. Um, so that just grounds us a little bit in the example we'll talk, we'll be talking about today."
  },
  {
    "startMs": 454620,
    "text": "Um, and I think the, the key thing here is we're gonna be going down a few routes to explain some of the new features in Arize. Um, but really it's gonna be four commands and then a bit of clicking around the UI interface. You're gonna Git clone the repo. And don't worry, I'll, I'll flash back to this slide so you guys have enough time to walk through this. You're really just gonna Git clone the repo,"
  },
  {
    "startMs": 477120,
    "text": "navigate to it, add your API keys, npm run dev. And your tracing should be set up after you've gotten an API key from Arize, uh, and an OpenAI, OpenAI API key to run the OpenAI Agents SDK. Um, and that's pretty much it. And then once you start clicking around, you'll see that the traces automatically start flowing, uh, into Arize."
  },
  {
    "startMs": 502660,
    "text": "Cool. So, um, we're gonna get to kind of like how we can actually start breaking this thing. But, um, the specific bug I've put in this repo is around this kind of idea of price gates. Um, so most of the, most of the kind of queries will work, and you guys are welcome to play around with it on your own. Uh, but if you ask for a birthday gift under $30, you're gonna be get- getting items over $33. Very common edge case, one where, you know, a"
  },
  {
    "startMs": 532280,
    "text": "specific gate wasn't triggered. Um, and without the actual kind of context of the coding repo and the context of the traces, it's very hard to find edge cases like this, um, in, you know, sort of an opaque system that's just emitting telemetry data. Um, the agent won't flag it. It'll return a confident list of completely wrong products. How do you actually re- write an eval for an edge case you haven't seen yet? And so the first of the new features that we have in Arize to kind of talk through this"
  },
  {
    "startMs": 562180,
    "text": "is called Signal. Uh, Signal is an out-of-the-box agent that lives on the Arize platform in a sandbox, and it's really just one toggle to turn on in project settings. And what Signal does is it continuously runs on your production traces, um, in the background. And so what it'll do is it'll read every trace that's coming in. It'll start to cluster failures by root cause, dedupe those failures across runs if the same failures are occurring. And because it is an"
  },
  {
    "startMs": 591900,
    "text": "agent with an entire harness, it can actually call to external tools. So what you can do is you can connect Signal to your GitHub repo. You can connect Signal to downstream data sources like Datadog. And what Signal will do is, sitting on top of your trace data, which is a source of truth for what your agents are actually doing in production, it will then self-reflect and go look at the code for the agent that you're running, go look at downstream data sources like Datadog, and can actually write an"
  },
  {
    "startMs": 621540,
    "text": "investigation, write a severity and se- and entity type, and, and collect some evidence for that, and actually write a PR for you and open that PR. Um, so you're, you know, kind of flashing back to the beginning of this presentation that I was talking about where we have this evolution of software engineering. We're going really to that phase three, where the agent is consuming its own telemetry data o- off of the observability platform. It's then looking at its own code and then trying to propose a fix based on some evidence that it"
  },
  {
    "startMs": 651580,
    "text": "has."
  },
  {
    "startMs": 657760,
    "text": "Cool. So that's, that's the first part, Signal. Um, the second part is really around this idea of skills, and we'll be having a workshop later today that goes really in depth to all the skills that we've released. Uh, but maybe you don't want to have that ma- agent managed on Arize. Maybe you just want to be able to pull data from some store that you have. Uh, what we've also released is this concept of Arize skills. Um, so Arize skills allow your coding agent that you're working in, whether you're using Cursor, Claude Code, uh, Codex, or"
  },
  {
    "startMs": 687820,
    "text": "forty-plus other coding agents, OpenCode, Hermes, whatever it is, um, and this can actually start to query the traces from Arize. So, um, a good example of that I think is..."
  },
  {
    "startMs": 702500,
    "text": "Uh, give me one sec."
  },
  {
    "startMs": 710860,
    "text": "I can actually ask my coding agents, this is just Claude Code, but I can ask my coding agents to actually go read my traces once I'm in the repo. And so it'll be able to see what the agent's doing, uh, from the trace data as well as the actual code for that agent at the same time and make some really impactful fixes."
  },
  {
    "startMs": 734520,
    "text": "Cool. Uh, so variety of skills. We have skills for creating data sets off of failures. We have cr- skills for, uh, going in and reading traces and doing some of that trace error analysis, um, as well as skills for, you know, actually running evaluators and running tasks on the platform as well. So the first part of this kind of skills workflow is that Claude can actually write the fix for you because it's sitting in your coding repo. Similar to Signal, Signal is running on top. It has access to your GitHub repo. It can go push up a"
  },
  {
    "startMs": 764280,
    "text": "PR for you."
  },
  {
    "startMs": 767020,
    "text": "Um, and so, so these two paths are sort of equivalent. Um, you have Claude Code with the Arize trace skills. That's kind of like an on-demand method. Let's say you're an engineer working on your product continuously, and you're actually sitting there and trying to improve it, versus Signal, which is the always-on sort of continuous method. It's continuously serving up, uh, you know, new insights, new analysis for you based on your trace data."
  },
  {
    "startMs": 792740,
    "text": "Um, and Signal, like I mentioned before, can actually kind of root cause that because it has access to your coding repo. It can write an investigation report, um, and it can actually try to, uh, put up a PR based on that. And it's not just, you know, individual traces it's looking at. It's looking at the entire context of what your agent is actually doing in production."
  },
  {
    "startMs": 814260,
    "text": "So, um, real quick, 'cause I wanna get to the meat of this presentation. I'm going to pause here and keep this slide up. Like I mentioned before, we have Laurie in the room and Aparna in the room, um, to help out and run around and kind of help you guys set up. Aparna's right here. I think Laurie is somewhere else in the room, but he'll, he'll be running around. And we got Dat as well from our team. Uh, so real quick, these are literally the, the only four commands you have to run. I would recommend"
  },
  {
    "startMs": 844180,
    "text": "signing up for a free account at Arize dot com to just get your Arize API key to start seeing some of the traces flowing in, and you will need an OpenAI API key as well for this presentation. So I'll pause here, leave this slide on, and then we can start walking through getting the traces for the Wonder Toy signal, and then what I'll do is we'll walk through how that loop actually starts to get into production. Um, so yeah."
  },
  {
    "startMs": 870780,
    "text": "Who needs a key?"
  },
  {
    "startMs": 871040,
    "text": "And if anyone needs a key, uh, Dat is more than willing to give, give you guys a key."
  },
  {
    "startMs": 893780,
    "text": "All right. How's progress going so far, guys?"
  },
  {
    "startMs": 898320,
    "text": "And if you don't have your laptop, don't worry. I'll be walking through sort of what this flow looks like, uh, if you were to have done it yourself as well."
  },
  {
    "startMs": 907420,
    "text": "I'll give you guys maybe two to three more minutes to set up your API keys and to run these commands and clone the repo. I know that the Wi-Fi's been a little wonky today, so won't fault you guys for that."
  },
  {
    "startMs": 920640,
    "text": "Just get a free account, you don't get access to any eval."
  },
  {
    "startMs": 925300,
    "text": "Uh, no, you do."
  },
  {
    "startMs": 926960,
    "text": "It said you needed enterprise."
  },
  {
    "startMs": 928900,
    "text": "You still get access to evals. You don't get-- There's a few features like code evals and things like that, yeah."
  },
  {
    "startMs": 939140,
    "text": "And for this flow, we'll mostly be showing how Claude Code can do that trace analysis for you through the skills and through Signal. Um, so it won't be, it won't be necessary for this one."
  },
  {
    "startMs": 953140,
    "text": "Anyone having any trouble? Anyone need some help? Feel free to raise your hand, and we'll flit around the room."
  },
  {
    "startMs": 965540,
    "text": "Sorry?"
  },
  {
    "startMs": 970920,
    "text": "Here, I'll jump down."
  },
  {
    "startMs": 974600,
    "text": "Sorry."
  },
  {
    "startMs": 975620,
    "text": "I think it's a Wi-Fi issue. The Git clone is stalling. Yeah."
  },
  {
    "startMs": 979320,
    "text": "Ah, okay."
  },
  {
    "startMs": 980060,
    "text": "It's just stopping there."
  },
  {
    "startMs": 980940,
    "text": "Cool. That's probably a Wi-Fi issue."
  },
  {
    "startMs": 1003160,
    "text": "So if you guys are having Wi-Fi issues, let me know when you can start to see, um, the repo pull up. It might take a few seconds, uh, but this is generally the structure of the repo. Um, we have kind of the agent, all the scripts that it needs, um, and a bunch of other things there. So I'll give you guys a few more seconds 'cause I know the Wi-Fi is a little slow. Uh, once we s- get folks starting to get into the repo, uh, please make sure to sign up for an API key as well, uh, and get your OpenAI API key as"
  },
  {
    "startMs": 1033180,
    "text": "well so we can get started."
  },
  {
    "startMs": 1054140,
    "text": "Should I just keep going? No, just, like, do it alongside them."
  },
  {
    "startMs": 1071040,
    "text": "Yeah. And just a reminder, all you have to do is run those few commands. So you Git clone, um, the repo. Then you'll CD into that repo, so I'm already in there. Um, then you'll NPM install, and then make sure that you have your env file loaded. This is where you're gonna be putting your three keys."
  },
  {
    "startMs": 1093100,
    "text": "You"
  },
  {
    "startMs": 1096260,
    "text": "gotta type no dot at the end."
  },
  {
    "startMs": 1096760,
    "text": "No dot at the end here."
  },
  {
    "startMs": 1102320,
    "text": "Uh, at the beginning and the end."
  },
  {
    "startMs": 1102940,
    "text": "Wait. Sorry. Which one?"
  },
  {
    "startMs": 1109920,
    "text": "Standard"
  },
  {
    "startMs": 1117780,
    "text": "Oh, the dot git at the end."
  },
  {
    "startMs": 1130620,
    "text": "For example. Got it."
  },
  {
    "startMs": 1151760,
    "text": "Can't change it right now, but, uh, we'll, we'll get it going."
  },
  {
    "startMs": 1164220,
    "text": "Cool. All right, I'll start-- I'll, I'll leave this up for, for maybe ten more seconds. Um, very simple, make sure you put your env values in. Uh, there may be a bug there as well, um, but just make sure you look for the .env file, input your own keys. Um, just to show you an example,"
  },
  {
    "startMs": 1183960,
    "text": "uh, I will take this off so you don't see my keys, but there are, there are some keys in there as well. Um, and then you npm install and npm run dev. So what you'll then see is that your Wonder Toys interactions, so your interactions with this chatbot, are being traced to Arize. Uh, and in your Arize traces, you'll actually be able to see, um, the things that are coming in through this chatbot, right? So I can see that I started an agent workflow, the Wonder Toys agent then, um,"
  },
  {
    "startMs": 1213460,
    "text": "responded, it searched products, uh, it took another turn and actually found the products and returned them to me, uh, and I can kind of see the output of what that agent is doing. So this is like kind of like baseline value prop. Can I trace? Can I understand what's going on? Uh, and then the second part of this that I wanted to show is sort of like some things that Signal can do on top of this. So you have all this trace data, uh, coming in through Arize, and what you actually want to start doing is you wanna enable Signal to actually run on top of your agents."
  },
  {
    "startMs": 1245700,
    "text": "And I'll show you an example of Signal, uh, in a repo. So Signal runs continuously in the background. It takes a few minutes to actually get started once your traces start flowing in. Uh, so I'll show you-- We're getting hit with a little slow Wi-Fi, but I'll show you an example of Signal already set up and ready to go and sort of how it's, it's sort of doing that loop of self-improvement."
  },
  {
    "startMs": 1290060,
    "text": "So kind of like I mentioned earlier, traces are flowing in through Arize. Every interaction you do with the app comes in. Um, and then this is sort of what Signal looks like. Um, so Signal has kind of this clustering analysis of different issues that it's seeing across your application. Uh, you'll see sort of this table of, uh, ca- a categorization of what those issues are. Uh, you can see those issues trending over time. Um, and then you can actually go read examples of what that are, right? So"
  },
  {
    "startMs": 1320660,
    "text": "in this example, uh, we can see some serialization issues with Python, um, and that, that is corrupting the agent, um, input. And you'll see that it actually opened a PR for me already. Um, and so I can just one click, go into that PR and start viewing it. Um, there's also this idea of like writing at least the ticket out of that investigation. So you'll see this overview of what, um, this stock agent is doing, fabricating results, for example, uh,"
  },
  {
    "startMs": 1350660,
    "text": "a hypothesis of why that's happening, evidence for that within an individual trace, um, and then a proposed fix for you to go and, and then do yourself. Um, so kind of going back to this concept of like agents consuming the telemetry data. This agent is sitting in the back consuming the telemetry data, actually writing out the evidence and proposing a fix for you. Uh, in this example, we've still, you know, left the code review to a human. Your mind's the limit on how far you wanna take these things. We do recommend you do that as well. Um,"
  },
  {
    "startMs": 1381120,
    "text": "but kind of this idea of like the self-healing software you can see, uh, in action."
  },
  {
    "startMs": 1387840,
    "text": "How are we feeling on, um, setup? Is-- Was the Wi-Fi able to get up and running for people? Did they-- Were you able to-- No? Okay, cool. I will continue kind of through the presentation, and maybe we can take some time at the end as well to kind of flit around the room, help you out."
  },
  {
    "startMs": 1404920,
    "text": "So kind of the four steps that I wanted to walk through with you guys were, one, detect. So surface the fa- fallback failure before a user had reported it. Two, based on that failure and evals running in your platform, actually investigate what's happening with real traces. Um, and so in our example, there was a bug with the price check. And so what Signal and your skills via Claude Code was able to do was look at the traces, look at"
  },
  {
    "startMs": 1434920,
    "text": "what a user is asking within the trace around, you know, the price being under thirty dollars, actually marry that to an investigation of the code path that checks the price filter, and then propose a fix for you. So, um, in my code, there was a bug with how I was actually doing that price filter, and using Signal, using the trace data that's in Arize, and using, uh, the skills via Claude Code, I was able to see that interaction happen with a real user and then fix that, you know, kind of wrong filter in my"
  },
  {
    "startMs": 1464720,
    "text": "code for the agent. Um, and then finally, we have this verify path. Uh, wasn't planning to get to it today because it is a little bit of setup, uh, but happy to kinda talk through that, and then we'll make sure to, uh, kind of return when the Wi-Fi is good as well. So again, just a, just a quick recap on the basics here. Uh, we have this idea of, you know, the core loop running on a real agent which detects the issue around the age filtering bug, investigates, uh, using the Arize trace"
  },
  {
    "startMs": 1494484,
    "text": "skill or through Signal, uh, fixes that issue, Claude actually patching the fallback, uh, and then verify it, uh, which I'll kind of walk through how that works in Arize as well, uh, with Harness as a judge and agent experiments. Um, and then Signal, it'll kind of do this in parallel as well for when you don't wanna be hands-on with the keyboard and want to run this in the background. Uh, Signal will be tuned to your own taxonomy, your own traces. Um, it-- you can also configure it to be set off"
  },
  {
    "startMs": 1524184,
    "text": "alerts. Um, so for example, if you have an alert on a specific eval that needs to stay below, um, you know, one percent trigger rate, you can configure Signal to be triggered off of an alert, um, or, you know, a latency spike or a cost spike or anything like that. Um, you can then have custom Harness judges running in CI on those PRs. Um, you can experiment with those, and then you can kind of optimize things from there. Um, and quick, quick shout-out as well, at two PM, Lori will be"
  },
  {
    "startMs": 1554164,
    "text": "doing a workshop, hopefully the Wi-Fi's a little bit better as well, where we dive deep, deep into some of these workflows as well. Um, so kinda centering us, I talked about this loop. I think we all kind of get the picture of I have an app, it's traced, those traces flow in, and then in addition to the trace data, uh, whether it's Signal, whether it's your own coding agents, having trace data, which is the source of truth for what your agent is doing, as well as your actual repo data, which is the code that defines what your"
  },
  {
    "startMs": 1584124,
    "text": "agent should be doing, um, you get some really, really interesting analysis, um, and the ability to actually make improvements at scale. Um, I think one thing that we didn't talk about yet that I wanna get into is sort of how do we evaluate agents using agents? So this is kind of like an example of pull the traces, you know, look at my code, figure out what's wrong. When you wanna have sort of this more adaptive analysis, we tend to think of it as Harness as a judge. So I think, raise your hands if you guys are familiar with LLM as"
  },
  {
    "startMs": 1614144,
    "text": "a judge, loosely speaking. Cool. Awesome. I think pretty much everyone in the room should be familiar with that at this point. Um, you know, very common pattern. You feed in an input, your LLM as a judge reads the input, uh, whether it's a summarization task or a hallucination eval, whatever it is. It then responds with a set of rails, um, on how well, uh, the sort of the agent did on the response. What we're really moving to is Harness as a judge, and this is for a few different reasons. I think firstly,"
  },
  {
    "startMs": 1645104,
    "text": "LLM as a judge is really a fixed rubric, so when you have a use case in mind and when you have an eval that you know you wanna score on, it works really well at catching those known issues. However, like I just kind of explained with the price filter, you don't always know what those issues are gonna be like before you hit production. And so Harness as a judge is a way to do that adaptive analysis. Um, so observe what the agent is actually doing and adjust what you actually test as the"
  },
  {
    "startMs": 1675064,
    "text": "agent goes. So the criteria kind of emerges from the trajectory. Um, was this the right tool to pick? Were the arguments valid? Was this grounded in the right context that was handed off by another agent, for example? This idea of that unknown unknown. So that price filter was an example where I wouldn't have written maybe a test case for that, um, but an-- Harness as a judge is able to kind of do that adaptive analysis for me with the trace analysis that it has in it. Um, so"
  },
  {
    "startMs": 1705324,
    "text": "this is sort of like verifying in plain language. You're not column mapping, you're not writing boilerplate, you know, sort of eval templates and, and text. The rubric is really just a sentence, and it reads the actual trace tree directly, um, then runs in a sandbox against those real traces. Um, and so I think it gives you a bunch of, you know, tools on top of that because it also runs in an environment. So one example that I see a-- from a lot of customers is around this idea of access checks."
  },
  {
    "startMs": 1735684,
    "text": "Um, an LLM as a judge might be able to read an input and read an output, but because it has no data outside of that, unless you paste in every user in the system into the system prompt, it doesn't actually know or have context on what that user should be doing or should have access to. Whereas a Harness as a judge, because you can connect it to external systems, it can then go make a call to actually say, \"Hey, is this user allowed to do this? Does the trace reflect the access that they had?\" Um, and so"
  },
  {
    "startMs": 1765524,
    "text": "Harness as a judge is essentially moving from just a foundational model call that scores an input and then comes out with an output rail to a more agentic flow where you can actually call tools, um, and, and sort of do that unknown unknown catching as well."
  },
  {
    "startMs": 1787244,
    "text": "Cool. Um, so I think we, we kinda talked about, uh, Harness as a judge. Um, how that would've worked in this scenario is scoring the fix to fail and, and actually deciding whether to pass the example or not. So for example, pass if every return product's price is within the requested min price, max price range. Fail if any result exceeds the budget. Um, and it's actually able to go into the code and check that those filters are working correctly."
  },
  {
    "startMs": 1817104,
    "text": "Um, and this rubric now will catch this on every subsequent run and not just, uh, you know, an individual test case that you've coded for before. Um, so quickly checking in, we talked about the detect, investigate, and ship to fix. Um, shipping the fix part is kind of what I wanna talk about now with agent experiments. So maybe we've found an issue, we've grounded that in real trace data, we've investigated that, we know why it's"
  },
  {
    "startMs": 1846964,
    "text": "wrong, and we've decided that we have a fix worth shipping. Before you ship the fix, you probably wanna test this on a set of results. And I'm not sure how you guys are doing this today. Maybe you're deploying to a dev environment and then manually testing. Um, what Arize has come out with is agent experiments that allow you to test that in an automated way via CI as well. And so, uh, I don't think any of us are strangers to the concept of, you know, datasets of failure cases that we collect over time. Um, what you can"
  },
  {
    "startMs": 1876880,
    "text": "do with agent experiments is you can actually stand up that dev agent behind an endpoint and hit that with a dataset directly from Arize, and that dataset will be actual traces that your agent has failed on. So in the previous example, I kinda showed you, uh, the Wonder Toys, where maybe I have a few traces asking for, um, birthday gifts under thirty dollars that actually failed. Uh, what I can use Arize Skills to do is actually go create that dataset. So I'll, I'll have like,"
  },
  {
    "startMs": 1906780,
    "text": "call it twenty-five examples of budget constraint searches that failed, right? And then I ran the workflow with Claude Code, uh, I did some trace analysis, I identified the bug in my code, and I have a fix ready as a PR, or maybe Signal did that all for me in the background. How do I actually go hit my agent with that dataset to make sure that the proposed fix is actually validated? And that's sort of what agent experiments allow you to do. With agent experiments and the agent playground in the product, uh, you can"
  },
  {
    "startMs": 1936820,
    "text": "actually run against that fixed version. So you deploy to dev, it stands up behind an endpoint, uh, you stream sort of the, uh, dataset inputs into that agent, and the agent actually responds. And then you can score it with the same judge rubric that you have in production. Uh, so then you can compare kind of side by side what the agent in dev mode is doing with the fix versus what the agent in production did, and look at whether you're actually catching, uh, a- any of those edge cases or not."
  },
  {
    "startMs": 1966880,
    "text": "So similar to kind of like other dataset experimentation workflows, what you wanna do is you wanna look before the fix and after the fix, look at your judge, which is in this case the price correctness judge, um, look at your examples and queries, look at whether, you know, maybe latency is increasing, cost is increasing, so you have sort of a view of those operational metrics as well, um, and then quantify the results of your experiment. Um, and then, you know, maybe alluding a little bit back to this idea of the self-correcting"
  },
  {
    "startMs": 1996920,
    "text": "loop. A- as a full storyline, you now have an agent that's operating autonomously on your traces, looking to see if issues are arising. So, you know, I can see that the user asked for under thirty dollars. The response was clearly over thirty dollars. Investigating why that's happening with reference to a code base, putting up a fix in the form of a PR for wha- how it thinks it can improve that. In this case, it was a filtering error. And then because our experiments"
  },
  {
    "startMs": 2026900,
    "text": "are actually exposed via skills and API as well, the agent can actually redeploy itself on the new PR and verify itself against a dataset of actual failure cases before it even notifies you or decides that it's worth your human review. So, you know, this full loop happens completely autonomously. The agent will actually go collect the failures, create a dataset for itself, run it against the new version of itself, and prepare a response back to you that"
  },
  {
    "startMs": 2056880,
    "text": "says, \"Hey, I think I found this issue. I investigated it. I know why it might be happening. I pushed a PR. I then ran that PR in dev against the dataset of failures I found, and I saw, you know, um, in this case, a thirty-six percent increase in performance on this specific evaluator.\" And all that information to you-- is available to you in the PR itself for you to then just go read, validate the code, do some code review, and ship. Um, so I think this makes"
  },
  {
    "startMs": 2086860,
    "text": "it like, you know, kinda coming back to this idea of the loop. Um, I think it makes it really, really powerful to go, you know, full circle where you have the detect, investigate, hypothesize, and fix loop, and then you also have the validation loop, right? So how do I actually know that this fix is correct, and it's not just a, you know, an agent in a sandbox saying it's correct? How do I actually go test that on real failures and real, uh, edge cases from my working example? Um, and how do I"
  },
  {
    "startMs": 2116940,
    "text": "actually, you know, start to stand that up and auto-test that for me? Um, and so I think, you know, we'll, we'll come back. We'll, we'll have some time as well to kinda help you guys around, uh, in the rest of the workshop if the Wi-Fi is doing a little bit better. Uh, but I'll, I'll go back to the slide that was previous, um, so that you guys can kind of walk through this yourselves. One, getting the tracing started. If you're not collecting tracing, nothing else works. Um, takes sub-second-- sub-ten minutes on your, on your"
  },
  {
    "startMs": 2146840,
    "text": "own agent. We have instrumentation skills. We have support for all the big agent frameworks, all the foundational model providers. Um, enabling Signal and going deep, uh, or using Claude Code to actually use the Arize skills to do that investigation for you. Uh, verifying it with a harness as a judge, and then measuring that with agent experiments. So before we end, I will go back to this, and we'll, we'll all walk around the room and try to help you guys get this set up. Uh, if you're having trouble with the env files, um, if you just"
  },
  {
    "startMs": 2176640,
    "text": "search through the repo or ask a coding agent where the env file is, um, it will kind of help you do that. Uh, other than that, make sure you Git clone the repo, um, and you get your API keys from the Arize platform, uh, and then you can actually start to see these traces coming together. Um, in the spirit of AIE workshops, I think this really works better when you guys see it and touch it yourselves and actually try to do it. So hopefully the Wi-Fi works, and I'll, I'll come around and hop around. If you do have questions or you're blocked at any point, feel free"
  },
  {
    "startMs": 2206680,
    "text": "to ask me. Odds are someone else in this room is experiencing the same issue, uh, so I'm happy to kinda shout out some advice as we go. All righty. And if you're having trouble installing the skills as well, uh, I have it up on the slides here Uh, very simple, npx skills add Arize-ai/arize-skills. This will give you access to an interactive mode where you can choose what you wanna install, or you can just choose to install all of them as well. Uh, and this includes skills for trace analysis, dataset curation, as well as"
  },
  {
    "startMs": 2236660,
    "text": "evaluators."
  },
  {
    "startMs": 2240340,
    "text": "So as an example of, like, some of the skills you can run, uh, I can ask Claude Code, \"Hey, check my traces for any errors or anything I can fix, cross-reference with the code for the agent in this repo, and use the a- agent skills.\" And, uh, we will be sending out kind of a recording of this as well as all the resources you need to kinda get started with this. So apologies for the internet. If it doesn't work out today, you guys will be able to get up and running very quick as well. All righty, guys. We gotta close up, uh, our workshop for now. Thank you once"
  },
  {
    "startMs": 2269880,
    "text": "again. I just wanna leave you guys with sort of this detect, investigate, fix, and verify slide, uh, which kinda covers the through line of how, uh, you can get started with Arize and how to create your self-improving agents. And then once again, uh, feel free to connect with me on Twitter or LinkedIn. Uh, and if you want a free year of Arize Pro as well, uh, just use the code on the screen. Uh, we have a free tier that's always free, free to use. For this conference only, we're also giving out Arize Pro for free, which gives you a bit more of the usage"
  },
  {
    "startMs": 2299640,
    "text": "limits, uh, if you guys are running agents with, you know, thousands and thousands of traces. So thank you guys so much. We're running another workshop at 2:00 PM, uh, led by Lori, that'll go into a few more code examples. Hopefully, the Wi-Fi is also a little bit better then. And yeah, we'll get going. Thank you, guys. Appreciate you."
  }
]
