LALatent SpaceNov 28, 2024· 1:11:08

The new Claude 3.5 Sonnet, Computer Use, and Building SOTA Agents — with Erik Schluntz, Anthropic

Anthropic's Erik Schluntz explains how Claude 3.5 Sonnet achieved state-of-the-art 49% on SWE-Bench Verified by using a minimal agent framework that gives the model full control via tools like bash and file editing, letting it self-correct without hard-coded workflows. He details the importance of tool design over prompt engineering, why XML tags work well, and how computer use reduces integration friction by letting models interact with any browser-based interface. Schluntz also shares his robotics experience, noting that while LLMs and diffusion models are promising for general-purpose robots, reliability at 99.9% and hardware variability remain major hurdles, and he expresses skepticism about self-driving as a business due to high vehicle costs versus driver-equivalent revenue.

  1. 0:00Intro
  2. 3:39SWE-Bench
  3. 15:21Agent Runtime
  4. 24:50Tool Design
  5. 35:21Multi-Agent
  6. 37:52XML Tags
  7. 42:54Frameworks
  8. 45:12Turn Limits
  9. 47:12Model Mixing
  10. 51:40Computer Use
  11. 59:04Robotics
  12. 1:09:21Self-Driving

Powered by PodHood

Transcript

Intro0:00

Alessio0:04

Hey everyone, welcome to the Latent Space Podcast. This is Alessio, partner and CTO at Decibel Partners, and today, uh, we're in the new studio, uh, with my usual co-host, uh, Shawn from Small AI.

Swyx0:15

Hey, and today we're very blessed to have Erik Schluntz from Anthropic with us. Welcome.

Erik Schluntz0:20

Hi. Thanks very much. Uh, I'm Erik Schluntz. I'm a member of technical staff at Anthropic, uh, working on tool use, computer use, uh, and SWE-bench.

Swyx0:28

Yeah. Um, well, how did you get into just the whole AI journey? Uh, I think, um, you spent some time with SpaceX as well-

Erik Schluntz0:36

Yeah, uh, very-

Swyx0:36

... and robotics. Yeah. There's a lot of overlap between, like, the robotics people and the AI people, and maybe, like, there's some inter-interlap or interest between language models for robots right now. Maybe, maybe just a little bit of background on how you got to where you are.

Erik Schluntz0:50

Yeah, sure. Um, I was at SpaceX a long time ago, but before joining Anthropic, I was the CTO and co-founder of Cobalt Robotics. We built security and inspection robots. Uh, these are sort of five-foot-tall robots that would patrol through an office building or a warehouse looking for anything out of the ordinary.

Uh, very friendly, no tasers or anything. We would just sort of call-

Swyx1:09

Yet

Erik Schluntz1:09

... a remote operator- ... uh, if we saw anything. And so we have, we have about 100 of those out in the world, and, uh, had a team of about 100. We actually got acquired about six months ago, but I had left Cobalt about a year ago now 'cause I was starting to get a lot more excited about AI.

I had been writing a lot of my code with things like Copilot, and I was like, "Wow, this is actually really cool." Like, if you had told me 10 years ago that AI would be writing a lot of my code, I would say, "Hey, I think that's AGI."

And so I kinda realized that we, we had passed this, this level where like, wow, this is actually really useful for engineering work. That got me a lot more excited about AI and learning about large language models. So I ended up taking a sabbatical, um, and then doing a lot of sort of reading and research myself, and decided, hey, like, I wanna go be at the core of this, and joined Anthropic.

Alessio1:54

And why, why Anthropic? Did you consider other labs? Did you consider maybe some of the robotics companies, uh?

Erik Schluntz2:01

So I think at the time I was a little burnt out of robotics, and so also for the rest of this, any, any sort of negative things I say about robotics or hardware is, uh, coming from a place- ...

of burnout and, you know, I reserve my right to change, change my opinion in a few years. Yeah, you know, I looked around, but ultimately I knew a lot of people that I really trusted and I thought were incredibly smart at Anthropic, and I think that was the big deciding factor to come there.

Of like, hey, this team's amazing. They're not just brilliant, but sort of like the most nice and kind people that I know, and so I just felt like it could be a really good culture fit. And ultimately, like, I do care a lot about AI safety and making sure that...

You know, I don't wanna build something that's used for bad purposes, um, and I felt like I had a- the best chance of that was joining, uh, Anthropic.

Alessio2:40

And from the outside, these labs kinda look like huge organizations that have these, like, obscure ways to organize. How did you get... You joined Anthropic. Did you already know you were gonna work on, like, SWE-bench and some of the stuff you publish?

Or you kinda join and then you figure out, uh, where you land? I think people are always curious to, to learn more.

Erik Schluntz2:57

Yeah. I've been very happy that Anthropic is very bottoms up and sort of very sort of receptive to whatever your interests are. Um, and so I joined sort of being very transparent of like, hey, I'm most excited about code generation and AI that can actually go out and sort of touch the world or sort of help people build things.

And, you know, those weren't my initial, uh, initial projects. I also came in and said, "Hey, I wanna do the most valuable possible thing for this company and help Anthropic succeed, and, you know, like, let me find the balance of those."

So I was working on lots of things at the beginning, um, you know, function calling, tool use, uh, and then sort of as it became more and more relevant, I was like, "Oh, hey, yeah, like let's- it's time to go work on encoding agents," and sort of started looking at SWE-bench as sort of a really good benchmark, uh, for that.

SWE-Bench3:39

Swyx3:39

So let's get right into SWE-bench. That's one of the many claims to fame. I feel like there's just been a series of releases related with Claude 3.5 Sonnet. Around about two, three months ago, 3.5 Sonnet came out, um, and it was, it was a step ahead in terms of, uh, a lot of...

People immediately fell in love with it for coding. And then last month, uh, you released a new updated version of, of Claude Sonnet. We're not gonna talk about the, the training for that 'cause that's still confidential, but I think Anthropic's done a really good job, like, applying the model to different things.

So you, you took the lead on SWE-bench, but then also we're gonna talk a little bit about computer use later on. So yeah, just maybe just give us the context about, like, why you looked at SWE-bench Verified and y- you actually, like, came up with a whole system for building agents that, you know, would maximally use the model well.

Erik Schluntz4:27

Yeah. So, uh, I'm on a subteam called product research, and basically the idea of product research is to really understand, like, what end customers care about and want in the models, and then work to try to make that happen.

So, you know, we're not focused on sort of these more abstract general benchmarks like math problems or MMLU, um, but we really care about, like, finding the things that are really valuable and making sure the models are great at those.

And so because I had been interested in coding agents, sort of I knew that this would be a really valuable thing, and I knew there were a lot of startups and our, our customers trying to build coding agents, uh, with our models.

And so I said, "Hey, this is gonna be a really good benchmark to be able to measure that and do well on it." And I, I, you know, wasn't the first person at Anthropic to find SWE-Bench. And, you know, there were lots of people that already knew about it and were-- um, had done some internal efforts, uh, on it.

It fell to me to sort of both implement the benchmark, um, which is very tricky, and then also to sort of make sure we had an agent, and basically like a reference agent, maybe I'd call it, that could do very well on it.

Ultimately, we want to provide how we implemented that reference agent so that people can build their own agents on top of our system and get sort of the most out of it as possible. So with this blog post, uh, we released on SWE-Bench, we released the exact tools and the prompt that we gave the model, uh, to be able to do well.

Swyx5:46

For people who don't know, who, who maybe haven't dived into SWE-Bench, I think the general perception is they're like tasks that a soft-software engineer could do. I feel like that's an inaccurate description because it is basically, um, one, it's a subset of like 12 repos.

It's everything they could find that every issue with like a matching commit that could be tested, so that's not every commit.

Erik Schluntz6:07

Yeah.

Swyx6:07

And then SWE-Bench Verified is further manually filtered by OpenAI. Is that an accurate description? Anything you'd change about that?

Erik Schluntz6:14

Yeah. SWE-Bench is-- it certainly is a subset of, you know, all tasks. It's, first of all, it's only Python repos, um, so already fairly limited there, and it's just 12 of these popular open source repos. Um, and then, yes, it's only ones where there were tests that passed at the beginning and also new tests that, uh, were introduced that, uh, that test the new feature, um, that's added.

So, you know, it, it is, I think, a very limited subset of real engineering tasks, but I think it's also very valuable because it's-- even though it's a subset, it is true engineering tasks. And I think a lot of other benchmarks are really kind of these much more artificial setups of even if they're related to coding, they're more like coding interview-style questions or puzzles that I think are very different from, like, day-to-day, uh, what you end up doing.

Like, I don't know how frequently, uh, you all, like, get to use recursion- ... uh, in your day-to-day job, but I-- when I- whenever I do, it's like a treat. Uh, and I think it is-- it's kind of-- it's almost comical, and a lot of people joke about this in the industry is like how different interview questions are-

Swyx7:13

Dynamic programming.

Erik Schluntz7:14

Uh, yeah, exactly-

Swyx7:15

Like leet code

Erik Schluntz7:16

... from, from the day-to-day job. But I think the-- one of the most interesting things about SWE-Bench is that all these other benchmarks are usually just isolated puzzles, and you're starting from scratch, whereas SWE-Bench, you're starting in the context of an entire repository.

And so it adds this entirely new dimension to the problem of finding the relevant files. And, you know, this is a huge part of real engineering is, you know, it's actually, again, pretty rare that you're starting something totally greenfield.

You need to go and figure out where in a code base you're gonna make a change and understand how your work is gonna interact with the rest of the systems. And I think SWE-Bench does a really good job of, like, presenting that, that problem.

Alessio7:52

Why do we still use HumanEval? It's like ninety-two percent, I think. I don't even know if you can actually get to a hundred percent because some of the data is not actually solvable. Do you see benchmarks like that, they should just get sunsetted?

Because when you look at, like, the model releases, it's like, oh, it's like ninety-two instead of like eighty-nine, ninety percent on HumanEval versus, you know, so SWE-Bench Verified is you have forty-nine percent, right? Which is like before forty-five percent was state-of-the-art, but maybe like six months ago it was like thirty percent, something like that.

