SPEAKER_00
Music Please welcome to the stage, member of technical staff at Anthropic, Tharik Shihapar. Music Music [SPEAKER_01] Hey, everyone. I'm Tharik. I work at Anthropic on Cloud Code. [SPEAKER_01] Before we get started, we have a tradition on Cloud Code where we take a selfie before a talk.
SPEAKER_01
So, if you don't mind, if you strike a pose with me, I'll take a quick selfie at AI Engineer. Music Okay. Incredible. Well, yeah, to kick things off, Fable is back. We're rolling it out later today. Stay tuned for exact timeline.
SPEAKER_01
Me and Cat Woo and Simon Wilson will be doing a fireside chat at 12:30.
SPEAKER_01
We might have some updates for you then. But Fable is a model I'm just so, so excited about. It's one of those Anthropic models where you're just going to remember it.
SPEAKER_01
Sonnet 3.5 New, Opus 4, Opus 4.5. It's a model that I just have a lot of affection and excitement for. And the best way to describe Fable to me is the map is opening up. You know, you are playing an RPG and you've been on the tutorial. And now you get to the point where the open world starts, right? And there's so much that you can do and explore. But there's also a little bit intimidating and confusing, right? Because there's so much you can do. And so what I wanted to do in this talk is give you guys a field guide to Fable, right? How do you work with this new class of models? So I've got four parts to it.
SPEAKER_01
I've been working on this as a series of articles and blog posts. But when we announced Fable was coming out, I was like, okay, let me do all of this at once at the talk, speedrun. So there are four parts. Unhobbling Claude, finding your unknowns, dealing with the grief, and being unreasonable. So first, unhobbling Claude. But I think something we say really often is that the models are grown, not designed, right? We don't wake up and be like, we need 99% on Sweebench, right? The models are something we grow carefully. We give it data and feedback and compute. But ultimately, it's something that we figure out and learn with the model as we use it.
SPEAKER_01
And so, what that also means is that what contains them is us, right? The harness we put them in and the way we prompt them is basically a function of our understanding of Claude, right? And by unhobbling it, I mean how can we understand Claude better to unleash it? And we need to understand Fable more. So I think one of my points is that we're still so early. And I think there's a lot more understanding in Fable to unlock. And I think I'll give you a quick example about how models get smarter, because it's a little bit unintuitive, right? I saw this viral tweet a couple weeks ago being, why can't LLMs say which Pokemon end in AW? There are a thousand Pokemon, right?
SPEAKER_01
And it turns out there are two whose names end in AW, Croconaw and Dreadnought, right? And it turns out if you ask a normal chat model, it can't answer it. Which is kind of confusing, because, you know, it definitely knows all the names of the Pokemon, right? But if you ask Claude Code, it can, right? Because what it does is fetch every Pokemon and write a script to filter for AW, right? And so this is what I mean by unhobbling Claude. We call this capability overhang, right? Claude gets smarter in spiky ways. So it doesn't just remember every Pokemon and reason through it. But if you give it the code execution tool, it can find the two Pokemon's enemies.
SPEAKER_01
And then it ends with AW, right? And so this is part of the challenge with Fable: figuring out this capability overhang. What is now possible? And I think this is a discovery that I'm excited to go on with you. To make this a little bit clearer, I'm going to talk about a few different examples of how models have progressed in the past. One of the big examples, obviously, is chat. The chat models had to be given context, right? Maybe you paste in your code base. And maybe naively you might have thought the way we solve coding is by the context just getting really large. And I can just paste in my entire code base. It will be a hundred million context window.
SPEAKER_01
But it turns out that instead, if you give it arms, give it the bash tool and ways to work with the environment, it can build and search its own context. And that's what led to Claude Code, right? And so, again, spiky, a new innovation in how we think about and work with the model. And then recently we've rolled out Claude Tag. And what unlocked Claude Tag is its ability to work proactively and multiplayer. Claude Code, you know, is something that you have to prompt for it to do work, right? And this ability for Claude to wake itself up and do work is something that we think is unlocking the new wave of agents. But there's more here.
SPEAKER_01
So, for example, we recently removed 80% of the system prompt for Claude Code, right? And this is one of the ways in which models and what they need changes over time. So, originally, back in Sonnet 3.5 New, the best practices for a system prompt was a small system prompt, few tools, and lots of examples, right? And then as the models get smarter, you can give them more information and more instructions and they start following them. And so it's a larger system prompt with lots of examples and many tools, right? But most recently we found this new class of models wants fewer, wants a smaller system prompt.
SPEAKER_01
The examples tend to constrain it because it's actually more imaginative than the examples we give it. And so we try to give it context and not just constraints. We really try and avoid being like, do not do this, which is really necessary for the previous models. And so this is a way that the system prompt is changing and probably will continue to change. Another feature I really like is the ask user question tool. This is something I worked on when I first got to Cloud Code. And so it's a larger system prompt with lots of examples and many tools, right? But most recently we found this new class of models want fewer, want a smaller system prompt.
SPEAKER_01
The examples tend to constrain it because it's actually more imaginative than the examples we give it. And so we try to give it context and not just constraints. We really try and avoid being like, do not do this, which is really necessary for the previous models. And so this is a way that the system prompt is changing and probably will continue to change. Another feature I really like is the ask user question tool. This is something I worked on when I first got to Cloud Code. And it's when Cloud is planning or wants to ask you a question, it can show you a multiple-choice dialogue. For Opus 4, it could barely call it.
SPEAKER_01
I had to really tweak the tool to make sure that it would work, right? And then sometime at Opus 4.5, I was thinking, what if I asked it to ask me 40 questions about the spec? It could start interviewing me, right? And so its ability to ask questions jumped, right? And then most recently with Opus 4.8 and Fable, I can now build a whole HTML report with the questions embedded inside of them. And it's a whole new way of interacting with Cloud, right? And so this progression of how Cloud can get information from you has also changed. Speaking of which, Markdown and HTML is something I've also talked a lot about. Initially Markdown was a good output for the model.
SPEAKER_01
It could show a little bit of rich information. And then with plan mode, it started to be for you. You could understand what Cloud was about to do. And now Cloud can build you these in-depth HTML reports, right? And so again, a way of the models getting smarter in a spiky way. I really like to emphasize that this is closer to biology than physics, right? It's still very empirical, very organic. We don't know all the rules, but there is some sort of science behind it, right? There is an intuition to build as well. And so I really encourage you to treat Fable like that. One of my favorite papers that Anthropic has written is on the biology of a large language model.
SPEAKER_01
All of our research papers are meant to be read by people with various degrees of technical expertise, but this is one of my favorites. So if you're looking to learn a little bit more, I suggest you check it out. But so, yeah, we talked about unhobbling Claude. But it turns out when you're working with Fable, you also need to unhobble yourself, right? And so one of the things that I think a lot about is that the map is not the territory, right? When I'm working on a coding problem, the plan and prompt and spec that I have in my mind is the map, right? But the territory is the actual code base, the real world, the constraints that Claude needs to navigate, right?
SPEAKER_01
And whenever Claude runs into something in the territory that's not in the map, I call that an unknown, right? Claude has to figure out what to do about it. It's a decision point that I haven't specified. And Fable is one of the first models where I felt that I really have to figure out my unknowns, because if not, it's going to traverse such a large area that it's going to run into a lot of them. So how do you figure out your unknowns? Fable is bottlenecked by my ability to match the map and the territory to find my unknowns. So a few ways to think about this. I like to think of it in a matrix. So for any problem, I have a bunch of known knowns.
SPEAKER_01
This is usually what I write in my prompt. What do I want, right? Then I have known unknowns. Things that I know I don't really know yet, but I just haven't figured out yet. Then I've got unknown knowns. What's so obvious that I just wouldn't write it down, you know? But I know it when I see it, right? And then finally, unknowns, unknowns. What haven't I considered at all? What do I not know, right? What is something that, if I knew, could change how I prompt Claude? And luckily, you can use Claude, you can use Fable to find your unknowns. So I'm going to go over a few examples of how I do that with Fable. The first is I like to do what I call a blind spot pass.
SPEAKER_01
So I like to say something, like, hey, I'm working on a new auth provider that I know nothing about. In this code base, can you do a blind spot pass to help me figure out my relevant unknowns, known unknowns and help me prompt better, right? And so this might have Claude go through the auth module and figure out, oh, you know, this is a hairy little dead end that comes up a lot. Maybe search as my Git diff or Slack. I might tell it where there's context, right? So that I can learn about all the gotchas. And you can use this very broadly, right? You can use it to teach you about new fields. I recently did this for color grading when doing video editing.
SPEAKER_01
But I think it's really powerful and Fable is incredible at it. In many ways the model knows more about almost everything than I do. I just need to get it out of it. Then I like to use brainstorms and prototypes. This helps me figure out my unknown knowns, right? Things, especially for design, for me it's know it when you see it. Right? So I might ask it to create a dashboard. And I tell it I have no visual taste. Make me an HTML page with four wildly different design decisions so I can react to them. Right? And then you tweak this as you want, but the idea is to sort of get an idea of what are the things that you can't describe in words.
SPEAKER_01
Right? And work with the model to help figure that out.
SPEAKER_01
Things like, especially for design, for me it's know it when you see it. Right? So I might ask it to create a dashboard, and I tell it I have no visual taste. Make me an HTML page with four wildly different design decisions so I can react to them. Right? And then you tweak this as you want, but the idea is to get an idea of what are the things that you can't describe in words. Right? And work with the model to help figure that out. Then interviews. So once I have an idea of what I want to do, there's probably still a lot of unknowns here, right? Where I might not have considered something, I might not have specified it, and so I'll ask Claude to interview me. Right? And I'll give it a little bit more context. In any of these questions, giving it a little bit more context about you and the work and the stage you're at, hey, prioritize questions that would change the architecture, is extremely helpful. Then references. One of the best ways to give Claude a map is to give it another map. Right? So instead of me writing out the spec, I can just say, hey, here is some code that represents what I want to be done. Right? It could be in a different system or language. But just read this code, understand it, and then use that to start your work. Right? And again, this can be in a lot of different ways. If I'm making a React component, I might have an HTML mockup that is my map, right, that I pass in as a reference. I think this is really powerful, and Fable is really incredible at it. Something else I'd really appreciated is implementation notes. So if while you're running Fable, and it runs into an unknown, ask it to log it. Right? So that you can see where the deviations happened, and then you can figure out why as well. You know, it will usually give you some context about what happened. And then finally, I like to get Fable to quiz me about what happened, just to make sure I understand what I'm doing, and I can represent this work when I'm creating a PR or merging it. This is a really great way of making sure that you're really in the loop with Fable. And I think that's one of the most important parts of Fable, is staying in the loop and making sure that you get what you want. So those are some of my tips for working with Fable. I also want to say that the first time I used a Mythos class model, used Fable, I felt both a huge sense of gain, but also a sense of loss. And I wanted to talk a little bit about that. When I think about coding before LLMs, it feels like a foreign country. I used to run a YC startup, about 30 people, and we were constantly forced into tradeoffs because of how hard code was, right? Like, we could make the app fast, or we could try prototyping a new feature, and this might take a month, or this would take two months, and so we had to choose. It was really hard. And now I went back to that code base a couple weeks ago, and I thought about some of the things that I wanted to do, and it was way easier. It was the things that would have taken me weeks, I could do in hours. And at some point it's yeah, how can you not laugh, but also how can you not cry, honestly? It's one of these things where I really loved programming and writing code by hand. I loved the feeling of seeing the code base in my mind, and rotating it. But I also remember staying up late nights trying to debug, working on things for weeks without working, right? I just remember swimming in failure. I just remember that most of the projects I've ever worked on have failed. Most startups go bankrupt. I think just overall programming and coding is extremely hard, and as much as I enjoy those highs, I cannot go back, right? And my reflection here is the only way out is through, right? There's still a lot to learn with agentic coding. There's a lot to learn with Fable. But I think if we try really hard, and if we stay in the loop, we un-hobble it, we can get there. And we can come out on the other side with so much more. And so the last bit I wanted to talk about is the so much more part. I call this being unreasonable. One of my favorite parts of Anthropic is that we believe that tradeoffs are not real. I think that very often, in my previous company, I was very used to being reasonable. So I'd write down this list of priorities, and I'd be like, well, I guess we can prioritize this against this, right? And you know, that makes sense, so we'll this will be our priority this quarter. But what if you just did all of it? What if you force reality to show you the tradeoff? This is something I've really valued as our culture in Anthropic.
SPEAKER_01
In my previous company, I was very used to being reasonable. So I'd write down this list of priorities, and I'd be like, well, I guess we can prioritize this against this, right? And that makes sense, so we'll, this will be our priority this quarter. But what if you just did all of it? What if you force reality to show you the tradeoff, right? This is something I've really valued as our culture in Anthropic, and that my reflection going forward is that I'm gonna be a lot less reasonable. I think one of this, the math of Claude and Fable really changes how you think about tradeoffs, and there are so many tradeoffs that you make implicitly in your head, right? Like, good, fast, cheap, now it's pick three, right? I think that the best way to do more ambitious work is to reframe and make ourselves more ambitious. Because I think the only way to prove that agents work is to do the best work of our lives faster than ever before. You know, for example, I made this deck last night in about four hours with Fable. I feel like it's a deck I really like, and I really enjoyed it. But I also did it really fast. And I think that if you're here at AI Engineer, the world is kind of looking at you to prove that AI works, right? That it's not just a fad or something, but that it can make us more productive and also save us time. And that's my resolution for this year, the goal here is to work, be more productive but work less and spend more time with people I really care about. I think it's also worth calling out that building is easier, but generating value is still hard. And I think this is something that we run into as AI engineers sometimes, where we think so much about the process of building and our setups. But the point is to generate value, right? And there, it takes a lot of swings. It takes a lot of tries to find the valuable stuff. But that really is the goal. And that's what the world is looking to us to prove that AI can really transform it. So, to end, I just wanted to say, go explore, make it real, and, yeah, be less reasonable. Thank you. Thank you.
SPEAKER_01
that you, uh, you know, you can't describe in words. Right? And, uh, like work with the model to help figure that out. Uh, then, then interviews. So once I have an idea of like, you know, this is what I want to do, uh, there's probably still a lot of like, uh, unknowns here, right? Where I might not have considered something, I might not have specified it, and so I'll ask Claude to interview me. Right? And I'll give it a little bit more context. In any of these questions, like giving it a little bit more context about you and the work and the stage you're at, like, hey, yeah, prioritize questions that would change the architecture, is extremely helpful.
SPEAKER_01
Uh, then references. One of the best ways to give Claude a map is to give it another map. Right? So instead of me writing out the spec, uh, I can just say, hey, here is some code that represents what I want to be done. Right? It could be in a different, uh, system or language. Uh, but just read this code, understand it, and then use that to start your work. Right? And, uh, again, this can be in a lot of different ways. If I'm making a React component, I might have an HTML mockup that is my map, right, that I pass in as a reference. I think this is really, really powerful, and Fable is really incredible at it. Uh, something else I'd like really appreciated
SPEAKER_01
is implementation notes. So if, uh, while you're running Fable, uh, and it runs into an unknown, ask it to log it. Right? So that, um, you, uh, you can see where the deviations happened, and then you can sort of figure out why as well. You know, it will usually give you some context about what happened. And then finally, I like to get a Fable to quiz me about what happened, uh, just to make sure I understand what I'm doing, and I can represent this work, you know, when I'm creating a PR or merging it. Um, this is a really great way of, like, making sure that you're, like, really in the loop with Fable. And I think that's, like, one of the most important parts of Fable,
SPEAKER_01
is, like, staying in the loop and making sure that you, uh, you get what you want. So, um, those are some of my tips for working with Fable. Uh, I also want to say that the first time I used a Mythos class model, uh, used Fable, I felt both a huge sense of, like, gain, but also a sense of loss. And I wanted to talk a little bit about that, you know? Um, when I think about coding before LLMs, it feels like a foreign country. You know, like, I used to run a YC startup, about 30 people, and we were just constantly forced into tradeoffs because of how hard code was, right? Like, we could make the app fast, or we could try prototyping a new feature,
SPEAKER_01
and this might take a month, or this would take two months, and so we had to choose. It was just really, really hard. Um, and now I went back to that code base a couple weeks ago, and I thought about some of the things that I wanted to do, and, uh, it was just way easier. It was, like, the things that would have taken me weeks, I could do in hours, you know? And, uh, at some point it's like, yeah, like, how can you not laugh, but also how can you not cry, honestly? Like, it's, like, one of these things where, um, I really, really loved programming and writing code by hand. I loved the feeling of, like, seeing the code base in my mind, and, like, rotating it.
SPEAKER_01
But I also remember just, you know, like, staying up late nights trying to debug, working on things for weeks without working, right? I just remember swimming in failure. I just remember that, like, the most of the projects I've ever worked on have failed. Most startups go bankrupt, you know? I think just overall programming and coding is extremely hard, and, like, as much as I enjoy those highs, I cannot go back, right? And, uh, my reflection here is, like, the only way out is through, right? There's still a lot to learn with agentic coding. There's a lot to learn with Fable. Uh, but I think if we try really hard, and if we, like, stay in the loop,
SPEAKER_01
we un-hobble it, uh, we can get there, you know? And we can come out on the other side, uh, with just, um, so much more. And so the last bit I wanted to talk about is the so much more part, right? I call this being unreasonable. Um, one of my favorite parts of Anthropic is that we believe that tradeoffs are not real. Um, like, I think that very often, I, like, in my previous company, I was very used to being reasonable. So I'd, like, write down this list of priorities, and I'd be like, well, I guess we can prioritize this against this, right? Um, and, uh, like, you know, that makes sense, so we'll, we'll, this will be our priority this quarter.
SPEAKER_01
But what if you, uh, just did all of it, you know? What if you forest reality to show you the tradeoff, right? Um, this is something I've really valued as our culture in Anthropic, and that my reflection going forward is that I'm gonna be a lot less reasonable. Um, I think one of this, like, the math of Claude and Fable really changes how you think about tradeoffs, and there are so many tradeoffs that you make implicitly in your head, right? Like, good, fast, cheap, now it's pick three, right? Um, I think that, like, the best way to, like, do more ambitious work is to, uh, like, reframe and make, make ourselves more ambitious.
SPEAKER_01
Because I think the only way to prove that agents work is to do the best work of our lives faster than ever before. Um, you know, for example, I made this deck last night in about four hours with Fable. I feel like it's a, it's a deck I really like, and I, I really enjoyed it. But I also, um, you know, did it really fast. Uh, and I think that if you're here, you know, at AI Engineer, the world is kind of looking at you to prove that AI works, right? That it's not just, like, a fad or something, but that it can make us more productive and also save us time. And, and that's my resolution for this year, the goal here is to work, uh, be more productive
SPEAKER_01
but work less and spend more time with people I really care about. Uh, I think it's also worth calling out that building is easier, but generating value is still hard. And I think this is something that we run into, you know, as AI engineers sometimes, where we think so much about the process of building and our, our setups. Um, but the, the point is to generate value, right? And, uh, there, it takes a lot of swings. It takes a lot of tries to find the valuable stuff. Uh, but that really is the goal. And that's like, you know, again, what the world is looking to us to prove that AI can really transform it. So, to, to end, I just wanted to say, like,
SPEAKER_01
go explore, make it real, and, uh, yeah, be less reasonable. Thank you.
SPEAKER_01
Thank you.