Latest / Agentic Conversations (formally mlops.community) / Software Engineering in the Age of Coding Agents: Testing, Evals, and Shipping Safely at Scale
Transcript
- 0:00The language itself is very sensitive and you need to be
- 0:02able to to test different versions very quickly and see if
- 0:07a change of one phrase trickles downwards into a different
- 0:11conclusion at the end of the investigation.
- 0:12And you need to show where, where, where you started
- 0:17thinking in a certain way. It's quite complex.
- 0:26I was recently talking to a friend and he mentioned to me
- 0:31never have I paid so much for a tool and he was referencing
- 0:36Claude code. Never have I paid so much for a
- 0:40tool and felt like I'm still the one that is coming out on top.
- 0:45Like I'm getting more value than I'm actually paying for.
- 0:49She was like, I, you know, every time the Spotify bill comes
- 0:53through and it's 10 bucks a month, I sit there and I debate,
- 0:56should I cancel it? I don't know if it's actually
- 0:58worth it. I'm paying hundred 200 bucks for
- 1:01Claude code and I'm like I would probably pay five times that
- 1:05because I'm getting so much value from it.
- 1:08I think that's that's what we all have, it's been experiencing
- 1:11right now. I think it's not only cloud
- 1:13code. We have like, you know, little
- 1:15setup of cloud code. And then we have, you know,
- 1:18people have been trying anti gravity, people have been
- 1:20trying, you know, obviously cursor has been around before
- 1:23that we were VS code copilot shop.
- 1:25So I think we're, it's very, we're switching between them,
- 1:29but it's definitely the velocity impact is huge and it's still
- 1:33funny to see sometimes cloud code would give you like an
- 1:38estimate of work and says, oh, this is going to be 3 weeks of
- 1:40work and say just do it. Trust me, it's not going to be 3
- 1:43weeks. We can.
- 1:45It's. Like, should I start with the
- 1:46first step and then you're like, go for it and you know, an hour
- 1:49later it's all done? Yeah, that's amazing.
- 1:53It is crazy. Now the context here is that
- 1:57you're doing agentic work at a security startup.
- 2:02And I wanted to talk to you just because we've both been seeing
- 2:08that software engineering in a way is changing.
- 2:13But you're coming at it from the traditional machine learning
- 2:16engineering space and your understanding what we used to
- 2:21call, you know, ML, we now call AI, and now we're leveraging AI
- 2:26in just about every workflow possible.
- 2:28So break down your journey a little bit.
- 2:33Yeah. So I think I don't have a
- 2:35traditional data science background in the sense that I
- 2:39joined the data science industry when it was peak hype, maybe
- 2:432012. I got hooked on this being the
- 2:46next, you know, the best career and I kind of self-taught and
- 2:50got like online courses to, to go into this industry.
- 2:55And at the time it was very much around like predictive analytics
- 2:58and, and statistics and machine learning.
- 3:02Some of the algorithms we were kind of being taught were from
- 3:04the 80s or even from the 60s, right?
- 3:06Like, but they were very useful at solving business problems
- 3:11when big data was the biggest, you know, high.
- 3:15The. Hadoop was one of the things
- 3:17that I started with, right? And I think at the time there
- 3:22was a kind of a change in, in software development methodology
- 3:25because if you were doing traditional software, like
- 3:28someone would write requirements spec and you'd, you'd just build
- 3:31it and hopefully the customers would love it.
- 3:32And people try to do more agile as they were saying, we don't
- 3:36know exactly what customers want.
- 3:38And on the data science side, you had these teams that would
- 3:41hire data scientists and say, OK, sprinkle some data science
- 3:44on onto this project and they would say, oh, but we don't have
- 3:47data. So we don't have, we can't
- 3:48really do anything. So our so a lot of teams were
- 3:52kind of struggling and data sciences that data scientists
- 3:55that were successful were those who were able to like hold on to
- 4:00data or find data to solve their problem, right.
- 4:02So if you were good like getting data sets from other teams in
- 4:05organization, you were you're, you know, successful and you
- 4:09had. To go with barter at lunchtime.
- 4:11You had to you had to have to make friends to to get the job
- 4:15done. And a data sign dentist without
- 4:19data is is really you could go to you could be the best, you
- 4:22know, in Cagle competitions, but it's not going to be like you
- 4:26productive at the work if you don't have a data that you can
- 4:30use for, you know, to turn your kind of idea into a business
- 4:33problem that can be solved through data.
- 4:35And I think part is it because they're the scientists or at
- 4:38least in predictive analytics, you have to use some sort of
- 4:41proof that to show that your thing works.
- 4:43And that proof comes from having a data and having some of these
- 4:47methodologies of in a validation that are kind of core to this
- 4:52industry. If you train the model and you
- 4:54didn't have it a graph to show it's working, how do you know
- 4:59it's working? I think that part was never part
- 5:01of software engineering stack. People build software and just
- 5:05read the source code that said it'll work and flew to the moon.
- 5:08So yes, obviously they tested it, but it but it was not as
- 5:12methodological sound as what we would see with the data science.
- 5:18And I think now we're kind of experiencing another shift in
- 5:21the sense that when we approach a genetic system, it's a hybrid
- 5:26of both data science and traditional software engineering
- 5:30practices in the sense that a genetic system are just
- 5:34software. In the end.
- 5:35It's it's, but you use prompts to program something and the
- 5:40prompts, prompts are like predictive models.
- 5:43They're not deterministic in any way.
- 5:45And even within one vendor, one LLM provider, if you're using
- 5:49off the shelf commercial LLMS, you don't get this stability
- 5:54that you would get with software.
- 5:55It's software crashes in, in predictable, mostly predictable
- 5:59race. But with LLM prompts you might
- 6:01have, you know, latency deviation, but also behavioural
- 6:06deviations. So I think that that forces you
- 6:08to kind of think differently than a traditional software
- 6:12engineering. And that's part of what we're
- 6:14experiencing both the software as people that practice software
- 6:17engineering is then people that build agentic system that have
- 6:19to deliver something. Let me see if I can play that
- 6:23back for you because I there's a point you hit on that I'm not
- 6:27quite sure you were trying to make.
- 6:29But it instantly made me think about how since you're
- 6:34outsourcing the brain of the LLM to an API, usually to one of
- 6:39these big research labs, and they can be a little bit
- 6:44unstable. We all know folks who used
- 6:49Anthropic over the fall of 2025 probably recognized how it's
- 6:57like, Is it my thing that's not working?
- 7:00Is it cause Anthropic's not working?
- 7:02You got to go dig through the logs and recognize, oh wow.
- 7:05All right, So what do I got to do to make sure that the uptime
- 7:09on my API calls is higher? And they, I don't think could
- 7:16have done any more. They were just getting inundated
- 7:19because of the demand being so high.
- 7:21So there's that inherently that is unreliable.
- 7:25But then you're saying there's also the two sides of the coin
- 7:28where you're writing the prompts and you're doing more data
- 7:32sciency work, which is not like, does it compile?
- 7:38But you also have to create the software because you're creating
- 7:42the agent and that is very software engineering work.
- 7:46So you've got like these three pieces, the reliability side,
- 7:49you've got the data science side or the stochastic side, and then
- 7:54you've got this very deterministic side.
- 7:58I think what is part of what people forget and then they kind
- 8:04of realize is that the creativity of the LLM is the the
- 8:07stochastic side is it? Is it in order to have a
- 8:10creative LLM, it has to have this, this random effect of
- 8:14variation in the output. And that is beautiful when
- 8:18you're trying to generate poetry.
- 8:21It, it fails miserably when you or, you know, write jokes, but
- 8:25it's, it's very miserable when you're trying to have to gain
- 8:29someone's trust in, in about a piece of software behaving in a
- 8:34particular way. I think in the end when we write
- 8:37software, software is, you know, especially high level software
- 8:41that we write, we don't write in assembly.
- 8:42We write in very high level languages and and writing prompt
- 8:46is the highest of them. Right now we're trying to tell
- 8:49the computer to do certain things and in the end it needs
- 8:53to do what we want in a deterministic, predictable way
- 8:57most of the time. And if it doesn't do it, we have
- 9:00a problem. So we have to kind of build
- 9:02systems around this variation. So the creative side of
- 9:05relevance, which sometimes is very entertaining, is a
- 9:09challenge in writing a genetic systems that kind of follow
- 9:13orders. So how do you harness that?
- 9:17You can, you can basically, you know, build guard rails into
- 9:20your system and and test it. But you also have to test not
- 9:25only during the authoring time, which which which was the normal
- 9:29way of writing software, you just write it tested.
- 9:32And then you had you could, you know, the same in the same sense
- 9:36that the people did whiteboard interviews.
- 9:38You could write an algorithm on the white on a whiteboard and
- 9:41people had an understanding that this is a shared language,
- 9:45programming language high level 1.
- 9:47And you could you know any advanced user of that language
- 9:50beloved to read it and know how it will be compiled and run with
- 9:53prompts. I could write a prompt on the
- 9:55wall, but you can't guarantee no one can guarantee how it will be
- 9:59interpreted by any LLM. Even the authors of the LLM say,
- 10:02well, that's a good prompt, but no one knows, right?
- 10:05So that thing is challenging for everyone.
- 10:09Doesn't matter how you know advanced you are.
- 10:11If you didn't work in the best, you know, research groups, you
- 10:14don't know how you know how to run.
- 10:18So that's the part of software where you have to basically
- 10:21really build a garden. Around it, yeah.
- 10:25Or pray to the software gods and hope that they hear you or the
- 10:29LLM gods, right. It's just like, I'm going to
- 10:31throw this up. It is an absolute crapshoot
- 10:35what's going to come back. But you can't build a business,
- 10:39a stable business off of that type of thinking.
- 10:42No, but. But I think it's the same when
- 10:46you want predictable systems, you, you, you can really kind of
- 10:50narrow down your problems into small building blocks.
- 10:54A lot of a lot of the the challenge here in identic system
- 10:59is deciding how much responsibility to give to each
- 11:03agent. Like you can like with the
- 11:05experience we have as as users with cloud code, you can give it
- 11:08the very freestyle task like one sentence and say refactor this
- 11:12thing, add a feature and you might have mixed results
- 11:16depending on you know, your luck.
- 11:19Like sometimes it will just find the right file in your
- 11:21repository and and understand what it needs to do.
- 11:24But sometimes it goes array and you have to start over and say,
- 11:28no, listen, here's the file. This is how we do things around
- 11:31here. And after you do that for a
- 11:33while, you might start putting that, you know, into the
- 11:36context. And then you context because
- 11:38there's a set of insertions that never do this.
- 11:40Never, you know, change framework mid flight when you're
- 11:43implementing a front end feature, but you don't want to
- 11:47put everything in the context all the time.
- 11:49And I think that's, that's the challenge of of, you know, being
- 11:54both the software engineering and like in the genetic engineer
- 11:57is that you have to, you can't, you're not allowed to put all
- 12:01the instructions that you want to be enforced all the time.
- 12:04You have to kind of use them sparingly and in the right
- 12:08context to get the results you want.
- 12:10But you can't simply just say, here's everything that needs to
- 12:14be followed. You know, I hope, I wish it
- 12:18would be possible, but we know from like studies on context
- 12:22window limitations, even if the context window is 200,000
- 12:27tokens, you you can't really use them.
- 12:29You probably shouldn't be using more than 3040% to get anything
- 12:34decent out of it, which means you're, you're always, you're
- 12:38paying for capacity for, you know, for skill, but you're not.
- 12:42You can't really use all the MCPS that are out there or all
- 12:46the instructions are that he can write down.
- 12:50Yeah, there was that blog post by Manus that talked about this
- 12:55and how they got around it, right.
- 12:57I can't remember the term that they came up with.
- 12:59It was something like progressive disclosure or
- 13:02something like that. And so I also have heard from a
- 13:09friend of the pod, Brooke, who runs Koval, and she does a lot
- 13:12of things with voice agents, how a lot of times since voice
- 13:18agents are these multi turn conversations and they're very
- 13:21high stakes and you want to be low, as low latency as possible,
- 13:25You just can't have these gigantic prompts continuously
- 13:30being there for every turn. And what they'll do is they'll
- 13:34build graphs and then dynamically inject different
- 13:38pieces of the prompt in at different points because more or
- 13:44less they have ideas of how the conversation should flow.
- 13:48If somebody's calling up a customer support agent, you kind
- 13:53of know what they're calling about.
- 13:56And so you can, in different points of that conversation,
- 14:00inject different prompts in there.
- 14:02And it reminds me of that menace progressive disclosure idea too.
- 14:09Yeah, I think, I think many people are trying to find the
- 14:12right way to do this because we we couldn't obviously compact
- 14:15the the context window and and compress it using very
- 14:18summarization techniques. But it's, it's not
- 14:23deterministic. So we don't know what exactly
- 14:28will be lost if we compress too harshly.
- 14:30And I think the tricky part here is that every conversation is
- 14:34different. But I think if you understand
- 14:38your domain, it comes back to, you know, data scientists.
- 14:41I worked with a lot of smart people in the past that were
- 14:44kind of converts. People had PhDs in neuroscience
- 14:48or biology, and they came in to do data science and software,
- 14:51right? And like some people have this
- 14:54allergy to kind of study the domain because they want to stay
- 14:56on the algorithmic side. They want to be, you know, a
- 14:59different type of person. But if you understand your the
- 15:02domain and your users, then you can have a more opinionated view
- 15:06in these questions what is relevant.
- 15:08So in the question of of customer and a support you would
- 15:11know, you know there's some scenarios that are not
- 15:15reasonable. If someone asks for a chat bot
- 15:18to start coding in Python, it's OK to say no, this is not what
- 15:22I've been trained to do. And you don't have to use like
- 15:26one LLM with all the prompts. Like you can have one LM do the
- 15:30guardrails and then another LLM only do the business logic with
- 15:34the limited set of functionalities, and if it can't
- 15:37solve the problem, it cannot solve the problem.
- 15:39Having like less advanced LLM with limited skills is actually
- 15:48preferable in most of these connexes, both in terms of
- 15:52velocity and cost. And we can even see it like with
- 15:57cloud code, like it doesn't tell us exactly when is it switching
- 16:00to Haiku and when is it switching to like Sonnet or
- 16:04Opus. But you can tell that some tasks
- 16:06are better with cheap fast model.
- 16:10Like let's say we're searching for a source code and the task
- 16:13is to find which file we're going to modify.
- 16:16You don't need the most expensive model to run some web
- 16:20commands or RIP grab if you're if you have that installed
- 16:23right. And for those tasks, it's nice
- 16:26to have different sub agents that can do, you know, they
- 16:32don't need the entire context to operate successfully.
- 16:34They feedback to kind of a more orchestrator pattern.
- 16:38Yeah, the basically the constellation of models is
- 16:43becoming a very common pattern that I'm seeing.
- 16:45And I was literally editing a podcast just before we hopped on
- 16:49to talk about this with my friend Paulo.
- 16:52And he said we tried so hard to replace all of our traditional
- 16:58machine learning models with new LLMS. But there's a few psychic
- 17:04learn models in our workflow that they do much better pound
- 17:11for pound against any LLM that you give it, just because of the
- 17:15nature of the beast of what you're trying to accomplish.
- 17:17And so in their workflows, they'll have that psychic learn
- 17:21model there and they, it comes with a bunch of inherent
- 17:26benefits 2 because you're not, you don't have this gigantic
- 17:30model that you're trying to now serve and the infrastructure
- 17:33around that, you've got something that is a lot more
- 17:36common and people have been dealing with it for a lot longer
- 17:40time. I mean, now that you you
- 17:43mentioned like that, I've been thinking about.
- 17:47So in my previous work, I, we did work on, you know, many
- 17:50years ago on, on fraud detection, right?
- 17:52And I can't imagine someone replacing a fraud detection
- 17:56model with an LM. You know, if you can say a
- 17:59transaction is for LM because someone has a new laptop and
- 18:03they're buying a Rolex watch on a shop where they just signed up
- 18:06for with a new e-mail address, that type of information, you
- 18:11could obviously have an LM, you know, analyse that transcript
- 18:15of, of information and, and make a prediction.
- 18:17But in terms of like velocity and cost, we had to kind of get
- 18:21the response in like, you know, less than 50 milliseconds and,
- 18:24and we had to be correct, you know, all the time, practically,
- 18:27right. And, and, and you can't have
- 18:30that with an LM. You can have an LM to explain
- 18:32what the, what the system did, which is probably where I would,
- 18:34you know, use it today. And I think people are a bit
- 18:38hesitant to kind of say that because it's it's trendy to use
- 18:41our lives for everything. But you can definitely, you
- 18:44know, built use graph methods, user still recommender,
- 18:47recommender system methods, and when in a hybrid approach with
- 18:50your LLM. And I think that if you have the
- 18:54know how of how to turn some section of your problem into a
- 18:59kind of predictive problem, you'll get a better results.
- 19:02And even with your context management, you have these
- 19:05opportunities like if you have a kind of knowledge base of
- 19:11context that you may need to include, like the retrieval of
- 19:16that particular piece of context is a small machine learning
- 19:19problem, how to do efficient information retrieval in and
- 19:24measuring that the information that you retrieve is relevant.
- 19:28But obviously you can retrieve information, but who says it's
- 19:30relevant? Like that test of relevancy is a
- 19:33small data science problem that you can pick out if you have,
- 19:37you know, the appetite and and the the domain knowledge to say
- 19:41I can, I can say what's relevant.
- 19:44Yeah, it it's funny that you mentioned this hybrid approach,
- 19:47especially for fraud, because I was literally just reading an
- 19:51article and I think it was Pinterest that took a hybrid
- 19:56approach on their fraud. They're like trying to figure
- 20:00out ways to bring LLMS into their workflow and specifically
- 20:07around the fraud use case. I I want to say was that, but
- 20:10I'll bring up the article and try and.
- 20:13Figure it out a little bit better so that I don't misquote
- 20:17anything. But that is I I like
- 20:21wholeheartedly agree with you. If it ain't broke, don't fix.
- 20:24Or you know, like that old saying, it still rings true.
- 20:30If it ain't broke, don't fix it. And the other thing that I was
- 20:34thinking about as you're saying that is how different it is when
- 20:39you are just working for yourself and trying to boost
- 20:44your own productivity or playing around with your own context
- 20:49versus you're trying to make a product that can then be used by
- 20:53many people and like mass production, we could call it,
- 20:59right? Because if I'm just doing it for
- 21:00myself, I think about how, oh, there's these tricks that I know
- 21:05when I'm looking at the code base and there's an error that's
- 21:08happening. And I'll say to Claude code, OK,
- 21:11explain this whole file, explain it to me in as much detail as
- 21:20possible, and it will explain exactly what's going on.
- 21:23And then I use that as the context with either Claude code
- 21:26or I'll throw it in another model and say, now find the bug,
- 21:29here's what's happening, here's the flow, here's the
- 21:32documentation. That is how it should be
- 21:34happening. Where's the difference?
- 21:36And that's a great trick for me as an individual.
- 21:40But how do you make that so that now when you have this AI
- 21:46product that's out there, it is operationalized?
- 21:51So I think the tricky part is that there's more than one
- 21:54other. Like if you look at our
- 21:56traditional kind of organization and software engineering
- 21:59companies, you might have, you know, a kind of a, a business
- 22:03and go to market side and then you have software engineering.
- 22:05And then you'd have this kind of specialties within it.
- 22:07And one of the specialties would be ML engineering or ML OPS or,
- 22:10or data science or software engineering or, you know, DevOps
- 22:13people, right? Because we have this kind of
- 22:15skill set and obviously security practitioners are kind of
- 22:19carrying security is like a meta domain because security is like
- 22:23a mindset. So you need to understand IT and
- 22:25software and, and, but it's been also think like an adversary.
- 22:28So we have a lot of people that have like the security expertise
- 22:32is not, is is that they understand how attackers work
- 22:35and think, but they also understand how operating systems
- 22:37and work networks work. And they have very deep intimate
- 22:40knowledge about, you know, how to spot the behaviour of of
- 22:44those, you know, malicious actors as it's witnessed
- 22:48through, you know, telemetry that we have in the security
- 22:51industry. We have EDR and we have network
- 22:54monitoring telemetry. So you have these people that
- 22:57are experts and you they can't tell like write the same
- 23:04software. So I think at least for when we
- 23:06build the genetic systems, we kind of tried to say which part
- 23:10is a genetic business logic, which part is kind of
- 23:14instructions that relate to the security domain.
- 23:16Like how do we investigate a security incident?
- 23:20How do we know to, to demonstrate to a human that we
- 23:24did, you know, everything that the human would do in the same
- 23:28manner that they would do it. And then how do we take input
- 23:31from users who say you didn't do what I want, you should have
- 23:34done this extra step or in our organization this is OK,
- 23:39somewhere else it's not OK, but we allow it.
- 23:41So those type of contributions are all like separate.
- 23:45We kind of build 3 different parts of our system to allow
- 23:50these interactions, but they all in the end, they all like run in
- 23:53one runtime. But do we have three people
- 23:56contributing code and, and prompt to the same kind of
- 24:00investigation in, in the, in the context of our agents?
- 24:03And the tricky part is that they all need to be, to have like a
- 24:06feedback loop, right? So you need.
- 24:08So for a software engineer building an investigation, it's
- 24:12very difficult to run an investigation without actual
- 24:16data. Like the first thing we did when
- 24:18we started the company, you know, I joined this, you know,
- 24:20one of the early engineers, we created the lab just so we can
- 24:26have like a real investigations before we had any customers.
- 24:30We we set up, you know, some, some machines running malware in
- 24:33the cloud provider. And then we would see the
- 24:35telemetry from some of the security vendors And through the
- 24:39telemetry we could tell the agent, you know, what would you
- 24:43do and see how it would investigate and through that
- 24:46build the process without actual data, it wouldn't have been
- 24:51possible. And we, we see that, you know,
- 24:54obviously customers want to contribute and, and part of it
- 24:56is, is very much a product question.
- 24:57How do let people contribute without letting them kind of
- 25:02ruin the product in the sense that like, if they could make a
- 25:05mistake and like, you know, write something bad in the
- 25:08product wouldn't work. And then who's to blame, right?
- 25:11So we have to put some guardrails in what contributions
- 25:14each user can do. So the system still works and
- 25:18give them a feedback on what they on the actions, right?
- 25:21It's the most critical part is as a user, when you have written
- 25:25a piece of code in in a high level programming language, you
- 25:28can compile it, you can run it, you can run tests on it.
- 25:32That's your confidence. You know what you know through
- 25:35that. With LLM based investigations in
- 25:39in or an agent, how do you know that it's going to work?
- 25:44Sadly, you mostly have to try it.
- 25:46I think that's like the that you can obviously test incrementally
- 25:51different parts of the system, but end to end is the most
- 25:54powerful proof point that we have.
- 25:58Yeah, and and speaking about building 4 separate users, it
- 26:03then becomes much harder too when you are debugging if the
- 26:08user is in some way shape or form not testing it or not
- 26:15looking at the logs as to why things are going wrong, there's
- 26:19not a clear feedback. It's not like the agent says, Oh
- 26:23yeah, like I did all of this. I just got stuck in the last
- 26:28step. It's more like, huh, I wonder if
- 26:31it's not working because this problem is too hard or if and
- 26:37it's not capable or it just like got stuck on one of the loops
- 26:42and it wasn't able to complete it.
- 26:44So I think there's a lot of that investigation work too that
- 26:48becomes a little bit of a nuance and and a headache.
- 26:50Yeah, it's it's certainly if you if you're using one of the
- 26:54popular frameworks like LAN chain, you have limited
- 27:00visibility into what's happening unless you start instrumenting
- 27:05kind of the the state of of your agent.
- 27:08So in in Lang shape, they they support these built Lang Lang
- 27:12graph is the framework where you're allowing to create these
- 27:14graphs, but the graphs mutate after each tool call.
- 27:18They can accumulate state and accumulate information.
- 27:21You need to build tooling to kind of see it.
- 27:25Obviously you can, you can get a kind of a commercial
- 27:30observability framework in place and you could have a page, but
- 27:34sometimes your agents will have hundreds of actions.
- 27:37So scrolling through a thread of hundreds of actions is quite
- 27:40limiting even for very technical users.
- 27:43So I think breaking the your questions into what am I trying
- 27:47to look at is, is important. And we see it also in the
- 27:51product itself. Like when we show the agents
- 27:53output, people really want to know what did it do.
- 27:56So even if everything went well, we need to have like a very nice
- 28:01audit trail of actions. We don't have to show every
- 28:04thought the agent had, but we need to know we need to show to
- 28:10the users what what was the reasoning behind taking every
- 28:14action. And it needs to mapping what
- 28:16what a normal human would do. So that part is really a kind of
- 28:21UX question. How do you show enough and in
- 28:24the hide the information when it's too much.
- 28:26And we also have sometimes investigations, at least when we
- 28:31develop new content and new kind of prompt, we need to show how
- 28:36things are different. So having a view that shows you
- 28:38this is my version A, this is my version B.
- 28:40And showing you the difference in rerun of the same
- 28:45investigation is very powerful idea.
- 28:47Just just being able to see the difference between them because
- 28:50the difference might be hidden if you have a thread of of
- 28:53hundreds of of, of actions, right?
- 28:56So highlighting what is different could be quite useful
- 29:00for the users that are trying to to understand their own changes.
- 29:05Isn't that fascinating? How the UX design patterns are
- 29:10really the most crucial part in building the trust in my ability
- 29:17to know that this agent did the things that I wanted it to do or
- 29:21that I would have done. Yeah, I think a lot of the nice
- 29:26part of it is that it's all human language, like in the end,
- 29:29like it's not it's so I think in the in the most in other
- 29:34domains, like in video art or in image generation, if you're
- 29:37trying to understand why did the image get, you know,
- 29:40misclassified, there's a lot of then trying to say, oh, this
- 29:43pixel here is red and that's why it wasn't it was a cat and not,
- 29:47you know, a car. But it's, it's, there's some,
- 29:50some noise in those algorithms that people are trying to
- 29:54understand. But in, in the domain of LLMS,
- 29:57at least you can really see how one word could throw their,
- 30:00their LM off if you use the word suspicious, right?
- 30:05We have a in human languages, we use these words kind of freely.
- 30:09But then LLMS, as soon as you tell us something is suspicious,
- 30:12it's going to start thinking in those terms.
- 30:15So at least in the in the security space, you cannot say
- 30:19this mount this file is suspicious on on what grounds?
- 30:23Why is it suspicious? Under what context or scenario
- 30:26is it suspicious? Because malware, at least modern
- 30:29day malware has been so advanced that they, they use what we call
- 30:34a living of the land binaries. So instead of writing a file
- 30:37and, you know, compiling your malware into one file, they
- 30:40break the functionality of their malware into, you know, files
- 30:44that already exist on your operating system.
- 30:46So now you have, you're running Windows and you have a
- 30:48PowerShell command and PowerShell could be used by
- 30:51legitimate administrators to, you know, to do administrative
- 30:54work, install and remove software, but also used by
- 30:57malware authors to kind of, you know, gain persistence or or do
- 31:01anything. So you have this duality.
- 31:03And if you use language like the word suspicious in one of your
- 31:06prompts, or if even if the vendor said this file is
- 31:10suspicious, now the LM is already triggered to think that
- 31:15this is suspicious. And we needed to think like a
- 31:18scientific explorer and say, why would this be suspicious and
- 31:22what context it is. And so the language itself is
- 31:25very sensitive and you need to be able to to test different
- 31:28versions very quickly and see if a change of one phrase trickles
- 31:34downwards into a different conclusion at the end of the
- 31:36investigation. And you need to show where,
- 31:39where, where you started thinking in a certain way.
- 31:44It's quite complex and. And this suspicious piece is
- 31:48because it is basically just leading the LLM into saying
- 31:53like, Oh yeah, it is suspicious. Yeah.
- 31:55So what are the features that you know, my wife, we're also
- 31:59works in this domain of of of AI these days.
- 32:02And she tells me you have to give prompt that the AI is going
- 32:07to have this notion of agreeableness.
- 32:09It's going to try to agree with you.
- 32:11So, so because it's been trained to agree with you, you have to
- 32:16kind of tell it don't agree with me.
- 32:18And and and I think this is again, a counter intuitive thing
- 32:22because we think it's an intelligent piece, but it's not
- 32:25it's a very nice parent. So if you, if you tell it, if
- 32:30you give it these words that are starting to, if you, if you, if
- 32:36you give it words that are triggering a particular line of
- 32:38thinking, you will see that it will try to agree with you.
- 32:42And we want it to be a scientific explorer and, and,
- 32:46and really answer questions in almost like a scientific way.
- 32:51So we so we can create proof points that are resonate with
- 32:54humans. So if something is suspicious
- 32:56and it starts with vendor, a security vendor says you have a
- 33:00suspicious filing on computer, we need to corroborate that with
- 33:05additional external information. We can't use the vendors word of
- 33:09suspicious to say it's suspicious because if we trusted
- 33:13the vendors you would have a million alerts per day like our.
- 33:17Our problem in the security space is that vendors have been
- 33:20optimizing for never getting it wrong and, and the alert on
- 33:25everything that could be potentially malicious as
- 33:28suspicious. And we have a kind of alert
- 33:30fatigue and and volume problem in the security space.
- 33:33So we can't blindly trust the vendors.
- 33:38We always need the secondary evidence.
- 33:39And that's the part of the the fun part here is like trying to
- 33:43build a system that collects secondary information to
- 33:46corroborate what you know 1 system says.
- 33:52Tangentially related to what you're talking about, back in
- 33:582023 when LLMS first came out, we had the creator of Airflow on
- 34:06here, Maxime, and he said that he also created Apache Superset.
- 34:16And at that time he was on a trip about how we need to treat
- 34:23prompts like code and less like something that we do and just
- 34:29kind of like throw at the wall. We need to really have the
- 34:32abilities to version our prompts and to understand them and then
- 34:37also run unit tests against them.
- 34:39And all these things that you're talking about, like the champion
- 34:42challenger of the Proms that we want to go out, and then to be
- 34:46able to visualize how they are affecting the output in
- 34:52different ways. And at that moment in time for
- 34:58what we were, the maturity that we were at at that moment in
- 35:02time was so far behind this idea.
- 35:08But it's still is like so true today when you really want to
- 35:15make sure that you're doing everything you can so that your
- 35:19AI product is reliable and it is useful to that user.
- 35:26Well, what do you know? Like it would be great if all of
- 35:30our prompts were versioned and we could figure out the lineage
- 35:34and we can figure out how introducing a new prompt or a
- 35:37new word into a prompt effects that final product.
- 35:41I think that's very it's, it's, it's funny that it came from,
- 35:46from a scene, you know, I think it worked on superset because I
- 35:48think it's, it's not a dissimilar from what you'd see
- 35:51in the kind of data analytic space.
- 35:53So if you look at the products that that allow people to write,
- 35:57write sequel, they all start with you having a kind of UI
- 36:01where you can post paste your sequel and hit, you know, run
- 36:05and you get some a table of results.
- 36:07One of these products become analytics dashboards and maybe
- 36:10they support notebooks, maybe they support dashboarding.
- 36:14But then there's a question of why do you store the sequel?
- 36:17And some of them end up with different methods of persisting
- 36:21the queries and eventually someone says, can you put it in
- 36:24source control? So at least the mature BI and
- 36:28analytics platforms will allow you to have some sort of
- 36:31revision or source control functionality because you build
- 36:34on top of data sets and you share dashboards and you can you
- 36:38need to have some sort of source control.
- 36:41And that pattern, I think is the same with prompt management list
- 36:46with us, we have been storing them in, you know, source
- 36:49control from day one, but we've built even kind of better
- 36:53separation between source and prompts, you know, treating them
- 36:56as content, putting them in separate directory and having
- 37:00multiple layer layers of validation against your prompts
- 37:04is very useful. And again, those the, the
- 37:07separation is not only for, you know, having, you know, clean
- 37:11source control trees, but also because you have different
- 37:14personas writing those prompts. If you're a security engineer
- 37:17and you're touching a prompt, it's probably nicer that it's
- 37:20not embedded into a Python very long variable, right?
- 37:25It's very, it's nice if their files are in YAML, right?
- 37:28Having having your prompts in a separate place and having the
- 37:31tools to test the prompts before you could have commit them is,
- 37:36is a nice kind of dev X experience.
- 37:37I think Dev X is, is not, you know, it's, it's the, it's what
- 37:43gives us velocity. If you look at, I think there
- 37:46was a kind of Twitter thread the other day about, you know, cloud
- 37:51code productivity and you know, there is someone from a Tropic
- 37:53say they do 5 releases per developer per day.
- 37:58So if you, if you think, if that's real, how do you, how do
- 38:03you, whatever definition of releases, how do you know that
- 38:07the releases are not breaking anything?
- 38:09You need to have a very solid process for testing those small
- 38:14prompt changes. So I think that's the key part
- 38:17is saying, OK, anyone can commit to source control and make a
- 38:22prompt change, but we need to have a couple of guardrails. 1
- 38:25is like, you know, have a suite of unit test and integration
- 38:28test, then have kind of a staging environment where you
- 38:31can see the prompts in action, you know, running and, and
- 38:35working against real life data. And once you have that, you can
- 38:39deploy it and give it to customers, but you have to
- 38:41monitor that it's still doing what you expect to do in the
- 38:44distribution of outcomes are what you expect them to be.
- 38:49And that that's like that's traditional observability in
- 38:51that sense. Like you have, we have, we have
- 38:53the observability stack that kind of has been around open
- 38:57source observability tools are very popular.
- 38:59You can build, you know, tooling to kind of look for outcomes
- 39:05with, with the same observability tools you would
- 39:08use for tracking your web service availability, right.
- 39:13But you need to have the business, the domain knowledge
- 39:17and the business interest to say, I care that this problem
- 39:21change doesn't break this outcome for this customer.
- 39:26So part of it is not because it's it's it's if you're a
- 39:30security engineer, you might not be, you know, expert in DevOps.
- 39:33Having the skill set of of combining someone with the
- 39:37DevOps skill set with Prompt Engineering, AI engineer and
- 39:40Security Engineer works together on a feature then allows them to
- 39:44be more independent long term. Where are you having the evals
- 39:49fit into all of this in this pipeline that you're talking
- 39:53about? So you have evals in 2 levels,
- 39:561, you can eval on the unit test.
- 40:00So we can basically have unit test, they're more like
- 40:03integration test and they actually make LLM calls.
- 40:06And then we have evals on a kind of a staging environment.
- 40:12Where we can see things run against customer data.
- 40:18And then thirdly, we have these LLM as a judge.
- 40:23So LLM is a very nice feature, but we don't believe that it
- 40:29could run in, in in line with traffic.
- 40:34I think my, my observation is that like the business needs, at
- 40:37least in our domain is that we have very strict SLA.
- 40:41Listen to security space. People expect you to have an
- 40:43investigation and then minutes later you may need to know the
- 40:46answer because if it's real, it has a real impact on the
- 40:49business. And, you know, we're competing
- 40:51with humans. If humans take, you know, 10 to,
- 40:54you know, 10 minutes to an hour to look at the instant we have
- 40:58to be faster. So our, our evals often run
- 41:02asynchronously as kind of a scheduled task and they, they
- 41:05pick items from same queue and they kind of revisit them and
- 41:09say, are we happy with this conclusion?
- 41:12Are we happy with their set of tools that we use?
- 41:14Are we happy with the, you know, the hallucination level that we
- 41:18see here? Obviously we don't see want to
- 41:19see any, but we, we, we're, we, we can run more deeper evals out
- 41:25of the cycle and, and we can run, you know, shorter evals
- 41:30before you release the software or before you give it to the
- 41:33customers. Does it make sense to have these
- 41:36three gates? I think it's, it's, it also
- 41:38there's a cost element to it. Like in the ideal sense, we, we
- 41:43would run more, but we have a limitation of bus in a
- 41:46performance in cost. Like we can't have unlimited
- 41:49gating to get confidence. And we, there's a cost element
- 41:55to, to, to, to having full reruns of of something like our,
- 41:59you know, we are limited by LLM cost because we want to use the
- 42:02same LLM, We can't use a cheaper LLM to do the eval
- 42:05investigations, right. Yeah.
- 42:08And are you having security engineers go through and craft
- 42:12some type of golden data set just to have as something that
- 42:18the LLM as a judge can reference or is it full on just give it to
- 42:21the LLM and? So, so it's not a golden data
- 42:25set because we don't have, we cannot use historical
- 42:29investigations because some of it will age out.
- 42:34For example, if you're working on a security incident and you
- 42:37have data that is aged out, you can obviously store a anonymized
- 42:41version and and kind of and keep it as an integration unit test.
- 42:47But anything that requires kind of dynamic nature will require
- 42:51live and fresh data because there's a timeline element to do
- 42:55all these investigations. If you have malware today, I
- 42:57can't go back and and run it on data from six months ago.
- 43:01It's, it has to be all like fresh and, and, and recent and
- 43:06available in the downstream systems or you can, or you can
- 43:10mock half of the, the system. So in our case, we, we try to
- 43:15use kind of recent data and I think there's two reasons to do
- 43:20it. One is it, we live in an
- 43:22adversarial space as well. So attacks change all the time.
- 43:26And part of it is because the, the security vendors change all
- 43:31the time and, and attackers are changing the way they attack due
- 43:34to security vendors. I'll give you one example.
- 43:37We are very good at spotting e-mail that has phishing text in
- 43:40it. If you write, you know, a text
- 43:42that says, you know, please use my new bank account or, or
- 43:46here's whatever it is, the text analysis is very cheap and
- 43:50efficient. So what attackers do is they
- 43:52embed an image and they know now we have to bring in OCR to read
- 43:56the content of image. And now that your cost is more,
- 43:58it's more expensive for you, right?
- 44:00So they and now if you can read images, they will bring APDF.
- 44:04So now you have to scan PDFs. So this is an adversarial space.
- 44:08And because of that, we can't like, you know, rest on our
- 44:12laurels and say, oh, we have a test running for this.
- 44:14It's been it's, it's fine. We have to kind of keep being
- 44:17good at what's currently being investigated.
- 44:20And that's where we use this kind of sampling approach of, of
- 44:24fresh data and, and try to use as real as possible attacks.
- 44:31And if we need to run expensive jobs, we do it on a kind of
- 44:34async fashion. And we do tap the shoulder of
- 44:38security engine and say, hey, this one wasn't good.
- 44:40And we, and we have a Slack integration for to, to make sure
- 44:42that there's a human in the process because you know, as, as
- 44:46this is a company, we're trying to tell people that we are still
- 44:51humans behind the product. They're not just agents.
- 44:54And like one person shop, you know, it's we have to create
- 44:58confidence and confidence comes from like having a person that
- 45:01actually has the ability to, to help you.
- 45:05So it's there's definitely a lot of human in the loop shepherding
- 45:09these agents. Are you OK talking about memory
- 45:14and shared memory? Because it feels like that would
- 45:19make the product much better. If there are certain patterns
- 45:24that you're seeing or a certain type of attack on one surface
- 45:28area or one client, and then now this becomes common, you can
- 45:35bring that back, learn it, and then the agents can reference it
- 45:39later. Or is that just like a naive way
- 45:42of thinking about it? I think so.
- 45:44I worked for for companies that had exactly this.
- 45:47So previous employers were were pitching their product as
- 45:51exactly this like you, if you we see an attack on against one
- 45:54customer, we can say the, you know information about the
- 45:59attack will become threat intelligence and we can share
- 46:02threat intelligence. It's behind.
- 46:04And that is very powerful for yesteryear's attacks.
- 46:08So if you look at attacks that used hashes of malware, you can
- 46:12see the hash of the binary. And if you see that hash, you
- 46:16know it's game over. And sadly for us or it's never
- 46:20like that, it's never that easy because attacks are very
- 46:23sophisticated and they have polymorphic malware and they
- 46:26have living off the line binaries.
- 46:28So we don't, you cannot make just threat intelligence your
- 46:35only strategy to combat attacks. And what we see is that even
- 46:40with our customers have the best of best security products you
- 46:44can buy and they still get attacked everyday.
- 46:46And not everything is stopped by the, you know, e-mail security,
- 46:51the EDR security and, and the network security products that
- 46:54they bought. And even if they bought a SIM
- 46:56where they aggregate all the information to 1's product, that
- 47:00is still not successful in aggregating everything they
- 47:04need. So having an agent that can go
- 47:06to systems that are not integrated into the same is very
- 47:10powerful. And in terms of like memory, we
- 47:14have built mechanism for us for them to tell us about false
- 47:19positives because that's more interesting than I mean.
- 47:23So I'll say you could obviously have false negatives as well to
- 47:27our system, but it's often false positives that make the most
- 47:31noise because if you have once in a month backup software and
- 47:36once in a month backup software generates an alert every time it
- 47:39runs. So every month you have a spike
- 47:43of noise and it's just nicer to have like this collective
- 47:46memory. So we have a way of of saying,
- 47:49you know, if you see this, it's OK.
- 47:51And that kind of is injected in an intelligent way.
- 47:54So the look up into the memory has to be aware of what are we
- 48:00looking at. So we have a notion of artefacts
- 48:02in the security space. So some people call them
- 48:04observables, but you might have an IP address or a domain or a
- 48:08file hash. And we have a way of saying when
- 48:10you see certain elements in telemetry, you know, look it up
- 48:15and see if we have something to say about them.
- 48:17And that allows us to kind of inject this collective knowledge
- 48:21that we have. And we don't need to do that for
- 48:26attacks necessarily, because attacks are by nature suspicious
- 48:30and cannot be explained naively. If I show you a command line
- 48:35that is is, is running from, from a malware, you wouldn't be
- 48:39able to understand what it's trying to do because the authors
- 48:43of the malware have tried to obfuscate it.
- 48:46So it's already, it's, it's the fact that you see, obfuscation
- 48:50is making you suspicious because a normal developer would not try
- 48:54to obfuscate their code. So we have multiple levels of,
- 49:00you know, knowledge, but we don't need to tell the AI what
- 49:04is malicious because that is, it's almost like a common
- 49:09knowledge kind of you know it when you see it's a sort of
- 49:11thing. I kind of want to switch gears
- 49:13and just get your opinion on where you think or where you've
- 49:18seen the most common failure modes when it comes to building
- 49:23agents that you're putting out into production.
- 49:26We, I mean, we started with writing the tools in, in the
- 49:30like the wrong language. I think one of the things that
- 49:32that we, we first did is say, you know, what's a good language
- 49:37to write back end in? And we chose Go, which is a very
- 49:40nice language. I love Go, but it is not the
- 49:44best language for both coding agents to write coding and, and
- 49:49when you're trying to build tools.
- 49:51So this this was very two years ago, right?
- 49:52So today it seems funny. We have MCP, but this was before
- 49:57MCP. So when we tried to give tools
- 50:00to our first version of the LM, we tried like the wrong
- 50:03language. And the Go creates the language
- 50:06safety, which is very nice for software engineers.
- 50:10But what you want with your LM is really give it the maximum
- 50:14amount of tools. So I think one failure mode is,
- 50:17is giving it not enough tools. So it can't really do the job.
- 50:20Like you can't expect an agent to do what a human does if you
- 50:23don't give it the right set of tools.
- 50:25So we were a little bit behind when we were trying to hand
- 50:28write all the tools and go. The second thing is like when
- 50:31you have too many tools. So when you give the agent, you
- 50:36know, 1000 tools, it's not going to be able to work like you have
- 50:40a limitation on the memory. And as we talked about the
- 50:43context, the format in which the LLM vendors want to know about
- 50:47tools is very verbose. This Jason schema that describes
- 50:51the the tools is not an efficient format for declaring
- 50:58the tools. So basically you cannot give all
- 51:00the tools to all the agents all the time.
- 51:02You have to have an intelligent way of saying what tools are
- 51:05relevant for the context in which you're, you're fine.
- 51:08And that's like tenant specific. So each customer has a different
- 51:11set of security software installed and, and each
- 51:14investigation has, you know, relevancy.
- 51:17So you have to apply this relevancy test so you don't
- 51:20pollute all your, your, you know, context.
- 51:23And that's something that we've, we've all seen with even, you
- 51:27know, software engineering coding agents.
- 51:29And I think the trend now is to use the skills just because of
- 51:33that. The skills is kind of is is like
- 51:35a it's it's coming from a Tropic, right, But it's it's
- 51:38something we has similar notion of of, you know, filtering and
- 51:42an idea that you can only pull into context a subset of this of
- 51:49of the functionality at the time is is very appealing.
- 51:52So that is definitely one thing. And I think also, you know, if
- 51:58you look at the other frameworks like we use land chain when it
- 52:02was one of their early frameworks, I think it's, it's,
- 52:05it's a good idea to evaluate kind of open source frameworks.
- 52:09Election when we started was not very mature.
- 52:12And I still feel, feel like they're doing as best as they
- 52:15can as a fast moving startup, you know, popular in open source
- 52:21community, but you, you have to kind of not get a swayed by
- 52:27GitHub stars. I think you have to kind of
- 52:29decide for yourself what is the business logic you want and how
- 52:34to build it and not say, I'm going to build it using this
- 52:37tool just because that's easy, because it's not necessarily
- 52:41easy. If you look at the, the pedantic
- 52:44agentic framework, the, the pedantic folks have released
- 52:47one, they basically say you probably don't need a graph.
- 52:51They have like in the documentation of segments, like
- 52:53do you really need a graph? Maybe you do.
- 52:55Maybe you need an orchestrator or sub agent and, and, and
- 52:58agents of call tools that are also agents, but maybe you don't
- 53:01like you're having a minimalistic version of your app
- 53:04is really a good way to start. I think a lot of people they
- 53:08have, they want to go to the advanced mode immediately.
- 53:12And in our, in our case, we have we're like on, on, on a higher
- 53:17version of our system right now because we've kind of adapted
- 53:20multiple times and it's constantly changing.
- 53:25So try to prototype and and evaluate before you kind of
- 53:31commit to framework or tool. And it's funny about that graph
- 53:36piece because it feels like more and more you are just getting
- 53:43that one agent. The sub agent architecture idea
- 53:46is becoming less relevant when the main agent is more powerful
- 53:52and can do more things. I, I, I think, I mean, I agree
- 53:56that it, it, we wouldn't need sub agents if we would be able
- 54:01to manage the context of the main of having one agent.
- 54:05So it's, it's really about keeping the context not polluted
- 54:11long enough to complete long running tasks.
- 54:14And if you can't do that, then you have to break it because
- 54:16that's basically our way of hacking the memory and the
- 54:19context. But if you can, if you can have
- 54:22good visibility into utilization of your context, you can solve a
- 54:26lot of issues, a lot of problems with a single agent.
- 54:29It's just very tricky because you your hammer writing more
- 54:34prompts is, you know, destroying your agent.
- 54:37So you have to really find a, a toothpick version, not a hammer
- 54:42to to slightly nudge it towards the outcomes you want without
- 54:47over engineering, you know, a multi multi step, multi agent
- 54:52graph necessarily. And the graphs, you know, I'm
- 54:56not against using graphs. I mean, if you come from
- 54:58detonatics background from using airflow and using any kind of
- 55:02spark system, you understand that graphs have a place in
- 55:06building detonatics jobs. But we have seen this in the
- 55:12security space like two things that don't necessarily always
- 55:15work. We have sort platforms where you
- 55:18can build like automations using, you know, code.
- 55:22And we have seen platforms like, you know, Orcas and Temporal
- 55:27that are, you know, making open source workflow engines.
- 55:32And I think those require software engineering skill set.
- 55:38But thinking about how to test those workflows in the agentic
- 55:44context is a lot of human context to consider.
- 55:49So when you, when you, when you pick your, your solution, you
- 55:54have to consider, do I need just the workflow engine and write
- 55:57some business logic in, in a general DSL for, for like a
- 56:01temporal Orcas? Or do I need an agentic
- 56:04framework in, in, in the graph of, you know, complexity and
- 56:08deciding where do you need like, why does it need to be an LM?
- 56:12Is like a is like a, is like a tough question because obviously
- 56:15people are excited about the LMS, but I think it's, it's,
- 56:18it's a good question to always ask.
- 56:20Does it need to be an LM? Can it be pure business logic?
- 56:23And, and who's, who's the person to write the business logic?
- 56:26Does it need to be me or can it be the user?
- 56:28If you ask those questions, you will find out the many, many
- 56:31cases you don't need everything to be a genetic LM like you can
- 56:37get quite a lot of value from, you know, very limited set of of
- 56:43LLM usage in your application. And then and it's obviously
- 56:49going to make it more testable and cheaper to run if you don't
- 56:52overuse agentic systems. And if you have to package
- 56:55skills, the skills are not LLM necessarily.
- 56:58You can write skills as regular software and write, you know,
- 57:01same way you write your MCP or whatever you you.
- 57:04That functionality is traditional software, and it's
- 57:07fun to write because you know that part of this works.