So is that a benchmark that you think is gonna replace HumanEval, or do you think they're just gonna run in parallel?

Erik Schluntz8:28

I think there's still need for sort of, uh, many different varied evals. Like, sometimes you do really care about just sort of greenfield code generation, and so I don't think that everything needs to go to sort of an agentic setup SWE-Bench.

Alessio8:40

It'd be very expensive to implement.

Erik Schluntz8:41

Yes. I-- the other thing I was gonna say is that, um, SWE-Bench is certainly hard to implement and expensive to run because each task you have to parse, you know, a lot of the re-repo to understand where to put your code, and a lot of times you take many tries of writing code, running it, editing it.

It can use a lot of tokens compared to something like HumanEval. So I think there's definitely a space for these more traditional coding evals, um, that are sort of easy to implement, quick to run, uh, and do get you some signal.

And maybe hopefully there's just sort of harder versions of HumanEval-

Alessio9:13

Right

Erik Schluntz9:13

... uh, that get created.

Alessio9:14

How do we get SWE-Bench verified to ninety-two percent? Do you think that's something- Where it's like line of sight to it or it's like-

Erik Schluntz9:20

Mm

Alessio9:20

... you know, we need a whole lot of things to go right?

Erik Schluntz9:23

Yeah, yeah. A-and actually, uh, maybe I'll start with SWE-Bench versus SWE-Bench Verified, which is I think something I missed earlier. Um, so SWE-Bench is, as we described, this big set of, of tasks that were scraped, um-

Alessio9:33

Like twelve thousand or something.

Erik Schluntz9:35

Uh, yeah, I think it's, um, it's two thousand at-- in the final set. But a lot of those, even though a human did them, they're actually impossible given the information-

Alessio9:44

Mm

Erik Schluntz9:44

... uh, that comes with a task. The most classic example of this is the test looks for a very specific error string. You know, like assert, you know, message equals error something, something, something. And unless you know that's exactly what you're looking for, there's no way the model is gonna write that exact same error message, and so the tests are gonna fail.

So SWE-Bench Verified, um, was actually made in partnership with OpenAI, and they hired humans to go review all these tasks and pick out a subset to try to remove any obstacle like this that would make the tasks impossible.

So in theory, uh, all of these tasks should be fully doable by the model, and they also had humans grade how difficult they thought the problems would be between like fifteen-- less than fifteen minutes, I think fifteen minutes to an hour, an hour to four hours, and greater than four hours.

Um, so there's kind of this interesting sort of, uh, how big the problem is as well. To get to SWE-Bench Verified to ninety percent... Actually, maybe I'll also start off with some of the remaining failures that I see, like when running our model on SWE-Bench.

I'd say the biggest cases are the model sort of operates at the wrong level of abstraction. And what I mean by that is the model puts in maybe a smaller band-aid when really the task is asking for a bigger refactor.

And some of those, you know, is the model's fault, but a lot of times if you're just seeing the, um, if you're just sort of seeing the GitHub issue, it's not exactly clear-

Swyx11:07

Mm

Erik Schluntz11:07

... like which way you should do. So even though these tasks are possible, there's still some ambiguity, uh, in how the tasks are described. That being said, I think in general, like language models frequently will produce like a, a smaller diff when possible rather than trying to do a big refactor.

I think another area sort of at least the agent we created didn't have any multimodal abilities, uh, even though our models are very good at vision. So I think that's just a, a missed opportunity. Uh, and if I read through some of the traces, there's some funny things where especially the tasks on Matplotlib, which is a graphing library-

Swyx11:36

Ooh

Erik Schluntz11:36

... the test script will like save an image, and the model will just say, "Okay, looks great" You know, without looking it, uh, looking at it. So there's certainly extra juice to squeeze there of just making sure the model really understands all the sides of the input that it's given, including multimodal.

But yeah, I think like getting to 92%, so this is something that I have not looked at but I'm very curious about. I want someone to look at like what is the union of all of the different tasks that have been solved by at least one attempt at SWE-Bench Verified.

Swyx12:03

Mm.

Erik Schluntz12:04

There's a ton of submissions to the benchmark, and so I'd be really curious to see how many of those 500 tasks at least someone has solved. And I think, you know, there's probably-

Swyx12:12

Right

Erik Schluntz12:12

... a bunch that none of the attempts have ever solved, and I think it'd be interesting to look at those and say, "Hey, is there some problem with these? Like are these impossible or are they just really hard and only a human could do them?"

Swyx12:22

Yeah, like specifically is there a category of problems that are still unreachable by any LLM a-agent?

Erik Schluntz12:28

Yeah. Yeah.

Swyx12:28

Uh-

Erik Schluntz12:28

I think there definitely are. The question is are those fairly, uh, inaccessible or are they just impossible because of the descriptions? But I think certainly some of the tasks, especially the ones that the human graders, uh, reviewed as like taking, uh, longer than four hours, extremely difficult.

I think we, we did a f- we got a few of them right, but not very many-

Swyx12:48

Mm-hmm

Erik Schluntz12:48

... um, at all in the benchmark.

Swyx12:49

And did those take less than four hours? They, they would, right?

Erik Schluntz12:52

They certainly did less than, yeah, than four hours.

Swyx12:54

Yeah. Is there a correlation of length of time with like human estimated time? You know what I mean? Or do we have sort of more of X paradox type situations where it's something super easy for a model, uh, but hard for a human?

Erik Schluntz13:06

I actually haven't done, um-

Swyx13:08

Correlation

Erik Schluntz13:08

... like done the stats on that-

Swyx13:09

Yeah

Erik Schluntz13:09

... but I think that'd be really interesting to see of like how many tokens does it take and how that, is that correlated with difficulty? What is the likelihood of success with difficulty? I think actually a really interesting thing, um, that I saw, one of my coworkers who was also working on this, uh, named Simon, he was focusing just specifically on the very hard problems, the ones that are said to take, uh, longer than four hours.

And he ended up sort of creating a much more detailed prompt than I used, and he got a higher score on the most difficult subset of problems but a lower score overall on the whole benchmark. And the prompt that I made, which is sort of much more simple and bare bones, got a higher score on the overall benchmark but lower score on the really hard problems.

And I think some of that is the, the really detailed prompt made the model sort of overcomplicate a lot of the easy problems, 'cause honestly, a lot of the SWE-Bench problems, they really do just ask for a band-aid where it's like, "Hey, this, you know, this crashes if this is none," and really all you need to do is put a check if none.

And so sometimes like trying to make the model think really deeply, like it'll, it'll think in circles and overcomplicate something, which certainly human engineers are capable of as well.

Swyx14:14

Mm.

Erik Schluntz14:14

Um, but I think there's some interesting thing of like the best prompt for hard problems might not be the best prompt for easy problems.

Alessio14:19

But how do we, how do we fix that? Are you supposed to fix it at the model level? Like h-how do I know what prompt I'm supposed to use?

Erik Schluntz14:26

Yeah, and I'll say this was a very small effect size, and so I think this is not... I think this isn't like worth obsessing over. But I would say that as people are building systems around agents, I think the more you can separate out the different kinds of work the agent needs to do, the better you can tailor a prompt for that task.

And I think that also creates a lot of like... For instance, if you were trying to make an agent that could both, you know, solve hard programming tasks and it could just like, you know, write quick test files for something that someone else had already made, the best way to do those two tasks might be very different prompts.

I see a lot of people build systems where they first sort of have a classification and then route the problem to two different prompts. Um, and that's sort of a very effective thing because, one, it makes the two different prompts much simpler and smaller, and it means you can have someone work on one of the prompts without any risk of affecting the other tasks.

So it creates like a nice separation of concerns.

Alessio15:21

Yeah. And the other model behavior thing you mentioned, they prefer to generate like shorter diffs. Why is that? Like is there a way you know, I, I think that's maybe like the the, the lazy, the lazy model question that people have is like, "Why are you not just generating the whole code instead of telling me to implement it?"

Agent Runtime15:21

Swyx15:36

Are you saving tokens?

Alessio15:38

Yeah, exactly. It's like-

Swyx15:39

It's like a conspiracy theory.

Alessio15:40

Yeah.

Swyx15:40

Yeah.

Alessio15:40

Yeah, yeah.

Erik Schluntz15:41

So there, there's two different things there. One is like the, I'd say maybe like doing the easier solution rather than the hard solution. And I'd say the second one, I think what you're talking about, like the lazy model, is like when the model says like dot dot dot-

Swyx15:51

Mm-hmm

Erik Schluntz15:52

... code remains the same here.

Swyx15:52

Code goes here.

Erik Schluntz15:53

Yeah.

Swyx15:53

I'm like, thanks, dude. Like

Erik Schluntz15:54

Um, I, I think, I think honestly like that just comes as like people on the internet will do stuff like that and like, dude, if you're talking to a friend and you asked them like to give you some example code, they would definitely do that.

Swyx16:05

Yeah.

Erik Schluntz16:05

They're not gonna go-

Swyx16:05

Draw a recipe, right? Yeah

Erik Schluntz16:06

... the whole thing.

Swyx16:07

Mm-hmm.

Erik Schluntz16:07

And so I think that's just a matter of like, you know, sometimes you actually do just, just want like the relevant changes. And so I think it's... This is something where a lot of times like, you know, the models aren't good at mind reading of like which one you want.

So I think that like the more explicit you can be in prompting to say, "Hey, you know, give me the entire thing, no, no elisions-

Swyx16:27

Yeah

Erik Schluntz16:27

... versus just give me the relevant changes," and that's something, you know, we want to make the models always better at following those kind of instructions.

Swyx16:33

I'll drop a couple of references here. Uh, we're recording this, like, a day after Dario, uh, Lex Fridman just dropped his five-hour pod with Dario and Amanda and, you know, the rest of the crew. And, uh, Dario actually made this interesting observation that, like, we actually don't want-- we complain about models being too chatty in text and then not chatty enough in code.

Erik Schluntz16:51

Yeah.

Swyx16:51

And so, like, getting that right is kind of a awkward bar-

Erik Schluntz16:55

Mm-hmm

Swyx16:55

