Latest / Agentic Conversations (formally mlops.community) / AI Data Engineers - Data Engineering After AI // Vikram Chennai // #309
Transcript
- 0:00My name is Vikram, I'm building Ardent AI, I'm the founder and
- 0:06CEO, and I like drinking lattes. Welcome back to the ML OPS
- 0:11Community Podcast. I'm your host Demetrios, and
- 0:14today my man Vikram is doing some wild shit around bringing
- 0:16LLMS to the data engineering pipeline use case.
- 0:21I love this because it is merging these two worlds and
- 0:26hopefully saving some time for those data engineers that, you
- 0:30know, are constantly under the gun.
- 0:35Let's talk with him about how he's doing it and what
- 0:37challenges he has had building his product.
- 0:42And as always, if you enjoy this episode, share it with a friend.
- 0:45Or if you really want to do something helpful, go ahead and
- 0:48leave us a review. Give us some stars on Spotify.
- 0:51It doesn't even have to be 5 of them.
- 0:54You know, I'm OK with four, but you can also comment now on
- 1:00Spotify itself, which will trigger the algorithm, give us
- 1:04more engagement. Let's jump into this
- 1:06conversation. But before we do, if you are one
- 1:11of those folks that is listening to this on Spotify or on these
- 1:18different podcast players, I've got a treat for you.
- 1:23The next musical recommendation comes from someone that just
- 1:29joined the community and told me about Cosmo Sheldrake.
- 1:34Never heard of him and I am now in love.
- 1:36Legend has. It at the Moss goes on the north
- 1:52When the sun beams come move upon say them with daddy.
- 1:54We'll let you can see that the world's winds round on an axis
- 1:57of 23°. But how do you have the zombie
- 2:01of the rabbits in the moon or the cow?
- 2:03The thumbness was traveling soon for she.
- 2:04The mountains are sitting on the tune and swap the songs is
- 2:16rollers are riding on the moon. Where you at, by the way?
- 2:45Are you in San Francisco right now?
- 2:47In San Francisco. You've been doing meetups.
- 2:51Not too much. I actually moved here like 6
- 2:55months ago and so I started working out of some Co working
- 2:59spaces and then sort of got like networked into the community.
- 3:03So there's not as many meetups anymore.
- 3:05I did a lot when I got here. I went to a lot of hackathons.
- 3:09Great place to meet people. But after that, once you sort of
- 3:12got, you know, a group of people, then it's sort of
- 3:14naturally expands who you meet. And then it's not as much go
- 3:18out, meet people yourself. It's more just like they just
- 3:20enter orbit. Enter orbit.
- 3:24I like it. The other thing that I was
- 3:28thinking about who are the folks that you talk to as like users
- 3:34of your product? So for U.S., data engineers are
- 3:39the primary users, which might seem a little counterintuitive,
- 3:45especially since we're building AI data engineers.
- 3:49But what we found is data engineers are really the people
- 3:52that understand how to get things done in their stack.
- 3:57So they know which pipelining tool to use, the little things
- 4:01that can go right or wrong. And so when they're in control
- 4:04of a tool that can do data engineering for them, then you
- 4:10just get way more done way faster.
- 4:12So they've been our our best users so far and we've seen them
- 4:16just do incredible things. So I want to look under the hood
- 4:21at how you are creating what you're creating, but you kind of
- 4:26glossed over something real right there and we need to dig
- 4:30into it. What is an AI data engineer?
- 4:34Yeah. So it's an AI agent that's
- 4:37connected to your stack that can perform data engineering tasks
- 4:40like building pipelines or doing schema migrations with the
- 4:45sentence. So it's very similar to
- 4:47something like Devon, except for verticalized and focused on data
- 4:51engineering only and really integrating deeply with that
- 4:56stack. So an example of that would be
- 4:59you have Airflow set up with GitHub and that's how you
- 5:03control the code for your data pipelines.
- 5:05And you want to build a new data pipeline.
- 5:07Normally you'd have to go clone that repo, you know, find
- 5:11wherever you're storing your, your Dags, your data pipelines,
- 5:15and then go write all the code and then check the databases and
- 5:18then figure out what to write and you know, the structure of
- 5:21everything, the schemas and all that mapping.
- 5:23Or if you're calling from an API endpoint, you have to understand
- 5:26what that endpoint will drop. So you have to do all this work
- 5:30and then you can push a pipeline up and then test if it works for
- 5:33us. Our agent has a terminal, so it
- 5:36has a computer attached and it can do all of that for you.
- 5:40So you just tell it, hey, I want a pipeline that does this.
- 5:43It'll go look at the web, look at that API endpoint, figure
- 5:46out, oh, how does this thing output?
- 5:49And then build the entire pipeline for you, push it to
- 5:52your GitHub repo as APR. And so you don't have to do any
- 5:55of the work. You just say, hey, go do this
- 5:57thing, it'll do it for you. And this is primarily with data
- 6:01pipelines. Yes.
- 6:04Are you also doing stuff within databases like the fun of trying
- 6:10to query the databases? Or is it just the maybe you're
- 6:13transforming or you're doing like?
- 6:16How complex have you seen this get?
- 6:19Yeah. So we have the context into
- 6:22databases. So when we have users set up,
- 6:26they set up with whatever pipelining service.
- 6:28So if it's Airflow, if it's Dagster or Prefector, whatever
- 6:32the hell they're using. But then you also have context
- 6:35over over all of their databases too.
- 6:38So you can connect Postgres or or connect Snowflake or
- 6:42Databrick SQL or Mongo DB or whatever you use.
- 6:45And so our agent actually has context over what that looks
- 6:50like. And it allows you, we're
- 6:52focusing specifically on pipelines.
- 6:54But when it writes that code, then it'll know the schema.
- 6:57So if there's a table you want to drop things into, it's not
- 6:59trying to guess or make up a new table.
- 7:02It knows you already have these three tables.
- 7:05It'll make the most sense to drop the new information into
- 7:07table one. And here's how we're going to
- 7:09transform it to do that. One thing that I've heard a lot
- 7:14of folks talk about is this type of coding with AI, or dare I say
- 7:23vibe coding is very useful when things are quite simple, but
- 7:31then it kind of falls flat once there is a lot of complexity.
- 7:37And when you're at the enterprise level and you're
- 7:40looking at a stack that goes back 20 years, it gets very,
- 7:45very hard to have AI be able to really help out in the coding
- 7:54and code generation side of the house.
- 7:57Have you seen something similar where if you're trying to do 123
- 8:03step pipelines, it's really good at that.
- 8:07But as soon as you start bringing in this very messy data
- 8:12from all over the place and it's being transformed 10 times
- 8:16before, or you're asking it to be transformed 10 times so that
- 8:20you can get the exact data you're looking for, it falls
- 8:24flat. So we've seen a little bit of
- 8:27that for sure, but I think that 2 main ways we've tried to
- 8:31combat it and I think that it's kind of a general principle too.
- 8:35One is managing context. So for something like we were
- 8:40talking to a few companies, some enterprise companies, and they
- 8:42had like 15,000 pipelines. Now obviously you can't feed
- 8:46that all into a contacts window. It there's no way, one, the
- 8:49contacts window doesn't scale to that.
- 8:51And two, even if it did, it would get incredibly confused on
- 8:54what you're asking for. So there's a a portion of
- 8:58generating really, really, really good context, which
- 9:02pretty much is trying to simplify the problem down for
- 9:04the agent. So that's a huge portion of what
- 9:08you're trying to do. And I think the other part is
- 9:10specified training. So for more generalized coding
- 9:13agents, I think one of the things they struggle with is
- 9:16they're not designed for specific task flows.
- 9:19They're trying to do everything at once.
- 9:21And so because of how language models work, they're probability
- 9:26engines. So if your probability
- 9:27distribution is literally everything, you're going to
- 9:31struggle to do the specific stuff.
- 9:34But if you design products around specific verticals,
- 9:37specific context, and specific outcomes, then you'll get a
- 9:41much, much higher quality result.
- 9:43But I think that the problem of like vibe coding and getting
- 9:48errors at that scale is something that actually won't
- 9:50ever disappear. But I think that's where you
- 9:52have to build specialized infrastructure to make sure that
- 9:55you can solve those problems. So one thing that we're
- 9:59exploring right now in our next build is creating staging
- 10:03environments for everything that they connect by default and
- 10:06trying to make them really lightweight and ephemeral.
- 10:09So let's say you make a change in your database, instead of it
- 10:13going directly to whatever database you have connected,
- 10:16assuming that maybe you don't have a staging environment, or
- 10:19if you do have a staging environment, it'll just say,
- 10:21here's the change that we're going to make.
- 10:23This is what it looks like. But that also allows the agent
- 10:26to go reflect on that and say, hey, this is how the system
- 10:29would change. Is this correct?
- 10:32And so even if it screws it up on time one or time 2 or time 3
- 10:35or whatever, even 10 times, it's not getting committed to your
- 10:39actual code base or to your database or whatever.
- 10:42And it has the ability to reflect on that.
- 10:45And so it can then correct itself.
- 10:47And the accuracy over a bunch of different trials goes up a lot.
- 10:53Wow, OK, now are you also creating some kind of an
- 11:00evaluation feedback loop so that you understand what is
- 11:06successful and what is not? So we've actually created a a
- 11:10benchmark because there really doesn't exist a good one for
- 11:12data engineering. Well, I was going to even say,
- 11:15it may have to be on a case by case basis or have you found it
- 11:20can be a bit more generalized with just data pipeline
- 11:24evaluation benchmark? Yeah, it, I think it actually
- 11:28can be a lot more generalized, but I think that's specifically
- 11:31because of how data engineering works.
- 11:33It's not exactly general. It's because the tools that
- 11:35people use are pretty standard, like they're using Airflow or
- 11:39Prefect or Dagster or Databricks or whatever.
- 11:42You can actually name every single one of the popular tools.
- 11:46And because of how important data is to companies, it's very,
- 11:50very unlikely that people are going to use some kind of
- 11:54unknown tool that no one's really battle tested.
- 11:57Because if you have an error with your database and for some
- 12:00reason they've, you know, coded it really, really badly and it
- 12:03deletes everything, you're screwed.
- 12:04Like you're never going to take that risk.
- 12:06So, so people always, you know, tend to go with the, the
- 12:11standards and that creates a nice framework for us to be able
- 12:14to test in or we can say as long as it can operate, you know,
- 12:18these tools really well. And we'll give it, you know,
- 12:21hundreds and hundreds of tasks to optimize over.
- 12:23And it's getting better at that. And we're pretty confident that
- 12:26the majority of people will be served well with it.
- 12:30OK. And you mentioned in the staging
- 12:34environment that allows the agent to almost game out what
- 12:39would happen if we made what the first agent is recommending?
- 12:46It's it's almost like seeing into the future in a way and
- 12:48then reflecting upon if that is the right move or not.
- 12:53Can you talk a little bit more about what type of validation
- 12:57checks you have? And is it all through agents, or
- 12:59is there also some determinism involved in that too?
- 13:03So it's mostly through the agent itself, but we can also pull in
- 13:09like data quality checks and other tests that you have
- 13:11running. So our goal is to replicate your
- 13:14actual environment as much as possible.
- 13:16So it writes A pipeline, then it runs whatever tests, if you have
- 13:19them, we'll bring them in. The agent itself will be able to
- 13:22see into error logs and all that kind of stuff to understand,
- 13:25hey, did I write code with bad syntax or hallucinated
- 13:28something? Or does the output look the way
- 13:31that's expected and it takes all of that and then it can just
- 13:34sort of loop until it gets things right?
- 13:37That's really cool. A lot of times folks talk about
- 13:41how hard it is to get right when they are talking with agents,
- 13:47the ability for the agent to ask questions if it does not have
- 13:53enough context. How have you gone about fixing
- 13:56that problem? Because I could say like, yeah,
- 13:58set me up an Airflow pipeline and use my database and the
- 14:04agent might go and just set up some random Airflow pipeline
- 14:08with some random database and say, here's what you asked for.
- 14:11And or it could hallucinate something when it doesn't have
- 14:14the right context and the right ideas, right?
- 14:17So what are you doing to make sure that right off the bat the
- 14:22agent doesn't go start working unless it has the right amount
- 14:26of information? Yeah.
- 14:28So one thing we actually added in our task flow and actually
- 14:32specifically train on is if tasks are possible.
- 14:37So one of our test cases, like a very simple one was we're going
- 14:41to not feed it in Postgres credentials and we're just going
- 14:45to tell it go build something in Postgres like add this table and
- 14:49see what it does. And at the beginning it like
- 14:50tried to do it exactly like you said.
- 14:53And we, you know, essentially trained that behavior out.
- 14:56So we added a check step in sort of the planning phase of it
- 15:00where it'll try to determine if the task is possible or
- 15:03impossible. And so we just tried to train
- 15:06that out where it will tell you that's not possible.
- 15:08You should probably not do that. And that's another LLM call.
- 15:13It's part of the original 1. So the flow that we have set up
- 15:18is you make a request, the agent will gather contact, search the
- 15:22web, all this stuff. And then it'll give you a plan
- 15:25of like, here's what I'm going to do, are you OK with this?
- 15:27And you can go back and forth and just make edits.
- 15:30And so if it's made a mistake, that's your opportunity to look
- 15:33in detail about everything it's going to do and say, like, that
- 15:36step is wrong or that step is wrong, or actually I wanted this
- 15:39table or something like that, and then let it go off on its
- 15:43own. But in that phase, there's a
- 15:45check there that tries to say, is it impossible or not?
- 15:49And if it is, then, well, it'll say please revise that.
- 15:54Yeah. How do you think about really
- 16:00big tasks versus trying to break up the tasks and make them
- 16:05smaller? And when you're designing your
- 16:07agents, trying to ideally have smaller tasks so that you have
- 16:12more dependability. I think that breaking it down is
- 16:15definitely the way to go. I just don't think you can get
- 16:20enough from a larger task. And in US breaking it down in
- 16:23the planning step, so it won't just say, hey, I'm going to
- 16:26build you a pipeline, it'll say here are the steps that I'm
- 16:29going to execute. Is this right?
- 16:31It allows a lot more fine grained control over what you're
- 16:34going to do. And yeah, you get a lot more
- 16:36accuracy out of it. But it also helps on the user
- 16:38side because they can see exactly what little steps are
- 16:42going on. And so they also have control.
- 16:45And so especially if our users are data engineers, they very
- 16:49much understand what needs to be done.
- 16:52And so they can really make the edits like, hey, Step 3 is
- 16:55wrong. Like, or it's a little bit off
- 16:57or you inferred the wrong table. Let's correct that.
- 17:01And so it doesn't put all of the, the onus on the agent, at
- 17:04least not yet. And there's always going to be a
- 17:06little bit of a mismatch, right? Because there's no way you can
- 17:09perfectly replicate everything into your brain and just dump
- 17:12that into the into the context. Are you using the GitHub repos
- 17:22of the organizations as context also to help when creating the
- 17:27different pipelines? Yeah.
- 17:29So the primary way people tend to store pipelines is through
- 17:33some sort of version control software, and that's usually
- 17:36GitHub. And so, yeah, the agent will
- 17:38connect in sort of scan and understand that repo, look for
- 17:42specific folders that are important, such as if you have a
- 17:45DAGS folder, which is Airflow's name for data pipelines and all
- 17:50of the, all of the, the files in there.
- 17:52So it'll know that's where I write my pipeline code or that's
- 17:55where I, you know, extract from. But you're not specifically
- 18:04trying to vectorize all of this stuff that's in there.
- 18:08You're you're just taking it at face value.
- 18:11Like you don't need to over complicate things by saying,
- 18:15well, let's vectorize everything that we have.
- 18:18Let's throw it into a vector DV and then hopefully it can give
- 18:22us better retrieval and also it will know better semantically,
- 18:27like what is being asked. None of that actually matters.
- 18:32Are you talking about for the code?
- 18:34Yeah, or any of the stuff that you're giving it as context.
- 18:39So we do actually do a bit of rag and retrieval, and the main
- 18:44place we do that is pretty much on the all the context layer.
- 18:48So if you ask about Postgres and Mongo DB, what we're going to do
- 18:52is try to RIP out as much unnecessary context as possible.
- 18:55So it's actually less of a problem of giving it the right
- 18:57context. What you want to do, at least
- 19:00for data engineering agents or I think coding agents in general,
- 19:03is give it as much as possible because we have this this policy
- 19:07of like achievable outcomes. So if you don't give something
- 19:13like database credentials, I don't give you my Postgres
- 19:15credentials, there's no way you're going to ever get into
- 19:18that database and understand what's there in any conceivable
- 19:21universe. And So what we try to do is give
- 19:25the agent just enough, but remove all the unnecessary
- 19:28stuff. So for example, if it does a
- 19:31retrieval search and says, OK, we don't need data bricks.
- 19:33We don't need any of this other stuff.
- 19:35But we give it just enough so that if it did need data bricks,
- 19:39then it can start pulling that context or make that part of the
- 19:42the planning steps of, hey, I need to pull this thing, I need
- 19:45to pull that thing, then it can still do it.
- 19:47So we do add sort of a search layer on top, but it's more to
- 19:50get rid of unnecessary information.
- 19:52Like you think 15,000 pipelines, there's no way, right?
- 19:55So you do need to index all of that and understand for a user
- 19:59query what to pull it and what not to.
- 20:01So if I'm understanding this correctly, it's more about how
- 20:06do I tell the agent where to look if a certain question is
- 20:13asked? I have that information there in
- 20:15the context and it knows. Oh cool airflow.
- 20:19I go and look in this area and then it gives me more
- 20:23information about how to deal with airflow.
- 20:26Yeah, exactly. So it's a mix of it'll pulled
- 20:30stuff directly. So for the pipelines and the
- 20:33code, we do index that so that it can pull in OK, Pipeline 3
- 20:37and it looks like this. And here's all the code and go
- 20:39edit that code and here's how it's stored in GitHub.
- 20:41Go do that. But let's say it wanted
- 20:43information that we've decided from that vector search is not
- 20:47relevant. We still have enough information
- 20:50so then it can go and find its way to it.
- 20:53I see so that in case it comes up later on down the line then
- 20:58it it's not just like what is data breaks.
- 21:00Yes, exactly. And you're in a bit of trouble
- 21:06and that it's scenario that makes a ton of sense.
- 21:09Now, one thing that we talked about I think probably two
- 21:13months ago with a team that was creating like a data analyst
- 21:18agent, they made sure that the data analyst agents were
- 21:26connected directly to different databases.
- 21:29And if the agent was for marketing, it was only given
- 21:36scope for the specific marketing databases.
- 21:40And all of that analysis that takes place in like almost this
- 21:46walled garden. Have you seen that to work or is
- 21:50it? Is it something different?
- 21:53I think for certain companies that make sense, especially for
- 21:58larger enterprises, I think there's a good chance a lot of
- 22:02that comes from security. If I had it my way and I had
- 22:06access to everything I wanted, I would I would just be like, OK,
- 22:10give me as much context as possible.
- 22:11I'll index literally everything you own.
- 22:14And you know, I designed some sort of custom embeddings on top
- 22:18of that, which is some of what we do to make sure it's really
- 22:21accurate on everything. So I think there's like a trade
- 22:26off there where I think more context is generally better
- 22:29actually in this case. But you again you want to keep
- 22:32it pretty thin, right? Like you don't want everything
- 22:36about everything. You want just enough about
- 22:39everything, especially if you have sort of these cross
- 22:42contacts flows. Now with pipelines, that's
- 22:46something like sort of the call out structure where you have a
- 22:51pipeline that'll trigger a data processing service to go do all
- 22:54the heavy lifting. So you're not processing
- 22:56millions or billions of rows of data in your airflow instance,
- 23:00which will blow up like you're putting it off the data bricks
- 23:03or someone else. So you kind of want that
- 23:05context, right? So I, it makes a lot of sense,
- 23:08especially at the enterprise scale to have it sort of guarded
- 23:12off like that. And it may improve the agent
- 23:14too, but I tend to go for bringing lots of context and
- 23:20just keep that understanding so that when you have those flows
- 23:24to sort of peek out, you know what what's happening.
- 23:27Along the lines of processing data in the wrong place or with
- 23:32the wrong tool that's going to make something blow up or be
- 23:35really expensive after the fact. Do you have alert set up or do
- 23:40you have some kind of way to estimate?
- 23:42As you said, we have that staging environment.
- 23:45We can estimate if this is going to work which is 1 vector, but
- 23:49then I imagine another vector is.
- 23:50How much will this cost? Yeah.
- 23:53So what we've actually found especially for existing
- 23:57customers is they actually kind of know what their cost will be
- 24:02because a lot of times the work is not, I don't know what I'm
- 24:05doing, tell me how to do it better.
- 24:08It's I know what I need to do but I wish there was 10 of me
- 24:12like I just don't want to take. So long to yeah, yeah, it's like
- 24:15cumbersome. The work is very cumbersome.
- 24:18Exactly. And so they off board that work
- 24:21to our agent like hey, this pipeline is taking 10 minutes
- 24:24and it needs to be a minute. Now I know how to do that
- 24:27probably I really don't want to do that.
- 24:29So can this thing just auto scale the pipeline out?
- 24:33OK, cool. It will do that and they can
- 24:35give it specifics on how to do that.
- 24:36So we haven't seen that as much. But yeah, you will be able to
- 24:39pull that stuff from the staging environment.
- 24:41And somewhere we're looking to go more down the line is, you
- 24:45know, being able to auto optimize sort of at that level
- 24:49of like, hey, we can save you 20% on your bill if you just
- 24:53changed everything like this. And our agent knows how your
- 24:56costs are set up and all this stuff.
- 25:00The other thing that I was thinking about on this is do you
- 25:03primarily interact with the agents through Slack or is it
- 25:09via web GUI? What is it?
- 25:11So it's mainly through a web app and they can, yeah, they can
- 25:16just push whatever changes to the agent.
- 25:18So it's just a chat interface. And then we've got sort of the
- 25:21the terminal style, so you can see what it's doing as it's
- 25:24doing it. And then you have a bunch of
- 25:26options on do you want to make it more copilot or full agent,
- 25:29that kind of thing. So you've seen most of the
- 25:32interaction go through there. But we also built out an SDK and
- 25:35API so you can actually build the agent reactively into your
- 25:39flows. So for example, a really good
- 25:41example is like at 3:00 AM, you have a data pipeline fail and
- 25:45you don't want to get up for that because that's ridiculous.
- 25:48And so instead of having to wake up and then figure out what's
- 25:51going wrong and you know, write some more code or if it's really
- 25:54simple, just restart the pipeline.
- 25:56Like why are you doing that at 3 AMI want to sleep?
- 25:58You can put in code directly into your like error handler or
- 26:03something and it will auto trigger the agent to run and you
- 26:06can put in whatever text you want.
- 26:08So it's the same thing you would do in the web UI, but now you
- 26:12can do it in your code. And that allows those flows to
- 26:15be, hey, there's an error at 3:00 AM, the agent has gone
- 26:19while you're still trying to get up and shake off the sleep like
- 26:22it's going and doing all the work.
- 26:24And it said, hey, I found the fix here.
- 26:27It is like here's APR to change, you know, whatever bug is going
- 26:30on or you just need to restart the pipeline.
- 26:33I'm ready to do that. Would you like to do that?
- 26:36Just a yes or no. So it's not actually having full
- 26:39autonomy like you were saying before, you're trying to get to
- 26:42that point, but at this moment in time, it still gets that
- 26:46human intervention or the green light from some kind of a user.
- 26:52Yeah, I, I honestly don't know if we'll ever get to full
- 26:55autonomy. And that's mainly because like,
- 26:58even if you placed it in the role of, OK, we're hiring a
- 27:01junior dev, would you really want them to push to prod?
- 27:05Just like it's fine push to prod, just go, there's some
- 27:09situations we're fine. Yeah, you probably would want
- 27:11that, right? But you know, maybe you might
- 27:14have some breaking changes that are a little bigger than the
- 27:16initial one and you don't really want those pushed.
- 27:18So I think allowing people to retain control is pretty
- 27:22important, especially with agents, where they are, where
- 27:26they're, I think we're at the point where they're useful, but
- 27:28they're far, far from perfect. And so it's not really a good
- 27:34idea in my opinion to just say do everything for me and I'm
- 27:38just going to close my eyes and let you do everything.
- 27:41Yeah, the idea of cognitive load with the agents and if at the
- 27:51end of the day they help you take off certain amounts of
- 27:56cognitive load, then that's awesome.
- 27:58The better question I think would probably be around the
- 28:00idea of cognitive load and how you are looking at not adding
- 28:07extra burden to that end user. Because a lot of times we've
- 28:11probably both felt it. We've had interactions with AI
- 28:15that are not great and we come away from it thinking, damn,
- 28:22that would have been faster if I just did it myself.
- 28:25Yeah. I think the best thing we can do
- 28:28in that scenario is just make the product better, train it
- 28:31better, get it more accurate over scenarios.
- 28:34I think one of the other benefits of building sort of
- 28:37workflow oriented products is you get a lot of feedback from
- 28:40your customers. So when something screws up for
- 28:43them, you get a trace of like here are the steps and here's
- 28:47everything that blew up along the way.
- 28:49And so as more people use it, the better you can make it for
- 28:52everyone because now you just have, you know, it goes from
- 28:55thousands to hundreds of thousands to millions of flows
- 28:59coming in of OK, this happened and here's the evaluation.
- 29:02Yes or no, yes or no. And you can use that to just
- 29:05make it great. So I think the best thing to do
- 29:07honestly, is just make it better.
- 29:09And then, you know, building those sort of staging bits and
- 29:12the context bits that allows the agent to actually do good work
- 29:17because I think that's the only real solution to it, right?
- 29:20Like you can Band-Aid fix it and say, well, it won't affect
- 29:23anything real, but the real thing is you want it to do good
- 29:26work. That's why you're buying it.
- 29:27That's why you're doing anything with any of these tools.
- 29:31And so I think that's like the only real solution.
- 29:35It is nice that you play in the field of the suggestions or the
- 29:43actions that the agent takes. Has very clear evaluation
- 29:48metrics. It's it works, it runs like data
- 29:52is flowing or it's not. And on other agentic tasks, I
- 29:57think what I've heard from some really awesome people is the
- 30:02closer you can get to like runs does not run, the better it's
- 30:08going to be for an agent because you can clearly decide if it was
- 30:12a success or if it wasn't. I totally agree with that.
- 30:16And that's actually part of how we train in sort of the the
- 30:21benchmark training set, whatever you want to call it.
- 30:25So it's like an eval and train set there.
- 30:27We actually do have deterministic outcomes.
- 30:29So we have everything from super simple stuff like just testing
- 30:34if the agent even understands the database, right?
- 30:36Like put something in database, add a name and an age as a
- 30:41record into, you know, our Postgres database.
- 30:43Super easy, go do that or make this table and then you
- 30:47validate, did those things actually exist?
- 30:49Are they there? And you add layers on top of
- 30:51that of like, how long did it take?
- 30:53And you pull all of that back. And so when you're optimizing,
- 30:57you're not just optimizing on the simplest, like, you know,
- 31:01maybe an LLM to evaluate the code.
- 31:03Did this look right? Are there errors?
- 31:05It's like we actually saw the data end up where it needs to
- 31:08go. We saw how long it took, we saw
- 31:11fast. The actual query ran like this
- 31:13is too slow, this is too fast. And especially when you're
- 31:16training, that's really useful feedback, right?
- 31:20Yeah, we had my buddy Willem on here, probably, I don't know
- 31:27when, a couple months ago and he was talking about how for them,
- 31:32they're doing something very similar, but for Sr.
- 31:35ES and root causing problems and triaging things.
- 31:39And they set up a knowledge graph with Slack messages that
- 31:44are happening. They also set it up with code
- 31:47and they set it up with I think JIRA so that you could have a
- 31:53bit more of a picture when something goes wrong for that
- 31:58product. It makes a lot of sense.
- 32:00I wonder if you have thought about trying to do something
- 32:05similar or if you're thinking that the way and the ability for
- 32:11you to get the context that needs to be in that agents
- 32:16context window is enough right now with how you're doing it.
- 32:20I think right now where we focused is all the like, this is
- 32:27what it needs to work. So all of the the coding pieces,
- 32:31you know, pulling in GitHub, pulling in database context,
- 32:35that's what makes it work. I think that next level of and
- 32:40here's all your Slack and JIRA and this and that is just, it
- 32:44gets better because essentially what people are doing right now
- 32:47is they're taking that contacts that's out there already putting
- 32:50it into their head and then putting it down into the prompt.
- 32:54And so people are kind of transferring themselves, but it
- 32:57would probably be something that we're looking at.
- 32:59So we had a few customers ask for a doc attach or they could
- 33:04just put in like a documentation because they'd apparently been
- 33:08storing all their their contacts and all their practices in one
- 33:11giant document. And we heard multiple people do
- 33:13that where they're like, this is our master document on how to
- 33:16write everything. I think they were using it for
- 33:18like a combination of training new hires, but also just a
- 33:22document like this is how we do things at this company,
- 33:25especially for data engineering. And so they wanted to be able to
- 33:28attach that as like a permanent fixture of like this is how
- 33:32you're supposed to do everything.
- 33:33So we've gone down the road a little bit, but I definitely
- 33:36think it's the right approach of trying to pull in even more.
- 33:39Again, you get into like the context balance issue, but I
- 33:42think if done right and done, you know, the, the gold standard
- 33:45there's like if it's done perfectly, then you do gain a
- 33:49lot more than I think you'll ever lose.
- 33:52Speaking of that, doc attach I've.
- 33:55It's not the first time I've heard it and it's in a little
- 33:58bit different of a scenario, but the whole idea is how can we
- 34:03create some kind of a glossary for the agent to understand us
- 34:11when we talk about terms that are native to our company or
- 34:15when we want things done that the way that our company does
- 34:19them? Because maybe it's different in
- 34:21every company. Or maybe what we mean when we
- 34:25say I need to go get MQLS from the database.
- 34:29What is an MQL? It's not necessarily labeled as
- 34:33an MQL in the column so or so. It's not like it is a clear cut
- 34:39and dry thing and the agent needs to know either how to
- 34:43create that sequel statement to figure out what an MQL is, or
- 34:47they need to understand what that actually means and which
- 34:51column that relates to. No, absolutely agree with that.
- 34:56Actually, I think one of our core principles is that we're
- 34:59not going to make you migrate anything.
- 35:01And so that doesn't that's not just about like databases or you
- 35:05know, sort of that code level stuff.
- 35:07It's like we want to work the way you work.
- 35:09We don't want to tell you how to do things.
- 35:12And I think there have been products, especially in the past
- 35:14before the whole AIAI wave is they've kind of tried to make
- 35:20decisions for you because there was a real trade off, right?
- 35:24And they were like, here's a better way of doing things.
- 35:26You'll save a ton of time. But now we're in this place
- 35:28where, you know, maybe the switching might be a little bit
- 35:33easier or you can sort of have cross contacts tools, but still
- 35:37migrations changing the way you do things is like the worst
- 35:40thing you can ask someone to do, in my opinion.
- 35:42If you say, hey, switch your database, they're going to look
- 35:45at you like, are you crazy? Like for, for your AI is great,
- 35:49but not, we're not switching our database for that.
- 35:51Like, please leave. So we very much found that,
- 35:55yeah, working the way people do is like, that's, that's how you
- 35:59do it. That's how you do it, right?
- 36:01And you're essentially allowing them, you know, even if you try
- 36:04to improve it a little bit, you're saying while you're doing
- 36:06this and you could do it better in maybe this slight way, but
- 36:10it's not like we're going to come in and tell you what to do.
- 36:13And actually you have to, you know, RIP out your pipeline
- 36:16service and use our custom pipeline tool that we've built
- 36:19with AI in it. Like, no, just use your stuff.
- 36:22This thing will drop in. It'll solve your problems.
- 36:27And along those lines, do you have something that is like
- 36:32common asks or common patterns, common requests of the agents
- 36:38that you've codified and you figured out, OK, this pipeline
- 36:45is being requested like twice a day or twice an hour.
- 36:50And so maybe we can just make that A1 button click instead of
- 36:53having to have someone prompted every time.
- 36:58We haven't seen as much of that directly.
- 37:01I actually think that's a little bit different than the
- 37:03philosophy we're going after because usually for pipelines,
- 37:08first they're set up once and then they're managed.
- 37:11So it's rarely like recreate this over and over and more of
- 37:16we've created it and now we have to make sure it doesn't break
- 37:18and make sure everything else doesn't break at the same time.
- 37:22So a lot of that and then I think a lot of our approach is
- 37:25also the thing that LMS are great at is being non
- 37:29deterministic and solving a wide array of problems.
- 37:32And so even if we see a pattern in there that might be easier as
- 37:36like a one click, just do this. I don't think that's actually a
- 37:40good practice to add to the agent because you're trying to
- 37:43direct it yourself versus train on data.
- 37:47So what should be happening is if you see that happen a lot and
- 37:51you keep adding that as training feedback, it should get really
- 37:54good at it. So you know, they might have to
- 37:57prompt and ask for it, though usually they're not going to ask
- 38:00to recreate a pipeline 6 times, but it'll just get good at those
- 38:05kinds of tasks, right? Or if you want, you can just use
- 38:08the API. And if you really want to
- 38:10recreate a pipeline 6 times in a row, you have an API, you have
- 38:13an SDK. Spread a for loop and it'll do
- 38:15it six times in a row. I'm thinking about the Uber
- 38:19prompt engineering Toolkit because we just had a talk on it
- 38:23last week for the AI in production conference that we
- 38:26did and they were talking about how they will surface good
- 38:30prompts, quote UN quote, good prompts like prompts.
- 38:34They people can create prompt templates, we could say, and so
- 38:38that maybe it's not exactly the same thing that's being asked,
- 38:44but you have the meat and potatoes of your prompt already
- 38:50ready. You click on that and then it's
- 38:52it's there for you and you change a few things or
- 38:57extrapolating that out. I was also thinking about
- 39:00another talk that we had from Linus Lee who was working at
- 39:04Notion and his whole thing was with Notion AI, we just want you
- 39:07to be able to click and get what you need done through clicks
- 39:14without having to have that cognitive load of trying to
- 39:19figure out what it is exactly that I need.
- 39:22Because there are like 6 things that when it comes to Notion at
- 39:26least, and I understand it's a completely different scenario
- 39:29for you when it's in Notion. Maybe you want to elaborate on
- 39:33to something, you want to summarize, you want to write
- 39:37better, clean up the grammar. And so they give you that type
- 39:40of AI feature just with a few clicks.
- 39:43I think our version of that would probably be like user
- 39:46specific prompt suggestions or like chat suggestions.
- 39:50So if you are requesting for a pipeline or working with XYZ
- 39:55pipeline a lot, then it will be able to learn from that and give
- 39:59you sort of almost like search suggestions.
- 40:01The same way in Google or any service, it'll say, hey, were
- 40:04you thinking about asking this or this or this?
- 40:07And then you know, sort of go that way.
- 40:09That'd probably be the best version of it for us.
- 40:12But it would definitely help, you know, people don't have to
- 40:15ask for the same thing. Yeah, like 6 times You'll it'll
- 40:18start to learn. Like maybe you do want to talk
- 40:20about pipelines because that's all you've been talking about.
- 40:24Simple humans, what are you doing no.
- 40:28Talk to me about pricing because I know this can be a headache
- 40:32for founders in this space specifically because like the
- 40:38traditional way of saying it's seat based pricing can get
- 40:42really not useful or not profitable for a company.
- 40:48If everything is on usage based pricing then you run the risk of
- 40:54the end user thinking twice before they use the product.
- 41:01It's like, if this is going to cost me like a buck or two
- 41:05bucks, maybe I should do it myself.
- 41:07I, I mean, hopefully people value their time much more than
- 41:10$2.00, but I know that I've been in that situation and I think do
- 41:15I want to spend the $2.00 right now?
- 41:17I don't know. So how, how do you look at
- 41:20pricing? How are you currently doing it?
- 41:21And what do you think about like as you've learned from customers
- 41:26and talking to customers? So usually when we, when we sign
- 41:29new customers, it's usually like a flat subscription fee that we
- 41:33give them. So and they get a credit
- 41:35allocation for it. So usually we evaluate what
- 41:38their needs are and then we essentially come up with like a,
- 41:42you know, we have a scaling of here's how many credits is to,
- 41:46you know, whatever dollar amount.
- 41:48And then we usually offer them a subscription on that, especially
- 41:51because, you know, usually they want to either build new
- 41:53pipelines or maintain existing ones.
- 41:55And so they want to remove that sort of work.
- 41:58And a credit is like a token or a credit.
- 42:01Is it's a mixture of token and tokens and compute.
- 42:05And so it's all the resources that the agents are using to
- 42:08solve the task and then they get billed onto your account.
- 42:12But with the way we price, you know, you'll have like 2000 or
- 42:163000 credits or something on your subscription for your
- 42:20company. And so like spend away, like
- 42:24those are yours to spend. Like please drop it to 0, you
- 42:27know, and if you want more on top of that, then we offer sort
- 42:31of a, a token basis on top of that.
- 42:35So it's like, hey, you've used up all your credits for this
- 42:37month. If you want re up here send
- 42:41Bitcoin to this wallet address then good.
- 42:46Yeah. So not yes, not exactly the
- 42:48Bitcoin, not that far, but yes. Oh yeah.
- 42:53Wouldn't it be nice though? Wouldn't it?
- 42:56That's hilarious. The but the yeah, that makes
- 43:00sense. And that is one of the pricing
- 43:02patterns that I've seen because it will, it will help folks.
- 43:06So you're kind of estimating as you're looking at how nasty
- 43:12their data pipelines are or how many they have.
- 43:15If it's that 15,001, you're going to give them a bigger
- 43:18quota or think that they're going to use a bigger quota, so
- 43:22you're going to give them an estimate that's a bigger than if
- 43:26it's just one data engineer with a few pipelines they need to
- 43:30run. Exactly.
- 43:31And I and our primary goal like whenever we're on those calls is
- 43:34not to say like, you know, it's not really you have three seats
- 43:38and they're it's like, OK, what's your problem?
- 43:40How do we solve it right? And it's making sure you have
- 43:43the resource allocation to actually get your job done.
- 43:45Like what we don't want is the hassle of someone coming in and
- 43:49saying, well, OK, we, you know, we got you know what, let's say
- 43:53we had a different model, 100 credits, and it didn't really do
- 43:56the thing. It's like, yeah, that's because
- 43:58it's the task you asked was not suited for that exact, you know,
- 44:03scenario. Like we didn't.
- 44:05Everything isn't set up right for you to be able to do that
- 44:09the way you want it. Or we've set up a, a run that
- 44:12runs every three days and does data quality checks or just
- 44:15checks for new changes and stuff.
- 44:17And, you know, is there anything wrong?
- 44:19Like whatever you want the agent to do, right?
- 44:21We've set it up in the SDK and like, it just stopped running.
- 44:24It's like, well, yeah, because that's not what your needs
- 44:27actually were. So I think it helps a lot on the
- 44:30customer side where they just have to worry about getting
- 44:33their job done and that's it. That's the only thing you have
- 44:36to think of. And then as things start to
- 44:38scale, you know, then you're like, OK, well, you can re up
- 44:41credits or maybe we can change to a, you know, a, a, a
- 44:45different sort of subscription or something like that.
- 44:48But at least for now, plus a little bit in the future, they
- 44:52just don't have to worry. Yeah, you mentioned also
- 44:57compute. Why is compute involved in
- 44:59there? Are you abstracting away the
- 45:01pipelines themselves too? Are you like adding the compute
- 45:06or are you doing the compute yourself?
- 45:08So the compute comes from the agent actually running thing
- 45:12like running code to get your job done.
- 45:15So the fundamental way it works is it is a coding agent.
- 45:18And what our thesis is that seems to be working is that
- 45:23coding is like coding is a language that we've already
- 45:27created to interact with every service out there.
- 45:30So why would we try to rewrite it like it's already there in a
- 45:34box? You want to interact with data
- 45:36bricks, They have an SDK and an API.
- 45:38You want to interact with Postgres like they have it for
- 45:40you. Why would you try to rewrite
- 45:42that? And so the way the agent worked
- 45:45is it will actually just code the way that a human would to
- 45:48get the job done. So if you have a GitHub repo set
- 45:51up, it'll clone the repo and make the changes in the right
- 45:54place for for DAG files for Airflow and then push you APR
- 45:59for that. Or if it's just make a change in
- 46:01my mongo DB database, it'll write the code to get that done
- 46:04and then push that. And so all of that requires
- 46:06compute to run that VM that the agent is given, and so that gets
- 46:11passed on. Oh I see.
- 46:14So it's not only the LLM calls, it is also the VM and everything
- 46:20that's happening in that sandbox.
- 46:24Awesome, Now what? Before we go, man, I feel like I
- 46:31want to make sure that I get to ask you everything because this
- 46:33stuff is super fascinating to me.
- 46:34And I love the fact that you're taking like this AI first
- 46:38approach for the data engineers because Lord knows every day is
- 46:42hug your data engineer day. And they go through so much crap
- 46:46and get so much thrown upon them that this is a tool that I
- 46:52imagine they welcome with open arms.
- 46:56And I guess the other piece of it is like, I imagine you
- 47:03probably for fun or out of passion of building this
- 47:07product, have looked at a lot of logs or looked at a lot of stuff
- 47:14that the agents have been able to complete.
- 47:16What is one run or something that an agent did that surprised
- 47:22you that it actually was able to pull it off?
- 47:25We did a bunch of testing to have it right spark code and
- 47:28data bricks and to call that orchestrator pattern of have
- 47:33something in Airflow trigger something out of data bricks.
- 47:35And like a lot of companies do this where they use Airflow
- 47:39purely as an orchestrator, which is generally a good pattern.
- 47:43And we just had a, it was like a very simple like data frame
- 47:48calculation that we wanted to do.
- 47:50But it was a fact that it was able to use multiple services at
- 47:53the same time. One shot the code properly, like
- 47:56process the data elsewhere and then sort of pull that all
- 47:59together in like an Airflow pipeline that didn't error out.
- 48:02That's like, there's no way that thing just works, right?
- 48:04Like that's insane. So I think that's, that was
- 48:09probably the biggest thing where, you know, it wasn't just
- 48:11the complexity of write the pipeline.
- 48:13It was like, and you have to call out to a different data
- 48:15processing service, which means you need to understand what are
- 48:18the clusters that you're running and like all this stuff that
- 48:21needs to go in. Then you also need to write the
- 48:23Spark code properly to make sure that doesn't error.
- 48:26And it like did it all. And I was like, oh, OK, guess
- 48:30we're on to something like this is, wow, this is impressive.
- 48:36It worked once and you're like don't touch anything, nobody
- 48:39move. We need to pray to the LLM gods
- 48:43right now that it will work again.
- 48:46Yeah, I, I remember, I immediately just texted my
- 48:49friend. There's like, there's no way
- 48:50this thing just work. Like this is insane.
- 48:52And then you know it, it's pretty cool when you have those
- 48:55moments like you're running through training loops and it's
- 48:57just crashing, crashing, crashing, and then it just
- 48:59starts working. And then it works more and more
- 49:01and more and it's just not failing anymore.
- 49:03And you're just looking at that thing like, holy crap, like,
- 49:06wow, this is working. Like this is unreal.
- 49:10Like you think three years ago you'd have bots pretty much that
- 49:14you could just say go do this super complex task.
- 49:17You also need a code. You also need to understand like
- 49:19an entire data bricks environment.
- 49:21Oh, and you, you know, you should get it right in one or
- 49:23two tries. Like that's just unreal that
- 49:26it's happening.