... because, you know, you, you don't want it to yap i-in its responses, but then you also want it to be complete in, in code, and then sometimes not complete. Sometimes you just want it to diff, which, uh, is something that Anthropic has also released, uh, with, uh, you know, like, the, the fast edit stuff that you guys did.

And then the other thing I wanted to also double back on is the prompting stuff.

Erik Schluntz17:13

Mm-hmm.

Swyx17:13

You said, you said it was a small effect, but it was a noticeable effect in terms of, like, picking a prompt. I think we'll go into SWE-Agent i-in a, in a little bit. But I kind of reject the fact that you need to choose one prompt and, like, have your whole performance be predicated on that one prompt.

I think something that, uh, Anthropic has done really well is meta-prompting, prompting for a prompt. And so why can't you just develop a meta-prompt for, for all the other prompts? And, you know, if it's a simple task, make a simple prompt.

If it's a hard task, make a hard prompt. Obviously, I'm probably hand-waving a little bit, but I, I will definitely ask people to try the Anthropic Workbench meta-prompting system if they haven't tried it yet. I went to the build day recently at Anthropic HQ, and it's the closest I've, I've felt to an AGI, like, learning how to operate itself that...

Yeah, it's, it's, it's really magical.

Erik Schluntz17:58

Yeah, no, Claude is great at writing prompts for Claude. Um, and I think-

Swyx18:00

Right, so meta-prompting.

Erik Schluntz18:01

Yeah, yeah. The way I think about this is that humans, even, like, very smart humans, still use sort of checklists and use sort of scaffolding for themselves. Surgeons will still have checklists even though they're incredible experts. And certainly, you know, a very senior engineer needs less structure than a junior engineer, but there still is some of that structure that you wanna keep.

And so I always try to anthropomorphize the models and try to think about for a human sort of what is the equivalent, and that's sort of, you know, how I think about these things is how much instruction would you give a human with the same task?

Um, and do you-- would you need to give them a lot of instruction or, or a little bit of instruction?

Alessio18:36

Let's talk about the agent architecture maybe. So first, runtime. You let it run until it thinks it's done or it reaches 200k context window.

Swyx18:44

Mm-hmm.

Alessio18:45

How did you come up-

Swyx18:46

What's up with that?

Alessio18:46

Uh, yeah.

Erik Schluntz18:47

Yeah. Uh, I mean, this-- So I'd say that a lot of previous agent work built sort of these very hard-coded and rigid workflows where the model is sort of pushed through certain flows of steps. And I think to some extent, you know, that's needed with smaller models and models that are less smart.

But one of the things that we really wanted to explore was, like, let's really give Claude the reins here and not force Claude to do anything, but let Claude decide, you know, how it should approach the problem, what steps it should do.

And so really, you know, what we did is, like, the most extreme version of this is just give it some tools that it can call, and it's able to keep calling the tools, keep thinking, and then, yeah, keep doing that until it thinks it's done.

Uh, and that's sort of the most, the most minimal agent framework that we, we came up with, and I think that works very well. I think especially, uh, the new Sonnet 3.5 is very, very good at self-correction. It has a lot of, like, grit.

Claude will try things that fail and then try, you know, come back and sort of try different approaches, and I think that's something that you didn't see in a lot of previous models. Some of the existing agent frameworks that I looked at, they had whole systems built to try to detect loops and then see, oh, is the model doing the same thing, you know, more than three times?

Then we have to pull it out. And I think, like, the smarter the models are, the less you need that kind of extra scaffolding. So yeah, just giving the model tools and letting it keep sample and call tools until it thinks it's done was the most minimal framework that we could think of, and so that's what we did.

Alessio20:18

Yeah. So you're not pruning, like, bad paths from the context. If it tries to do something, it fails, you just burn all these tokens to bits.

Erik Schluntz20:25

Yes. And so this-

Swyx20:26

Wow

Erik Schluntz20:26

... I would say the downside of this is that this is sort of a very token expensive way to do this.

Swyx20:31

But still, it's very common to prune bad paths because models get stuck.

Erik Schluntz20:34

Yeah, but I'd say the, um, yeah, 3.5 is not getting stuck as much as previous models, and so yeah, we wanted to at least just try the most minimal thing. Uh, now I would say that, you know, there-- this is definitely an area of future research, especially if we talk about these problems that are going to take a human more than four hours.

Those might be things where we're gonna need to go prune bad paths, enable f- to let the model be able to accomplish this task within 200k tokens. So certainly, I think there's, like, future research to be done in that area.

But it's, it's not necessary to do well-

Alessio21:05

Yeah. Yeah

Erik Schluntz21:05

... on these benchmarks.

Swyx21:06

Another thing I always have, uh, questions about on context window things, there's a mini cottage industry of code indexers that have sprung up for large code bases like, like the ones in SWE-Bench. You didn't need them?

Erik Schluntz21:18

We didn't, and I think I'd say there's like two reasons for this. One is, like, SWE-Bench specific, and the other is a more general thing. The more general thing is that I think Sonnet is very good at we-- what we call agentic search, and what this basically means is letting the model decide how to search for something.

It gets the results, and then it can decide should it keep searching or is it done? Does it have everything it needs? So if you read through a lot of the traces of the SWE-Bench, the model is calling tools to view directories, list out things, view files, and it will, it will do a few of those until it, until it feels like it's found the file where the bug is, and then it will start working on that file.

And I think, like, again, this is all-- everything we did was about just giving Claude the full reins. So there's no hard-coded system. There's no search system that you're relying on getting the correct files into context. This just totally lets Claude do it.

Um-

Swyx22:11

Yeah, or embedding things into a vector database.

Erik Schluntz22:13

Yeah, exactly. Um-

Swyx22:15

Oops.

Erik Schluntz22:15

No, no, no. But again, this is very, very, uh, token expensive, and so certainly... And it also takes-

Swyx22:21

Yeah, yeah

Erik Schluntz22:21

... many, many turns.

Swyx22:22

Yeah, yeah.

Erik Schluntz22:23

And so certainly, if you wanna do something in a single turn, you need to do RAG and just pu- uh, push stuff into the first prompt.

Alessio22:28

Yeah. And just to make it clear, it's using the Bash tool, basically doing LS, looking at files, and then doing Cat-

Swyx22:34

To the following context

Erik Schluntz22:35

It can do that, but its, uh, its file editing tool also has a command in it called View that can view a directory. It's very similar to LS, um, but it just sort of has some nice sort of quality-of-life improvements.

Like it'll only do an LS sort of two directories deep so that the model doesn't get overwhelmed if it does this on a huge file. I would say actually we did more engineering of the tools than the overall prompt.

Um, but, like, the one other thing I want to say about this agentic search is that for SWE-Bench specifically, a lot of the tasks are bug reports, which means they have a stack trace in them, and that means right in that first prompt there's-

Swyx23:11

It tells you where to go

Erik Schluntz23:11

... there, it tells you where to go. Um, and so I think this is a very easy case for the model to find the right files versus if you're using this as a general coding assistant where there isn't a stack trace or you're asking it to insert a new feature.

I think there it's much harder to know which files, uh, to look at.

Swyx23:27

Mm.

Erik Schluntz23:28

And that might be an area where you would need to do more of this exhaustive search where an agentic search would take way too long.

Swyx23:34

As someone who spent the last, uh, few years in the JS world, it'll be interesting to see SWE-Bench JS because these stack traces are useless, um, because there's so much virtualization that we do. So they're very, very disconnected with, um, where the act- where the p- the code problems are actually appearing.

Erik Schluntz23:51

That makes me feel better about my limited front-end experience as I've, like, always struggled with that problem .

Swyx23:55

It's not your fault. Uh, we've, we've, uh, gotten ourself into a very, very complicated situation, and I'm not sure it's entirely needed. Uh, but, you know, if you talk to our friends at Vercel, they will say it is.

Erik Schluntz24:04

I will say, um, SWE-Bench just released SWE-Bench Multimodal, um, which I believe is either entirely JavaScript or largely JavaScript.

Swyx24:12

Oh.

Erik Schluntz24:12

And it's entirely things that have visual components to them.

Swyx24:15

Okay.

Erik Schluntz24:15

Um, so-

Swyx24:15

Are you, are you gonna tackle that?

Erik Schluntz24:17

We will see. I think it's, it's on the list and there's interest, but no, no guarantees yet.

Swyx24:21

Just as a side note, it occurs to me that every model lab, including Anthopic, but, you know, the others as well, you should have your own SWE-Bench, whatever your bug tracker tool. Like this is a general me- methodology that you can use to track progress, I guess, for accelerating yourself.

Erik Schluntz24:35

Yeah, sort of running on our own internal code base.

Swyx24:37

Yeah.

Erik Schluntz24:37

Yeah, that's a fun idea.

Swyx24:38

Since you spent so much time on the tool design, so you have this edit tool that can make changes and whatnot, any learnings from that that you wish like the AI IDEs would take in? Is there some special way to like look at files, feed them in?

Tool Design24:50

Erik Schluntz24:51

I would say the core of that tool is string replace, and so we did a few different experiments with like different ways to specify how to edit a file, and string replace are basically the model has to write out the existing version of the string and then a new version, and that just gets swapped in.

We found that to be the most reliable way to do these edits. Other things that we tried were like having the model directly like write a diff, having the model fully regenerate files. That one is actually the most accurate, but it takes so many tokens, and if you're in a very big file, it, it's cost prohibitive.

There's basically a lot of different ways to sort of represent the same task, and they actually have pretty big differences in terms of like model accuracy. I think Eider, they have a really good blog where they, uh, they explore some of these different methods for editing files, and they post results about them, um, which I think is interesting.

But I, I think this is like a really good example of the broader idea that like you need to iterate on tools rather than just a prompt. And I think a lot of people when they make tools for an LLM, they kind of treat it like they're just writing an API for a, a computer, and it's sort of very minimal.

It's sort of just the bare bones of what you'd need. And honestly, like it's so hard for the models to use those. I really... Again, I come back to anthropomorphizing these models. Like imagine you're a developer and you just read this for the very first time and you're trying to use it.

Like you can do so much better than like just sort of the bare API spec of what you'd, you'd often see. Like include examples in the description. Include like really detailed explanations of how things work. And I think that, again, also think about what is the easiest way for the model to represent the change that it wants to make.

For file editing as an example, writing a diff is actually... L- let's take the most extreme example. You want the model to literally write a patch file. I think patch files have at the very beginning like numbers of how many total lines change.

That means before the model has actually written the edit, it needs to decide-

Swyx26:49

Yeah

Erik Schluntz26:49

... uh, you know, how many numbers or how many lines are gonna change. Don't quote me on that. Um, I'm pretty sure... I think, I think it's something like that, but I don't know if that's exactly the diff format.

But you can certainly have formats that are much easier to express without messing up than others. And I like to think about like think about how much human effort goes into designing human interfaces for things. Like it's incredible.

This is like entirely what front end is about, is creating better interfaces to kind of do the same things, and I think that same amount of attention and effort needs to go into creating agent computer interfaces.

Swyx27:20

It's a topic we've, uh, discussed, ACI or-

Erik Schluntz27:22

Yeah

Swyx27:22

... uh, whatever that looks like.

Erik Schluntz27:25

Mm-hmm.

Swyx27:25

I would also shout out that I think, uh, you released some of these toolings as part of Computer Use as well.

Erik Schluntz27:30

Yeah.

Swyx27:30

And people really liked it. Uh, the... Yeah. It, it's, it's all open source if people wanna check it out.

Erik Schluntz27:35

Yeah.

Swyx27:35

I'm curious if there's a, there's an environment element o- of that complements the tools. So how do you... Like do you have a sandbox? Do you... Is it just Docker? 'Cause that can be slow or resource intensive. Do you have anything else, um, that you recommend?

Erik Schluntz27:48

Yeah. I don't think I can talk about sort of public details-

Swyx27:51

Sure

Erik Schluntz27:51

... or a-about private details about how we implement our sandboxing.

Swyx27:54

Okay.

Erik Schluntz27:54

Um, but obviously, you know, we need to have sort of safe, secure, and fast sandboxes for training for the models to be able to practice writing code and, and-

Swyx28:02

Yeah

Erik Schluntz28:02

... working in an environment.

Swyx28:03

I'm aware of a few startups working on agent sandboxing. E2B is a, is a close friend of ours that, uh, Alessio has led a round in, but also I think there's others where they're focusing on snapshotting memory so they can do time travel for-

Erik Schluntz28:15

Mm. Mm

Swyx28:16

... debugging computer use where you can control the mouse-

Erik Schluntz28:19

Yeah

Swyx28:20

... or keyboard or something like that. Whereas here, I think the, the kinds of tools that we offer it are very, very limited to coding agent work cases like bash, edit, you know, stuff like that.

Erik Schluntz28:30

Yeah. I think the, the computer use demo that we released sort of is an extension of that, of it. It has the same bash and edit tools, but it also has the computer tool that lets it get screenshots and move the mouse and keyboard.

Yeah, so I definitely think there's sort of more general tools there. And again, like the tools we released as part of SWE-Bench were, I'd say they're very specific for like editing files and doing bash, but at the same time, that's actually very general if you think about it.

Like anything that you would do on a command line or like editing files, you can do with those tools. And so we do want those tools to feel like any sort of computer terminal work could be done, uh, with those same tools rather than making tools that were like very specific for SWE-Bench, like run tests, uh, as its own tool, for instance.

Swyx29:15

Yeah, you had a question about test writer.

Alessio29:16

Yeah, yeah, exactly. Uh, I saw there's no test writer tool. Is it because it generates the te- the code and then you run agai- against SWE-Bench anyway, so it doesn't really need to write the test or?

Erik Schluntz29:27

Yeah. So this is, this is one of the interesting things about SWE-Bench is that the tests that the model's output is graded on are hidden from it. That's basically so that the model can't cheat by looking at the tests-

Alessio29:38

Mm-hmm

Erik Schluntz29:38

... and writing the exact solution. But I'd say typically the model, the first thing it does is it usually writes a little script to reproduce the error. Uh, and again, most SWE-Bench tasks are like, "Hey, here's a bug that I found.

I run this and I get this error." So the first thing the model does is try to reproduce that. And so it's kind of then rerunning that script as a mini test. But yeah, sometimes the model will like accidentally introduce a bug that breaks some other test and it doesn't know about that.

Alessio30:06

And should we be redesigning any tools, APIs? We kind of talked about this and like having more examples, but I'm thinking even things of like queue as a query parameter in many APIs. It's like easier for the model to like re-query than read the queue.

I'm sure it learned the queue by this point, but like is there anything you've seen like building this where it's like, hey, if I were to redesign some CLI tool, some API tool, I would like change the way structure to make it better for LLMs?

Erik Schluntz30:32

I don't think I've thought enough about that off the top of my head, but certainly like just making everything more human-friendly, like having like more detailed documentation and examples. I think examples are really good in things like descriptions.

Like so many, like just using the Linux command line, like how many time I do like dash dash help or look at the man page or something, it's like, just give me one example of like how I actually use this.

Like I don't want to go read through 100 flags. Just give me the most common example.

Alessio30:58

Yeah.

Erik Schluntz30:59

Um, and again, so, you know, things that would be useful for a human I think are also very useful for a model.

Swyx31:03

Yeah. I mean, there's one thing that you cannot give to code agents that is useful for human is this access to the internet. I wonder how to design that in because one of the issues that I also had with just the, the, the idea of a SWE-Bench is that you can't g- do follow-up questions.

Erik Schluntz31:21

Yeah.

Swyx31:21

You can't like look around for similar implementations. These are all things that I do when I try to fix code.

Erik Schluntz31:27

Yeah.

Swyx31:28

And we don't do that. It's not-- it wouldn't be fair. Like it'd be, be too easy to cheat, but then also it's kind of not being fair to these agents because they're not operating in a real world situ-situation.

Like if I had a real world agent, of course I'm giving it access to the internet because I'm not trying to pass a benchmark. I don't have a question in there, more, more just like I feel like the most obvious tool, access to the internet, is not being used.

Erik Schluntz31:48

I think that, um, that's really important for humans, but honestly, the models have so much general knowledge from pre-training that it's a l- it's like less important for them.

Alessio31:57

But like versioning, you know.

Erik Schluntz31:58

If you're working on a newer thing that was like-

Alessio32:00

Yeah

Erik Schluntz32:00

... um, that came after the knowledge cutoff, then yes, I think that's very important. I think actually this, this is like a broader problem, that there is a divergence between SWE-Bench and like what customers will actually care about who are working on a coding agent for real use.

And I think one of those there is like internet access and being able to like how do you pull in outside information? I think another one is like if you have a real coding agent, you don't want to have it start on a task and like spin its wheels for hours because you gave it a bad prompt.

You want it to come back immediately and ask follow-up questions and like really make sure it has a very detailed understanding of what to do, then go off for a few hours and do work. So I think that like real tasks are gonna be much more interactive, um, with the agent rather than this kind of like one-shot system.

Alessio32:44

Mm.

Erik Schluntz32:45

And right now there's no benchmark that, that measures that. And maybe it- I think it'd be interesting to have some benchmark that is more interactive. I don't know if you're familiar with TauBench, but it's a, it's a customer service benchmark where there's basically one LLM that's playing the user or the customer that's getting support and another LLM that's playing the, uh, support agent, and they interact and try to resolve the issue.

Swyx33:08

Yeah, we talked to the, uh, LMSys guys.

Erik Schluntz33:09

Awesome. Yep.

Swyx33:10

Um, and they also did MT-Bench-

Erik Schluntz33:12

Okay. Yeah

Swyx33:12

... for, for people listening along.

Erik Schluntz33:13

Yeah.

Swyx33:13

So maybe we need MT SWE-Bench.

Erik Schluntz33:16

Um, yeah, so maybe, you know, you could have something where like before the SWE-Bench task starts, you have like a few back and forths with kind of like the, the author-

Swyx33:24

Ah

Erik Schluntz33:25

... who can answer follow-up questions about what they want the task to do.

Swyx33:28

Yes.

Erik Schluntz33:28

And of course, you'd need to do that where it doesn't cheat and like just get the exact- ... the exact thing out of the human-

Alessio33:34

Mm

Erik Schluntz33:34

... or out of the sort of user. But I think that would be a really interesting thing to see. If you look at sort of existing agent work like, uh, Replit's coding agent, I think one of the really, uh, great UX things they do is like first having the agent create a plan and then having the human approve that plan or give feedback.

I think for agents in general, like having a planning step at the beginning, one, just having that plan will improve performance on the downstream task just because it's kind of like a bigger chain of thought. But also it's just such a better UX.

It's, it's way easier for a human to iterate on a plan with a model rather than iterating on the full task that sort of has a much slower time through each loop. If the human has approved this implementation plan, I think it makes the end result a lot more sort of auditable and trustable.

Um, so I think, I think there's a lot of things sort of outside of SWE-Bench that will be very important for real agent usage in the world.

Swyx34:27

Yeah. I will say also there's a couple comments on names that you dropped. Copilot also does the, the plan stage before it writes code. I feel like those approaches have generally been less Twitter successful because it's not prompt to code, it's prompt plan code, you know.

So there's a little bit of friction in there, but it's not much. Like it's... It actually... It, it... You get a lot for what it's worth. And I also like the, the way that Devin does it where you can sort of edit the plan as it goes along.

Erik Schluntz34:52

Yeah.

Swyx34:53

And then, uh, the other thing with Replit, we had a-- we hosted a sort of dev day pregame with Replit, and they also commented about multi-agent, so like having two agents kind of bounce off of each other. I think it's a similar approach to what you're talking about with kind of the few shot example, just as in, in the prompt of clarifying what, what the, what the agent wants.

But typically, I think this would be implemented a-as a tool calling another agent, like a sub-agent. I don't know if you explored that. Do, do you like that idea?

Erik Schluntz35:21

I haven't explored this enough, but I've definitely heard of people having good success with this-

Multi-Agent35:21

Swyx35:25

Yeah

Erik Schluntz35:25

... of almost like basically having a few different sort of personas of agents, even if they're all the same LLM.

Swyx35:32

Yeah.

Erik Schluntz35:32

I think this is one thing with multi-agent that a lot of people kind of get confused by is they think it has to be different models behind each thing, but really it's sort of usually-

Swyx35:39

Different prompts

Erik Schluntz35:39

... the same, the same model with different prompts. And yeah, having one-- having them have different personas to kind of bring different sort of thoughts and priorities to the table, I've seen that, uh, work very well and sort of create a much more thorough and thought-out response.

I think the downside is just that it adds a lot of complexity, and it adds a lot of extra tokens. So I think it depends what you care about. If you want a plan that's very thorough and detailed, I think it's great.

If you want a really quick just like write this function, you know, you probably don't want to do that and, and have like a bunch of different calls before it does this.

Alessio36:11

And just talking about the prompt, why are XML tags so good in Claude? I think initially people were like, "Oh, maybe you're just getting lucky with XML," but it's o-obviously you use them in your own agent prompts, so they must work.

And why is it so model specific to your family?

Erik Schluntz36:27

Yeah. I think that there's... Again, I'm not sure how much I can say, but I think there's historical reasons that internally we've preferred XML for this.

Swyx36:34

It's in the data.

Erik Schluntz36:35

Um, I think also the one broader thing I'll say is that if you look at certain kinds of outputs, there is overhead to outputting in JSON. Like if you're trying to output, uh, code in JSON, there's a lot of extra escaping-

Alessio36:49

Mm-hmm

Erik Schluntz36:49

... that needs to be done, um, and that actually hurts model performance across the board. Where versus like if you're in just a single XML tag, there's none of that sort of escaping that needs to happen. That being said, I haven't tried having it write, you know, HTML in XML, which maybe then you start running into, into weird escaping things, uh, there.

But I'm not sure. But yeah, I'd, I'd say that's some historical reasons, and there's, there's less overhead of escaping.

Swyx37:13

I use XML in other models as well, and it's just a really nice way to make sure that the thing that ends is this- is tied to the thing that starts. It's the only way to do code fences where you're pretty sure like example one start, example one end, like that is one cohesive unit.

Alessio37:30

Because the braces are nondescriptive-

Swyx37:32

Yeah, exactly

Alessio37:33

... enough. Yeah.

Swyx37:33

So, uh, that would be my simple reason. XML is good for everyone, not just Claude.

Erik Schluntz37:38

Yeah.

Swyx37:38

Claude was just the first one to popularize it, I think.

Erik Schluntz37:39

I do definitely prefer to read XML than read JSON, so yeah.

Alessio37:43

Any other details that are like maybe underappreciated? I know for example you had the absolute paths versus relative. Any other, yeah, fun nuggets like that?

XML Tags37:52

Erik Schluntz37:52

Yeah, no, I think that's a good, uh, sort of anecdote to mention about iterating on tools. Like I said, you know, spend time prompt engineering your tools, and don't just write the prompt, but like write the prompt or write the tool and then actually give it to the model and like read a bunch of transcripts about how the model tries to use the tool.

And I think you will find, like by doing that, you will find areas where the model misunderstands a tool or makes mistakes, and then basically change the tool to make it foolproof. There's this Japanese te- uh, term, poka-yoke, about like making tools mistake-proof.

You know, the classic idea is you have like-- you can have like a plug that can fit either way and that's dangerous, or you can make it asymmetric so that like it can't fit this way. It has to go like this, and like that's a better tool because you can't use it the wrong way.

So for this example of like, uh, absolute paths, one of the things that we saw while testing these tools is, oh, if the model has like, you know, done CD and moved to a different directory, it would often get confused when trying to use the tool because it's like now in a different directory, and so the paths aren't lining up.

So we said, "Oh, well, like let's just force the tool to always require an absolute path," and then, you know, that's easy for the model to understand. It, it knows sort of where it is. It knows where the files are.

And then once we have it always giving absolute paths, it never messes up even like no matter where it is because it just... If you're using an absolute path, doesn't matter where you are. So like iterations like that, you know, let us make the tool foolproof for the model.

I'd say there's other categories of things where we see, oh, if the model, you know, opens Vim, like, you know, it's never gonna return, and so the tool is just-

Swyx39:28

It gets... Did it get stuck?

Erik Schluntz39:30

Yeah.

Swyx39:30

Yeah, yeah.

Alessio39:30

Get out of Vim.

Swyx39:31

What?

Erik Schluntz39:32

Yeah. Uh, it... Well, because the tool is like it's just text in, text out. It's not interactive.

Alessio39:36

No.

Erik Schluntz39:36

So if the... It's not like the model doesn't know how to get out of Vim. It's that the way that the tool is like hooked up to the computer-

Swyx39:43

Vim is a black hole

Erik Schluntz39:43

... is not interactive.

Swyx39:44

Mm.

Erik Schluntz39:44

Yes. I mean, there, there's, there is the meme of no one knows how to get out of Vim. You know, basically we just added instructions in the, the tool of like, hey, don't launch commands- ... that don't return.

Alessio39:54

Vim is bad.

Erik Schluntz39:54

Like, yeah, like don't launch Vim. Don't launch whatever. If you do need to do something, you know, put an ampersand after it to launch it in the background. And so like, uh, just, you know, putting kind of, uh, instructions like that just right in the description for the tool really helps the model.

And I think like that's an underutilized space of prompt engineering where like people might try to do that in the overall prompt. But just put that in the tool itself so the model knows that it's like for this tool-

Swyx40:19

Yeah

Erik Schluntz40:19

... this is, this is what's relevant.

Swyx40:20

You said you worked on the function calling and tool use before you actually started the SWE-Bench work, right? Was there any surprises? Because you basically ca- became from-- went from creator of that API to user of that API.

Any surprises or changes you would make now that you have extensively dogfooded in a s-s- you know, state-of-the-art agent? I want us to make like a maybe like a little bit less verbose SDK. I think some way-- Like right now it, it just takes, uh...

I think we sort of force people to do the best practices of writing out sort of these full, full JSON schemas, but it would be really nice if you could just pass in a Python function as a tool.

Um, I think that could be something nice.

Erik Schluntz40:58

Yeah. I think that there's a lot of like-

Swyx40:59

Pythonic-

Erik Schluntz41:00

There's helper libraries

Swyx41:00

... instructor, you know. I don't know if there-

Erik Schluntz41:03

Mm-hmm

Swyx41:03

... if there's anyone else that is specializing for Anthropic, maybe Jeremy Howard's and Simon Willison's stuff. Like they, they all, they all have Claude-specific stuff that they are working on.

Erik Schluntz41:12

Claudette.

Swyx41:13

Claudette, exactly. I also wanted to spend a little bit of time with SWE-Agent. It seems like a very general framework. Like is there a reason you picked it apart from it's the same authors as SWE-Bench, or?

Erik Schluntz41:22

The main thing we wanted to go with was it was the same authors-

Swyx41:25

Yeah

Erik Schluntz41:25

... as SWE-Bench. So it just felt sort of like the safest, most neutral option. And, and it was, you know, very high quality. It was very easy to, to modify, uh, to work with. It- I would say it also actually, their underlying framework is sort of this, um, it's like, you know, think, act, observe, that they-

Swyx41:42

Mm-hmm

Erik Schluntz41:42

... they kinda go through this loop, which is like a little bit more hard-coded than what we wanted to do, but it's still very close. That's still very general. So it felt like a good match as sort of the starting point, uh, for our agent.

And we'd already sort of worked with the, and talked with the SWE-Bench people directly, so it felt nice to just have, uh, you know, we already know the authors. This will be easy-

Swyx42:00

Yeah

Erik Schluntz42:00

... easy to work with.

Swyx42:01

I'll share a little bit of like this all seems disconnected, but once you figure out the people and where they go to school, it all makes sense. So they all-- It's all Princeton.

Erik Schluntz42:10

Yeah, the SWE-Bench and SWE-Agent. It's, it's a group out of Princeton.

Swyx42:13

Yeah.

Erik Schluntz42:13

Yeah.

Swyx42:13

And we had Shunyu on the pod, uh, and he came up with the REACT paradigm, and, and that's like think, act, observe. Like that, that's all REACT. So they're all friends.

Erik Schluntz42:21

Yep. Yeah, exactly. And you know, our-- Uh, if you actually read our traces of our submission, you can actually see like think, act, observe like in our logs and like-

Swyx42:30

Yeah

Erik Schluntz42:30

... we just didn't even like change the printing code. Like that's, uh, um, so it's, it's not actually-- It's like doing still function calls under the, under the hood, and the model can do sort of multiple function calls in a row without thinking in between if it wants to.

But yeah, so a lot of similarities and a lot of things we inherited from SWE-Agent just as a starting point for the framework. Yeah. Any thoughts about other agent frameworks? I think there's, you know, the whole gamut from very simple to like very complex.

Swyx42:54

Autogen, TrueAI, LangGraph.

Frameworks42:54

Erik Schluntz42:56

Yeah, yeah. I think, um, I haven't explored a lot of them in detail. I would say with agent frameworks in general, they can certainly save you some like boilerplate, but I think there's actually this like downside of making agents too easy, where you end up very quickly like building a much more complex system than you need.

Mm. And suddenly, you know, instead of having one prompt, you have five agents that are talking to each other and doing a dialogue, and it's like because the framework made that 10 lines to do, you end up building something that's way too complex.

So I think I would actually caution people to like try to start without these frameworks if you can because you'll be closer to the raw prompts and be able to sort of directly understand, uh, what's going on. I think a lot of times these frameworks also, by trying to make everything feel really magical, you end up sort of really hiding what the actual prompt and output of the model is, and that can make it much harder to debug.

So certainly these things have a place, and I think they do really help at getting rid of boilerplate, but they come with this cost of obfuscating what's really happening and making it too easy to very quickly add a lot of complexity.

Um, so yeah, I would recommend people to like try it from scratch, and it's like not that bad. Would you rather have like a framework of tools, you know? Do you almost see like, hey, like it's maybe easier to get tools that are already well curated, like the ones that you built, you know?

If I had an easy way to get the, uh, the best tool from you and like you maintain the definition or... Yeah, any thoughts on how you wanna formalize tool sharing? Yeah. I think that's something that we're certainly interested in exploring, and I think there, you know, is space for sort of these general tools that will be very broadly applicable.

But at the same time, most people that are building on these, they do have, you know, much more specific things that they're trying to do. But, you know, I think that might be useful for hobbyists and demos, but the ultimate end applications are gonna be bespoke.

And so we, we just wanna make sure that the model's great at any tool, um, that it uses. But certainly something we're exploring. So everything bespoke, no frameworks, no anything. Just, just build- For now, for now. Just, yeah, yeah, yeah.

I would say that like the best thing I've seen- Yeah ... is people building up from like build some good util functions, and then you can use those as building blocks. Yeah. Yeah. Yeah, I have a utils folder for like all these scripts.

My framework is like def call Anthropic, and then I just put all the defaults- Yep, exactly ... I don't need, I don't need to- There's a startup hidden in every utils folder, you know? No, totally. Like if you use it enough, like it's a startup, you know?

Turn Limits45:12

Erik Schluntz45:18

Like at some point. And I'm kinda curious, is there, is there a maximum length of turns, uh, that, that, that it took? Like what was the longest run? Um, I actually don't... I mean, we had-- We-- It had basically infinite turns until it ran into 200K context.

I, I, I should have looked this up. I don't know. And so for some of those failed cases where it eventually ran out of context, I mean, it, it was over 100 turns. I'm trying to remember like the longest successful run, but I think it was definitely over 100 turns that some of the times- Which is not that much.

It's a coffee break. Yeah. Yeah. Um, but certainly, you know, these things can be a lot of turns, and I think that's because some of these things are, are really hard, where it's gonna take, you know, many tries to do it.

Uh, and if you think about like think about a task that takes a human four hours to do. Like think about how many different like files you read and like times you edit a file in four hours. Like that's a lot more than 100.

Yeah. How many times you open Twitter- Yeah ... because you get distracted. But if you had a lot more compute, what's kinda like the return on the extra compute now? Yeah. So like, you know, if you had thousands of turns or like whatever, like how much better would it get?

Yeah. This I don't know, and I think this is, um, I think sort of one of the open areas of research in general with agents is memory and sort of how do you have something that can do work beyond, beyond its, uh, context length where you're just purely appending.

So you mentioned earlier things like pruning bad paths. I think there's a lot of interesting work around there of can you just roll back but summarize, "Hey- Mm-hmm ... don't go down this path," and things like that. There be dragons.

Yeah. Uh, I think that's very interesting, uh, that you could have something that, that uses way more tokens without ever ... using at a time more than 200K. So I think that's very interesting. I think the biggest thing is, like, can you make the model sort of losslessly summarize what it's learned from trying different approaches and bring things back?

Um, I think that's sort of the big challenge. What about different models? So you have Haiku, which is, like, you know, cheaper. So you're like, well, what if I have a Haiku to do a lot of these smaller things- Yeah ...

Model Mixing47:12

Erik Schluntz47:19

and then put it back up? I think Cursor might have said that they actually have a separate model for file editing. I'm trying to remember. I think they were on a, maybe the Lex Fridman podcast where they said, like, they have a bigger model, like write what the code should be, and then a different model, like apply it.

So I think there's a lot of interesting room for stuff like that. Yeah, fast apply. Um- We actually did a pod with Fireworks that, uh- It's awesome ... they, they worked with on. It's speculative decoding. Yeah. But I think there's also really interesting things about, like, you know, paring down input tokens as well, especially sometimes the model's trying to read, like, a 10,000-line file.

Like, that's a lot of tokens, and, you know, most of it is actually not gonna be relevant. I think it'd be really interesting to, like, delegate that to Haiku. Haiku read this file and just pull out the most relevant, uh, functions, and then, uh, you know, Sonnet reads just those, and you save 90% on tokens.

Um, I think there's a lot of really interesting room for things like that. And again, we were just trying to do sort of the simplest, most minimal thing and show that it works. I'm really hoping that people, sort of the agent community, builds things like that on top of our models.

That's again why we release these tools. You know, we're not gonna go and do lots more submissions to SWE-Bench and try to, try to prompt engineer this and build a bigger system. We want people to, like the ecosystem, to do that on top of our models.

But yeah, so I think that's a really interesting one. It turns out, I think you did do 3.5 Haiku with your tools, and it scored a 40.6. Yes. Yeah, so it did- Okay ... it did very well. It, it itself is actually very smart, which is great.

Um, but we haven't done any experiments with this, like a combination of the two models. Yeah. Um, but yeah, I think that's one of the exciting things is that, um, how well Haiku 3.5 did on SWE-Bench shows that sort of even our smallest, fastest model is very good at sort of thinking agentically and working on hard problems.

Like, it's not just sort of for writing simple text anymore. And I know you're not gonna talk about it, but, like, Sonnet is not even supposed to be the best model, you know? Like Opus, it's kinda like we left it at three- ...

back in the corner. At, at some point I'm sure the new Opus will come out, and if you had Opus plus Sonnet, that sounds- Yeah ... very, very good. There's a run with SWE-Agent plus Opus, but that's the official SWE-Bench guys doing it.

Yeah, that was the older, you know, 3.0. You didn't do yours. Yeah. Okay. Did you want to, or did you just- Or what, sorry? I mean, you could just change the model name. I think, um- I think we didn't submit it, but I think we included it in our model card.

Okay. We included the score as a comparison. Yeah. Um, yeah. And Sonnet and Haiku actually, I think- Still outperformed ... the new ones both- Yeah ... uh, they both outperformed the original Opus. Yeah, I did, I did see that.

Yeah, it's a little bit hard to find. Yeah. Um, but- Yeah, it, it's not an exciting score, so we didn't feel like the need to submit it- Yeah ... to- Yeah ... the benchmark. We can cut over to computer use if we're okay with, like, moving on to topics- Yeah, I think- ...

unless you have anything else. I think we're good. I think, uh, I'm trying to think if there's, like, anything else SWE-Bench related. It doesn't have to be also just, like, specifically SWE-Bench- Yeah ... but just your thoughts on building agents.

'Cause you are one of the few people that have, you know, reached this leaderboard on building a coding agent. Like there's-- this is the state-of-the-art. It's surprisingly, like, not that hard to reach, you know, given with some good principles, right?

But, like, there's obviously a ton of low-hanging fruit that we covered. Just, so just your thoughts on, like, if you were to build a coding agent startup, like maybe, like what next? I think the, the really interesting question for me, for all the startups out there is, like, this kind of divergence between the benchmarks and, like, what real customers will want.

So I, I'm curious, like, maybe the next time you have a coding agent startup on the podcast, you should ask them that. Like, what are the differences that they're starting to make? Tomorrow. Oh, perfect. Perfect.

Alessio50:40

Yeah.

Erik Schluntz50:41

Yeah. I, I'm actually very curious what they will see. 'Cause I also have seen... I feel like it's, like, slowed down a little bit, but I don't see the startups submitting to SWE-Bench that much anymore. 'Cause of the traces.

The traces. Yeah, okay. Uh, so we had Cosine on. Uh, they had a, like, a, like a 50-something on Full- Mm-hmm ... on SWE-Bench Full, which is the hardest one, and they were rejected because they didn't want to submit their traces.

Yep. IP, you know? Yeah. That makes sense. That makes sense. We actually tomorrow we're talking to Bolt, which is a Claude customer. You, you, you, you guys actually published a case study with them. I assume you weren't involved with, with that, but, um, they were very happy with Claude.

Cool. One of the biggest launches of the year.

Alessio51:19

Yeah, yeah, totally.

Erik Schluntz51:20

We actually happen to be sitting in Adept's former office. My take on this is Anthropic shipped Adept as a feature or as, as like an open source demo. It's still a beta feature. Yeah. It's still a beta feature, but, but yes.

What was it like when you, when you tried it for the first time? Was it, was it obvious that Claude had reached that stage where you could do computer use? It was somewhat of a surprise to me. Like, I think I actually, I had been on vacation, and I came back, and everyone's like, "Computer use works."

Computer Use51:40

Erik Schluntz51:45

Um, and so it was kind of this very exciting moment. I mean, after the first just like, you know, go to Google, I think I tried to have it play Minecraft or something, and it actually, like installed and, like opened Minecraft, and I was like, "Wow, this is pretty cool."

So I was like, wow, yeah, this thing can actually use a computer. Uh, and certainly again, it, it is still beta. You know, there's certain things that it's, it's not very good at yet. But I'm, I'm really excited, I think, most broadly, not just for like new things that weren't possible before, but as a much lower friction way to implement tool use.

One anecdote from my days at Cobalt Robotics, we wanted our robots to be able to ride elevators to go between floors and fully cover a building. The first way that we did this was doing API integrations with the elevator companies, and some of them actually had APIs.

We could send a request, and it would move the elevator. Each new company we did took like six months to do- ... 'cause they were, they were very slow. They didn't really care.

Alessio52:39

Right. We're an elevator.

Erik Schluntz52:40

Even-

Alessio52:40

It's not an API.

Erik Schluntz52:41

Yeah. Yeah, even installing, like once we had it with a company, they would have to like literally go install an API box on the elevator that we wanted to use, and that would sometimes, sometimes take six months. So very slow.

And eventually we were like, okay, this is, this is getting, like slowing down all of our customer deployments. And I was like, what if we just add an arm to the robot? And I added this little arm that could- Literally go and press the elevator buttons, and we use computer vision to do this.

And we could deploy that in a single day, uh, and have the robot being able to use the elevators. At the same time, it was slower than the API. It wasn't quite as reliable. You know, sometimes it would miss, and it would have to try to press it again.

But it would get there, but it was slower and a little bit less reliable. And I kinda see this as like an analogy to computer use of like anything you can do with computer use today, you could probably write tool use and like integrate it with APIs.

It's up to the language model. But that's gonna take a bunch of software engineering to write those integrations. You have to do all this stuff. With computer use, just give the thing a browser that's, that's logged into what you wanna integrate with, and it's gonna work immediately.

And I see that like reduction in friction as being incredibly exciting of like imagine like a customer support team where, okay, hey, you got this customer support bot, but you need to go integrate it with all these things, and you don't have any engineers on your customer support team.

But if you can just give the thing a browser that's logged into your systems that you need it to have access to, now suddenly in one day, you could be up and rolling with a fully integrated customer service bot that could go do all the actions you care about.

So I think that's the most exciting thing for me about computer use is like reducing that friction of integrations to almost zero.

Alessio54:19

Or farming on World of Warcraft.

Erik Schluntz54:22

Yes. Or, or that.

Alessio54:22

Just for computer use.

Erik Schluntz54:24

Yeah.

Alessio54:24

Very, very high-value use cases.

Erik Schluntz54:26

Yeah. I always say about this is, you know, this is like the oldest question in robotics or self-driving, which is, you know, do you drive by vision or you-- or do you have special tools? And vision is the universal tool to, to claim all tools.

There's trade-offs, but like there's situations in which that will, that will come. But, you know, this week's podcast, the one, the one that we just put out, had Stan Polew from, from Dust saying that he doesn't see a future where it's like the significant workhorse.

I think there could be a separation between maybe like the, the high-volume use cases you want APIs, and then the long tail you want computer use. I totally agree. Right? Yeah. Or you'll start-- you'll prototype something with computer use and then, hey, this is working, like customers have adopted this feature.

Okay, like let's go turn it into an API, and it'll be faster and, and use less tokens. Yeah. I'd be interested to see a computer use agent replace itself by figuring- Mm ... out the API and then just dropping out of the equ-equation altogether, you know?

Yeah. That sounds- It'd be great ... that's really fun, actually. If I was running an RPA company, like you would have the RPA scripting. RPA for people listening is robotic process automation, where you would script things that like always show up in sequence, so you don't have an LLM in the loop.

And so basically, what you need to do is train an LLM to code that script, and then you can, you can sort of naturally hand off from computer use to non-computer use or- Yeah. Or, or have some way to turn Claude's actions of computer use into a saved script- Yeah, yeah ...

that you can then run repeatedly. Yeah. It'd be interesting to record that.

Alessio55:49

Why did you decide to not ship any like sandbox harness for computer use? It's kinda like, "Hey, peace. Run at your own risk."

Erik Schluntz55:57

It's Docker, right?

Alessio55:58

Not even-

Erik Schluntz55:58

No, no, we- Well, yeah, but- ... we first launched it with a, I think a VM or Docker- Yeah ... a Dockerized system.

Alessio56:02

But it's not for your actual computer, right?

Erik Schluntz56:05

Yeah.

Alessio56:05

Like the Docker instance is like runs in the Docker.

Erik Schluntz56:08

Yeah.

Alessio56:08

It's not for-

Erik Schluntz56:09

Yeah, it runs its own browser.

Alessio56:10

Yeah.

Erik Schluntz56:10

I think, um, I mean, the main reason for that is one is sort of security. You know, we don't want... You know, the model can do anything.

Alessio56:16

Right.

Erik Schluntz56:17

Uh, so we wanted to give it a sandbox, not, not have people do their own computer, at least sort of for our default experience. We really care about providing a nice sort of making the default s-safe, I think is the, is the best way for us to do it.

And I mean, very quickly, people made modifications to let you run it on your own desktop. Uh, and that's fine. Someone else can do that, but we don't want that to be the official Anthropic- Yeah ... thing to run.

I would say also like from a product perspective right now, because this is sort of still in beta, I think a lot of the most useful use cases are like a sandbox is actually what you want. You want something where, hey, any-- it can't mess up anything in here.

It only has what I, what I gave it. Also, if it's using your computer, you know, you can't use your computer at the same time. Mm. I think you actually like want it to have its own screen. It's like you and a person pair programming, but only on- Oh, yeah ...

one laptop versus you have two laptops. Everyone should totally have a side laptop where computer use-- Claude is just doing his thing- Yeah, yeah ... and you just, you're just talking to it. I think it's just a better experience.

Yeah, yeah. Yeah. Unless there's something like very explicit you want it to do for you on your own computer. It becomes like you're sort of shelling into a remote machine and, uh, you know, maybe checking in on it every now and then.

Like I have fond memories of-- half our audience is gonna be too young to remember this, but Citrix- Mm ... like desktop experience. Like you would sort of you could- Sorry. ... you could sort of remote into a, a, a machine that someone else was operating.

Um, and for a long time, that would be how you did like enterprise, uh, computing.

Alessio57:38

TeamViewer.

Erik Schluntz57:40

Yeah. Yeah. It's coming back. Any other implications on computer use? You know, is it a fun demo, or is it like the future of Anthropic? I'm very excited about it. I think that like there's a lot of sort of very repetitive work that like computer use will be great for.

I think I've seen some examples of people build like coding agents that then also like test the front end that they made. Oh. Uh, so I think it's very cool to like use computer use to be able to close the loop on a lot of things- Mm ...

that right now just a terminal-based agent can't do. Um, so I think that's- Mm ... that's very exciting. It's kind of like end-to-end testing. Exactly. Yeah. Yeah, yeah. The end sort of front end and web testing is something I'm very excited about.

Yeah. I've seen Amanda also talking-- uh, this would be Amanda Askell, the head of Claude character. She goes on a lunch break, and it generates, um, you know, research ideas for her. Giving it a name like computer use is very practical.

It's like you're supposed to do things. But maybe sometimes it's not about doing things, it's about thinking, and thinking-- in the process of thinking, you're using the computer. Mm-hmm. In the same way that, you know, solving SWE-Bench, like you, you shou- you, you shouldn't be allowed to use the internet, or you should be allowed to use a computer to, to solve it and use your vision and use whatever.

Like we're, we're just sort of shackling it with all these restrictions just 'cause we wanna play nice for a benchmark. But really, you know, a full AI wish will be able to do all these things. Mm. To think.

Yeah. We'll definitely be able to- To reason ... to Google and search for things- Yeah ... and yeah, pull down inspiration.

Alessio58:59

Can we just do a, before we wrap, a robotics corner?

Erik Schluntz59:02

Oh, yeah, yeah.

Alessio59:03

People, people are always curious, especially with somebody that is not trying to hype their own company. What's the state of AI robotics? Under-hyped? Over-hyped?

Robotics59:04

Erik Schluntz59:11

Yeah. And I'll say, like, these are, these are my opinions, not Anthropic's. Um, and again, coming from a place of a burned-out robotics founder- ... uh, so take everything with a, with a grain of salt. I would say on the positives, like, there is really sort of incredible progress that's happened in the last five years that I think will be a big unlock for robotics.

The first is just general purpose language models. I mean, there was an old saying in robotics that if, if to fully describe your task is harder than to just do the task, you can never automate it 'cause, like, it's gonna take more effort to even tell the robot how to do this thing than to me just do it itself.

Alessio59:44

Mm.

Erik Schluntz59:44

LLM solved that. I no longer need to go exhaustively program in every little thing I could do. The thing just has common sense-

Alessio59:51

Wow

Erik Schluntz59:51

... and it's gonna know how do I make a Reuben sandwich. I'm not gonna have to go program that in.

Alessio59:56

Yeah.

Erik Schluntz59:56

Whereas before, like, the idea of even, like, a cooking thing, it's like oh, God, like, we're gonna have the team of engineers that are hard coding recipes for the long tail of anything you... Yeah, be a disaster. So I think that's one thing is that bringing common sense really is, like, solves this huge problem describing tasks.

The second big innovation has been diffusion models for path planning. A lot of this work came out of, uh, Toyota Research. There's a lot of startups now that are working on this, like Physical Intelligence, Pi, um, Chelsea Finn's startup out of Stanford.

And the basic idea here is, is using a little bit of the, um, I'd say maybe more inspiration from diffusion rather than diffusion models themselves, but they're a way to basically learn an end-to-end sort of motion control. Whereas previously, all of robotics motion control was sort of very hard-coded.

You either... You know, you're programming in explicit motions, or you're programming in an explicit goal and using an optimization library to find the shortest path to it. This is now something where you just give it a bunch of demonstrations and again, just like d- using learning, it's basically like learning from these examples h- what does it mean to go pick up a cup?

And doing these in a way just like diffusion models where they are, uh, somewhat conditioned by text, you can have it, the same model learn many different tasks. And then the, the hope is that these start to generalize, that if you've trained it on picking up coffee cups and picking up books, then when I say, "Pick up the backpack," it knows how to do that, too, uh, even though you've never trained it on that.

That's kind of the Holy Grail here is that you train it on 500 different tasks, and then that's enough to really get it to generalize to do anything you would need. I think that's, like, still a big TBD, and these people are working, have, like, measured some degree of generalization.

But at, at the end of the day, it's also like LLMs. Like, you know, do you really care about the thing being able to do something that no one has-

Alessio1:01:50

Right. Yeah

Erik Schluntz1:01:50

... ever shown it in training data? People, for like a home robot, there's gonna be, like, 100 things that people really want it to do, and you can just make sure it has good training for those things. What you do care about then is, like, generalization within a task of, "Oh, I've never seen this particular coffee mug before.

Can I still pick it up?" And those, the models do seem very good at. So these kind of are the two big things that are going for robotics right now is LLMs for common sense and diffusion-inspired path planning algorithms.

I think this is very promising, but I think there's a lot of hype and I think where we are right now is where self-driving cars were 10 years ago. I think we have very cool demos that work. I mean, 10 years ago you had videos of people-

Alessio1:02:32

They're driving

Erik Schluntz1:02:32

... driving a car on the highway-

Alessio1:02:33

Yeah

Erik Schluntz1:02:33

... driving a car, you know, on a street-

Alessio1:02:36

Mm

Erik Schluntz1:02:36

... with a safety driver. But it's really taken a long time to go from there to, I took a Waymo here today. Um, and even then, like Waymo is only in SF and a few other cities, and I think, uh, like it takes a long time for these things to actually, like, get everywhere and to get all the edge cases covered.

I think that for robotics, the limiting factor is gonna be reliability, that these models are really good at doing these demos of, like, doing laundry or doing dishes. If they only work 99% of the time, like that sounds good, but that's actually really annoying.

Like, humans are really good at these tasks. Like imagine if like one out of every 100 dishes it washed, it breaks. Like, you would not want that robot in your house, or you certainly wouldn't want that in your factory-

Alessio1:03:17

Mm-hmm

Erik Schluntz1:03:17

... if one of every 100 boxes that it moves, it drops and breaks things inside it. So I think for these things to really be useful, they're gonna have to hit a very, very high level of reliability, just like self-driving cars, and I don't know how hard it's gonna be for these models to move from like the 95% reliability to 99.9.

Um, I think that's gonna be the big thing. And I think also, like I'm a little skeptical of how good the unit economics of these things will be. These robots are gonna be very expensive to build. And if you're just trying to replace labor, like a one-for-one purchase, uh, it kinda sets an upper cap about how much-

Alessio1:03:57

Mm

Erik Schluntz1:03:57

... you can charge. And so, you know, it, it's, it seems like it's not that great a business. I'm also worried about that for the self-driving car industry.

Alessio1:04:04

Do you see most of the applications actually taking some of the older, especially manufacturing machinery, which is like it needs to be like very precise. Even if it's off by just a few millimeters, it can screw up the whole thing and be able to adjust at the edge.

Or do you think like the net new use cases may be like the more interesting?

Erik Schluntz1:04:23

I think it'd be very hard to replace a lot of those traditional manufacturing robots because everything relies on that precision.

Alessio1:04:30

Oh.

Erik Schluntz1:04:30

If you have a model that can, again, only get there 99% of the time, you don't want 1% of your cars to have the weld in the wrong spot. Like, that's gonna be a disaster.

Alessio1:04:38

Yeah.

Erik Schluntz1:04:39

Um, and a lot of manufacturing is all about getting rid of as much sort of, uh, variance and uncertainty as possible.

Alessio1:04:46

Yeah. And what about the hardware? A lot of my friends that work in robotics, one of their big issue is like sometimes you just have a servo that fails-

Erik Schluntz1:04:53

Yeah

Alessio1:04:53

... and then you gotta fa- and it takes a bunch of time to like fix that.

Erik Schluntz1:04:56

Yeah.

Alessio1:04:56

Is that holding back things-

Erik Schluntz1:04:57

Oh, yeah

Alessio1:04:57

... or is the software still anyway not there yet?

Erik Schluntz1:04:59

I, I think both. I think there's, there's been a lot more progress in the software in the last few years, and I think a lot of the humanoid robot companies now are really trying to build amazing hardware. Hardware is just so hard.

Um, it's something where-

Alessio1:05:10

Classic

Erik Schluntz1:05:11

... you know, you build your first robot and it works. You know, great. Then you build 10 of them, five of them work-

Swyx1:05:16

Yeah

Erik Schluntz1:05:16

... three of them work half the time, two of them don't work, and you built them all the same and you don't know why. And it's just like the real world has, like, this level of detail and differences that software doesn't have.

Like, imagine if every for loop you wrote, some of them just didn't work, some of them were slower than others. Like how do you deal with that? Like, imagine if every binary that you ship to a customer, each of those for loops was a little bit differently- was a little different.

Swyx1:05:40

Hmm.

Erik Schluntz1:05:40

It becomes just so hard to scale and sort of maintain quality, uh, of these things, and I think that's like, that's what makes hardware really hard is not building one of something, but repeatably building something-

Swyx1:05:50

Yeah

Erik Schluntz1:05:50

... and making it work reliably. Where, again, like you'll, you'll buy a batch of 100 motors and each of those motors will behave a little bit differently to the same input command.

Swyx1:06:00

This is your lived experience at Cobalt?

Erik Schluntz1:06:01

Yeah. And robotics is all about how do you build something that's robust despite these differences.

Swyx1:06:06

We can get the tolerance of motors down to-

Erik Schluntz1:06:08

It, it's just everything. You know, you'll have, um- Oh, my God.

Alessio1:06:12

It's actually everything that-

Erik Schluntz1:06:13

Yeah. No, I mean, one of, one of my horror stories was that at Cobalt, this was many years ago, we had, we had a thermal camera on the robot, um, that had a USB connection to the computer inside, which is, first of all, is a big mistake.

You're not supposed to use a USB. It is not a reliable protocol. It's designed that if there is mistakes, the user can just unplug it and plug it back in.

Swyx1:06:32

I see.

Erik Schluntz1:06:32

Um, and so typically things that are USB, they're not designed to the same level-

Swyx1:06:37

Yeah

Erik Schluntz1:06:37

... of like very high reliability-

Swyx1:06:38

That's good

Erik Schluntz1:06:39

... you need. But again, because they'd assume someone will just unplug it and replug it back in.

Swyx1:06:42

You just say, you just say someone sometime.

Erik Schluntz1:06:44

I, I heard this too, and I didn't listen to it. I really wish I had before.

Swyx1:06:47

Okay.

Erik Schluntz1:06:47

Anyway, at a certain point, a bunch of these thermal cameras started failing, and like we couldn't figure out why. And I asked everyone on the team, like, "Hey, what's changed? Like, did the software change around this? No. Did the hardware design change around this?

No." And I was like investigating all this stuff, like looking at like kernel logs of like what's happening with the, this thing. And finally, like the procurement person was like, it's like, "Oh yeah, well, like I found this new vendor for USB cables, uh, like last time."

And I was like, "What? You switched like which vendor we're buying USB cables from?" They're like, "Yeah, it's like the same exact cable. It's just like a dollar cheaper." And it turns out this was the problem is this new cable had slightly worse resistance-

Swyx1:07:25

Yeah

Erik Schluntz1:07:25

... or slightly worse EMI interference, and it, you know, didn't... It worked most of the time, but 1% of the time these cameras would fail and we'd need to like reboot a big part of the system. And it was all just 'cause like-

Swyx1:07:37

Hmm

Erik Schluntz1:07:37

... the same exact spec, these two different USB cables, like slightly different. And so these are the kind of things you deal with with hardware.

Swyx1:07:44

For listeners, we had a episode with Josh Albrecht of Imbue, where he talked about buying, you know, tens of thousands of GPUs and just some of them will just not do math.

Erik Schluntz1:07:52

Yeah. Yeah. It's the same thing. Yeah, you-

Swyx1:07:54

You like, you like run them, run some tests to find the bad batch, and then you return it to sender 'cause they, they just... GPUs won't do math, right?

Erik Schluntz1:08:01

Yeah. Yeah, this is the thing. Um, just- ... the real world has this level of detail. Uh, there's, um, Eric Jiang was at, uh... He did AI at Google-

Swyx1:08:09

Yeah, 1X.

Erik Schluntz1:08:10

And he... Yeah, and then joined 1X. I see him, uh, post on Twitter occasionally of like, um, you know, complaints about hardware and supply chain, and I, I... We, we know each other and we joke occasionally that we've like switched.

I went from robotics into AI, and he went from AI into robotics and-

Swyx1:08:23

Mm-hmm

Erik Schluntz1:08:24

... yeah.

Swyx1:08:25

It looked like very, very promising. The, the TAM of the real world is-

Erik Schluntz1:08:27

Yes

Swyx1:08:28

... unlimited, right? Uh, but just also a lot harder. And yeah, I do think like something I also tell people about for why working software agents is they're infinitely clonable.

Erik Schluntz1:08:37

Yes.

Swyx1:08:37

And they always work the same way, mostly unless you're- ... using Python. Uh, and, um, and, and yeah. I mean, like this is, this is like the whole thesis. I'm also interested like in... You, you dropped a little bit of, of alpha there.

I, I don't wanna... Make sure, make sure we don't l- lose it. Like, yeah, you're, you're just kinda skeptical of self-driving, uh, as a business. So I, I wanna like double-click on this a little bit because I, I mean, I, I think that that shouldn't be taken away.

Um, we, we do have some public Waymo numbers. Read from, from Waymo is, is, is pretty public with like their, their stats. They're exceeding 100 Waymo trips a week. If you assume like a $25 ride average, that's a $130 million revenue run rate.

At some point they will recoup their investment, right? Like what, what are we talking about here? Like why, uh, why the skepticism?

Erik Schluntz1:09:20

I think, and again, I'm, I'm not an expert. I don't know their financials.

Self-Driving1:09:21

Swyx1:09:23

Yeah.

Erik Schluntz1:09:23

I would say the thing I'm worried about is like, compared to an Uber, like I don't know how much an Uber driver takes home a year, but like call that the revenue that a Waymo is gonna be making in that same year.

Swyx1:09:33

Yeah.

Erik Schluntz1:09:33

Those cars are expensive. It's not about if you can hit profitability, it's about your cash conversion cycles. Like is building one Waymo, like how cheap can you make that compared to like how much you're earning sort of as the equivalent of what an Uber driver would take home?

'Cause remember, an Uber driver, you're not getting that whole revenue. Think about for the Uber driver, like the cost of the car, the depreciation of the car. I'm not convinced how much profit Waymo can actually make per car.

That, that's I think my skepticism.

Swyx1:10:01

Yeah.

Alessio1:10:01

Well, they need to, uh, Priuses-

Erik Schluntz1:10:03

Yeah

Alessio1:10:03

... to run Waymo because the Class C is like 110 grand, something like that.

Erik Schluntz1:10:07

Yes, exactly. That's-

Alessio1:10:07

Plus the LiDAR

Erik Schluntz1:10:08

... that's many years of-

Alessio1:10:09

Plus all the-

Erik Schluntz1:10:10

Yeah.

Alessio1:10:10

Yeah, yeah, yeah.

Erik Schluntz1:10:11

Yeah, exactly. Exactly.

Alessio1:10:12

Anything else? Parting thoughts, call to action, rants? The floor is yours. Or-

Erik Schluntz1:10:17

Yeah, I'm very excited to see a lot more LLM agents out there in the world doing things, and I think that like, I think there'll be... The biggest limiting thing will start to become like, do people trust the output of these agents?

And like, how do you trust the output of an agent that did five hours of work for you and is coming back with something? And if you can't find some way to trust that agent's work, it kinda wasn't valuable at all.

So I think that's gonna be a really important thing is not just doing the work, but doing the work in a trustable, auditable way where you can also explain to the human, "Hey, here's exactly how this works and why and how I came to it."

I think that's gonna be really important.

Swyx1:10:53

Thank you so much.

Alessio1:10:54

Thank you.

Erik Schluntz1:10:54

Yeah. Thanks. This was great.