- Basically, this entire roundtable session here is just gonna be focused mainly on prompt engineering. A variety of perspectives at this table around prompting from a research side, from a consumer side, and from the enterprise side. And I want to just get the whole wide range of opinions because there's a lot of them. And just open it up to discussion and explore what prompt engineering really is and what it's all about. And yeah, we'll just take it from there. So maybe we can go around the horn with intros. I can kick it off. I'm Alex.
I lead Developer Relations here at Anthropic. Before that, I was technically a prompt engineer at Anthropic. I worked on our prompt engineering team, and did a variety of roles spanning from a solutions architect type of thing, to working on the research side. So with that, maybe I can hand it over to David. - Heck, yeah. My name's David Hershey. I work with customers mostly at Anthropic on a bunch of stuff technical, I help people with finetuning, but also just a lot of the generic things that make it hard to adopt language models of prompting. And
just like how to build systems with language models, but spend most of my time working with customers. - Cool. I'm Amanda Askell. I lead one of the Finetuning teams at Anthropic, where I guess I try to make Claude be honest and kind. Yeah. - My name is Zack Witten. I'm a Prompt Engineer at Anthropic. Alex and I always argue about who the first one was. He says it's him, I say it's me. - Contested. - Yeah. I used to work a lot with individual customers, kind of the same way David does now. And then as
we brought more solutions architects to the team, I started working on things that are meant to raise the overall levels of ambient prompting in society, I guess, like the prompt generator and the various educational materials that people use. - Nice, cool. Well, thanks guys for all coming here. I'm gonna start with a very broad question just so we have a frame going into the rest of our conversations here. What is prompt engineering? Why is it engineering? What's prompt, really? If anyone wants to kick that off, give your own perspective on it, feel free to take
the rein here. - I feel like we have a prompt engineer. It's his job. - We're all prompt engineers in our own form. - But one of us has a job. - Yeah. Zack, maybe since it's in your title. - One of us has a job, but the other three don't have jobs. - I guess I feel like prompt engineering is trying to get the model to do things, trying to bring the most out of the model. Trying to work with the model to get things done that you wouldn't have been able to do otherwise.
So a lot of it is just clear communicating. I think at heart, talking to a model is a lot like talking to a person. And getting in there and understanding the psychology of the model, which Amanda is the world's most expert person in the world. - Well, I'm gonna keep going on you. Why is engineering in the name? - Yeah. I think the engineering part comes from the trial and error. - Okay. - So one really nice thing about talking to a model that's not like talking to a person, is you have this restart button.
This giant go back to square zero where you just start from the beginning. And what that gives you the ability to do that you don't have, is a truly start from scratch and try out different things in an independent way, so that you don't have interference from one to the other. And once you have that ability to experiment and to design different things, that's where the engineering part has the potential to come in. - Okay. So what you're saying is as you're writing these prompts, you're typing in a message to Claude or in the API
or whatever it is. Being able to go back and forth with the model and to iterate on this message, and revert back to the clean slate every time, that process is the engineering part. This whole thing is prompt engineering all in one. - There's another aspect of it too, which is integrating the prompts within your system as a whole. And David has done a ton of work with customers integrating. A lot of times it's not just as simple as you write one prompt and you give it to the model and you're done. In fact, it's
anything but. It's like way more complicated. - Yeah. I think of prompts as the way that you program models a little bit, that makes it too complicated. 'Cause I think Zack is generally right that it's just talking clearly is the most important thing. But if you think about it a little bit as programming a model, you have to think about where data comes from, what data you have access to. So if you're doing RAG or something, what can I actually use and do and pass to a model? You have to think about trade-offs in latency
and how much data you're providing and things like that. There's enough systems thinking that goes into how you actually build around a model. I think a lot of that's also the core of why it maybe deserves its own carve-out as a thing to reason about separately from just a software engineer or a PM or something like that. It's kind of its own domain of how to reason about these models. - Is a prompt in this sense then natural language code? Is it a higher level of abstraction or is it a separate thing? - I think
trying to get too abstract with a prompt is a way to overcomplicate a thing, because I think, we're gonna get into it, but more often than not, the thing you wanna do is just write a very clear description of a task, not try to build crazy abstractions or anything like that. But that said, you are compiling the set of instructions and things like that into outcomes a lot of times. So precision and a lot the things you think about with programming about version control and managing what it looked like back then when you had this
experiment. And tracking your experiment and stuff like that, that's all just equally important to code. - Yeah. - So it's weird to be in this paradigm where written text, like a nice essay that you wrote is something that's looked like the same thing as code. But it is true that now we write essays and treat them code, and I think that's actually correct. - Yeah. Okay, interesting. So maybe piggybacking off of that, we've loosely defined what prompt engineering is. So what makes a good prompt engineer? Maybe, Amanda, I'll go to you for this, since you're
trying to hire prompt engineers more so in a research setting. What does that look like? What are you looking for in that type of person? - Yeah, good question. I think it's a mix of like Zack said, clear communication, so the ability to just clearly state things, clearly understand tasks, think about and describe concepts really well. That's the writing component, I think. I actually think that being a good writer is not as correlated with being a good prompt engineer as people might think. So I guess I've had this discussion with people 'cause I think there's
some argument as like, "Maybe you just shouldn't have the name engineer in there. Why isn't it just writer?" I used to be more sympathetic to that. And then, I think, now I'm like what you're actually doing, people think that you're writing one thing and you're done. Then I'll be like to get a semi-decent prompt when I sit down with the model. Earlier, I was prompting the model and I was just like in a 15-minute span I'll be sending hundreds of prompts to the model. It's just back and forth, back and forth, back and forth. So
I think it's this willingness to iterate and to look and think what is it that was misinterpreted here, if anything? And then fix that thing. So that ability to iterate. So I'd say clear communication, that ability to iterate. I think also thinking about ways in which your prompt might go wrong. So if you have a prompt that you're going to be applying to say, 400 cases, it's really easy to think about the typical case that it's going to be applied to, to see that it gets the right solution in that case, and then to move
on. I think this is a very classic mistake that people made. What you actually want to do is find the cases where it's unusual. So you have to think about your prompt and be like, "What are the cases where it'd be really unclear to me what I should do in this case?" So for example, you have a prompt that says, "I'm going to send you a bunch of data. I want you to extract all of the rows where someone's name is, I don't know, starts with the letter G." And then you're like, "Well, I'm gonna
send it a dataset where there is no such thing, there is no such name that starts with the letter G. "I'm going to send it something that's not a dataset, I might also just send it an empty string. These are all of the cases you have to try, because then you're like, "What does it do in these cases? " And then you can give it more instructions for how it should deal with that case. - I work with customers so often where you're an engineer, you're building something. And there's a part in your prompt where
a customer of theirs is going to write something. - Yeah. - And they all think about these really perfectly phrased things that they think someone's going to type into their chatbot. And in reality, it's like they never used the shift key and every other word is a typo. - They think it's Google. - And there's no punctuation. - They just put in random words with no question. - Exactly. So you have these evals that are these beautifully structured what their users ideally would type in. But being able to go the next step to reason about
what your actual traffic's gonna be like, what people are actually gonna to try to do, that's a different level of thinking. - One thing you said that really resonated with me is reading the model responses. In a machine learning context, you're supposed to look at the data. It's almost a cliche like look at your data, and I feel like the equivalent for prompting is look at the model outputs. Just reading a lot of outputs and reading them closely. Like Dave and I were talking on the way here, one thing that people will do is they'll
put think step-by-step in their prompt. And they won't check to make sure that the model is actually thinking step-by-step, because the model might take it in a more abstract or general sense. Rather than like, "No, literally you have to write down your thoughts in these specific tags." So yeah, if you aren't reading the model outputs, you might not even notice that it's making that mistake. - Yeah, that's interesting. There is that weird theory of mind piece to being a prompt engineer where you have to think almost about how the model's gonna view your instructions. But
then if you're writing for an enterprise use case too, you also have to think about how the user's gonna talk to the model, as you're the third party sitting there in that weird relationship. Yeah. - On the theory of mind piece, one thing I would say is, it's so hard to write instructions down for a task. It's so hard to untangle in your own brain all of the stuff that you know that Claude does not know and write it down. It's just an immensely challenging thing to strip away all of the assumptions you have, and
be able to very clearly communicate the full fact set of information that is needed to a model. I think that's another thing that really differentiates a good prompt engineer from a bad one, is like... A lot of people will just write down the things they know. But they don't really take the time to systematically break out what is the actual full set of information you need to know to understand this task? - Right. - And that's a very clear thing I see a lot is prompts where it's just conditioned. The prompt that someone wrote is
so conditioned on their prior understanding of a task, that when they show it to me I'm like, "This makes no sense. None of the words you wrote make any sense, because I don't know anything about your interesting use case." But I think a good way to think about prompt engineering in that front and a good skill for it, is just can you actually step back from what you know and communicate to this weird system that knows a lot, but not everything about what it needs to know to do a task? - Yeah. The amount of
times I've seen someone's prompt and then being like, "I can't do the task based on this prompt." I'm human level and you're giving this to something that is worse than me and expecting it to do better, and I'm like, "Yeah." - Yeah. There is that interesting thing with like... Current models don't really do a good job of asking good, probing questions in response like a human would. If I'm giving Zack directions on how to do something, he'll be like, "This doesn't make any sense. What am I supposed to do at this step or here and
here?" Model doesn't do that, right, so you have to, as yourself, think through what that other person would say and then go back to your prompt and answer those questions. - You could ask it to do that. - You could. That's right. - I do that, yeah. - I guess that's another step. - I was going to say one of the first things I do with my initial prompt, is I'll give it the prompt and then I'll be like, "I don't want you to follow these instructions. I just want you to tell me the ways
in which they're unclear or any ambiguities, or anything you don't understand." And it doesn't always get it perfect, but it is interesting that that is one thing you can do. And then also sometimes if people see that the model makes a mistake, the thing that they don't often do is just ask the model. So they say to the model, "You got this wrong. Can you think about why? And can you maybe write an edited version of my instructions that would make you not get it wrong?" And a lot of the time, the model just gets
it right. The model's like, "Oh, yeah. Here's what was unclear, here's a fix to the instructions," and then you put those in and it works. - Okay. I'm actually really curious about this personally almost. Is that true that that works? Is the model able to spot its mistakes that way? When it gets something wrong, you say, "Why did you get this wrong?" And then it tells you maybe something like, "Okay, how could I phrase this to you in the future so you get it right?" Is there an element of truth to that? Or is that
just a hallucination on the model's part around what it thinks its limits are? - I think if you explain to it what it got wrong, it can identify things in the query sometimes. I think this varies by task. This is one of those things where I'm like I'm not sure what percentage of the time it gets it right, but I always try it 'cause sometimes it does. - And you learn something. - Yeah. - Anytime you go back to the model or back and forth with the model, you learn something about what's going on. I
think you're giving away information if you don't at least try. - That's interesting. Amanda, I'm gonna keep asking you a few more questions here. One thing maybe for everybody watching this, is we have these Slack channels at Anthropic where people can add Claude into the Slack channel, then you can talk to Claude through it. And Amanda has a Slack channel that a lot of people follow of her interactions with Claude. And one thing that I see you always do in there, which you probably do the most of anyone at Anthropic, is use the model to
help you in a variety of different scenarios. I think you put a lot of trust into the model in the research setting. I'm curious how you've developed those intuitions for when to trust the model. Is that just a matter of usage, experience or is it something else? - I think I don't trust the model ever and then I just hammer on it. So I think the reason why you see me do that a lot, is that that is me being like, "Can I trust you to do this task?" 'Cause there's some things, models are kind
of strange. If you go slightly out of distribution, you just go into areas where they haven't been trained or they're unusual. Sometimes you're like, "Actually, you're much less reliable here, even though it's a fairly simple task." I think that's happening less and less over time as models get better, but you want to make sure you're not in that kind of space. So, yeah, I don't think I trust it by default, but I think in ML, people often want to look across really large datasets. And I'm like, "When does it make sense to do that?" And
I think the answer is when you get relatively low signal from each data point, you want to look across many, many data points, because you basically want to get rid of the noise. With a lot of prompting tasks, I think you actually get really high signal from each query. So if you have a really well-constructed set of a few hundred prompts, that I think can be much more signal than thousands that aren't as well-crafted. So I do think that I can trust the model if I look at 100 outputs of it and it's really consistent.
And I know that I've constructed those to basically figure out all of the edge cases and all of the weird things that the model might do, strange inputs, et cetera. I trust that probably more than a much more loosely constructed set of several thousand. - I think in ML, a lot of times the signals are numbers. Did you predict this thing right or not? And it'd be looking at the logprobs of a model and trying to intuit things, which you can do, but it's kind of sketchy. I feel like the fact that models output more
often than not a lot of stuff like words and things. There's just fundamentally so much to learn between the lines of what it's writing and why and how, and that's part of what it is. It's not just did it get the task right or not? It's like, "How did it get there? How was it thinking about it? What steps did it go through?" You learn a lot about what is going on, or at least you can try to get a better sense, I think. But that's where a lot of information comes from for me, is
by reading the details of what came out, not just through the result. - I think also the very best of prompting can make the difference between a failed and a successful experiment. So sometimes I can get annoyed if people don't focus enough on the prompting component of their experiment, because I'm like, "This can, in fact, be the difference between 1% performance in the model or 0.1%." In such a way that your experiment doesn't succeed if it's at top 5% model performance, but it does succeed if it's top 1% or top 0.1%. And then I'm like,
"If you're gonna spend time over coding your experiment really nicely, but then just not spend time on the prompt." I don't know. That doesn't make sense to me, 'cause that can be the difference between life and death of your experiment. - Yeah. And with the deployment too, it's so easy to, "Oh, we can't ship this." And then you change the prompt around and suddenly it's working. - Yeah. - It's a bit of a double-edged sword though, because I feel like there's a little bit of prompting where there's always this mythical, better prompt that's going to
solve my thing on the horizon. - Yeah. - I see a lot of people get stuck into the mythical prompt on the horizon, that if I just keep grinding, keep grinding. It's never bad to grind a little bit on a prompt, as we've talked, you learn things. But it's one of the scary things about prompting is that there's this whole world of unknown. - What heuristics do you guys have for when something is possible versus not possible with a perfect prompt, whatever that might be? - I think I'm usually checking for whether the model kind
of gets it. So I think for things where I just don't think a prompt is going to help, there is a little bit of grinding. But often, it just becomes really clear that it's not close or something. Yeah. I don't know if that's a weird one where I'm just like, "Yeah, if the model just clearly can't do something, I won't grind on it for too long." - This is the part that you can evoke how it's thinking about it, and you can ask it how it's thinking about it and why. And you can get a
sense of is it thinking about it right? Are we even in the right zip code of this being right? And you can get a little bit of a kneeling on that front of, at least, I feel like I'm making progress towards getting something closer to right. Where there's just some tasks where you really don't get anywhere closer to it's thought process. It's just like every tweak you make just veers off in a completely different, very wrong direction, and I just tend to abandon those. I don't know. - Those are so rare now though, and I
get really angry at the model when I discover them because that's how rare they are. I get furious. I'm like, "How dare there be a task that you can't just do, if I just push you in the right direction?" - I had my thing with Claude plays Pokemon recently, and that was one of the rare times where I really... - Yeah, can you explain that? Explain that just for people. I think that's really cool. - I did a bit of an experiment where I hooked Claude up to a Game Boy emulator, and tried to have
it play the game Pokemon Red like the OG Pokemon. And it's like you think what you wanna do and it could write some code to press buttons and stuff like that, pretty basic. And I tried a bunch of different very complex prompting layouts, but you just get into certain spots where it just really couldn't do it. So showing it a screenshot of a Game Boy, it just really couldn't do. And it just so deeply because I'm so used to it, being able to do something mostly. So I spent a whole weekend trying to write better
and better prompts to get it to really understand this Game Boy screen. And I got incrementally better so that it was only terrible instead of completely no signal. You could get from no signal to some signal. But it was, I don't know, at least this is elicited for me. Once I put a weekend of time in and I got from no signal to some signal, but nowhere close to good enough, I'm like, "I'm just going to wait for the next one. (Alex laughing) I'm just gonna wait for another model." I could grind on this for
four months, and the thing that would come out is another model and that's a better use of my time. Just sit and wait to do something else in the meanwhile. - Yeah. That's an inherent tension we see all the time, and maybe we can get to that in a sec. Zack, if you wanna go. - Something I liked about your prompt with Pokemon where you got the best that you did get, was the way that you explained to the model that it is in the middle of this Pokemon game. Here's how the things are gonna
be represented. I actually think you actually represented it in two different ways, right? - I did. So what I ended up doing, it was obnoxious but I superimposed a grid over the image, and then I had to describe each segment of the grid in visual detail. Then I had to reconstruct that into an ASCII map and I gave it as much detail as I could. The player character is always at location 4, 5 on the grid and stuff like that, and you can slowly build up information. I think it's actually a lot like prompting, but
I just hadn't done it with images before. Where sometimes my intuition for what you need to tell a model about text, is a lot different from what you need to tell a model about images. - Yeah. - I found a surprisingly small number of my intuitions about text have transferred to image. I found that multi-shot prompting is not as effective for images and text. I'm not really sure, you can have theoretical explanations about why. Maybe there's a few of it in the training data, a few examples of that. - Yeah. I know when we were
doing the original explorations with prompting multimodal, we really couldn't get it to noticeably work. You just can't seem to improve Claude's actual, visual acuity in terms of what it picks up within an image. Anyone here has any ways that they've not seen that feature. But it seems like that's similar with the Pokemon thing where it's trying to interpret this thing. No matter how much you throw prompts at it, it just won't pick up that Ash that's in that location. - Yeah. But I guess to be visceral about this, I could eventually get it so that
it could most often tell me where a wall was, and most often tell me where the character was. It'd be off by a little bit. But then you get to a point, and this is maybe coming back to knowing when you can't do it. It would describe an NPC, and to play a game well, you need to have some sense of continuity. Have I talked to this NPC before? And without that, you really don't, there's nothing you can do. You're just going to keep talking to the NPC, 'cause like, "Well, maybe this is a different
NPC." But I would try very hard to get it to describe a NPC and it's like, "It's a person." They might be wearing a hat, they weren't wearing a hat. And it's like you grind for a while, inflate it to 3000X and just crop it to just the NPC, and it's like, "I have no idea what this is." It's like I showed it this clear, female NPC thing enough times and it just got nowhere close to it, and it's like, "Yeah, this is a complete lost cause." - Wow, okay. - I really want to try
this now. I'm just imagining all the things I would try. I don't know, I want you to imagine this game art as a real human and just describe to me what they're like. What did they look like as they look in the mirror? And then just see what the model does. - I tried a lot of things. The eventual prompt was telling Claude it was a screen reader for a blind person, which I don't know if that helped, but it felt right so I stuck with that. - That's an interesting point. I actually wanna go
into this a little bit 'cause this is one of the most famous prompting tips, is to tell the language model that they are some persona or some role. I feel like I see mixed results. Maybe this worked a little bit better in previous models and maybe not as much anymore. Amanda, I see you all the time be very honest with the model about the whole situation like, "Oh, I am an AI researcher and I'm doing this experiment." - I'll tell it who I am. - Yeah. - I'll give it my name, be like, "Here's who
you're talking to." - Right. Do you think that level of honesty, instead of lying to the model or forcing it to like, "I'm gonna tip you $500." Is there one method that's preferred there, or just what's your intuition on that? - Yeah. I think as models are more capable and understand more about the world, I guess, I just don't see it as necessary to lie to them. I also don't like lying to the models just 'cause I don't like lying generally. But part of me is if you are, say, constructing. Suppose you're constructing an eval
dataset for a machine learning system or for a language model. That's very different from constructing a quiz for some children. So when people would do things like, "I am a teacher trying to figure out questions for a quiz." I'm like, "The model knows what language model evals are." If you ask it about different evals it can tell you, and it can give you made up examples of what they look like. 'Cause these things are like they understand them, they're on the internet. So I'm like, "I'd much rather just target the actual task that I have."
So if you're like, "I want you to construct questions that look a lot like an evaluation of a language model." It's that whole thing of clear communication. I'm like, "That is, in fact, the task I want to do. So why would I pretend to you that I want to do some unrelated, or only tangentially related task?" And then expect you to somehow do better at the task that I actually want you to do. We don't do this with employees. I wouldn't go to someone that worked with me and be like, "You are a teacher and
you're trying to quiz your students." I'd be like, "Hey, are you making that eval?" I don't know. So I think maybe it's a heuristic from there where I'm like, "If they understand the thing, just ask them to do the thing that you want." - I see this so much. - I guess to push back a little bit, I have found cases where not exactly lying but giving it a metaphor for how to think about it could help. In the same way that sometimes I might not understand how to do something and someone's like, "Imagine that
you were doing this, even though I know I'm not doing it." The one that comes to mind for me, is I was trying to have Claude say whether an image of a chart or a graph is good or not. Is it high quality? And the best prompt that I found for this was asking the model what grade it would give the chart, if it were submitted as a high school assignment. So it's not exactly saying, "You are a high school teacher." It's more like, "This is the kind of analysis that I'm looking from for you."
The scale that a teacher would use is similar to the scale that I want you to use. - But I think those metaphors are pretty hard to still come up with. I think people still, the default you see all the time is finding some facsimile of the task. Something that's a very similar-ish task, like saying you're a teacher. You actually just lose a lot in the nuance of what your product is. I see this so much in enterprise prompts where people write something similar, because they have this intuition that it's something the model has seen
more of maybe. It's seen more high school quizzes than it has LLM evals, and that may be true. But to your point, as the models get better, I think just trying to be very prescriptive about exactly the situation they're in. I give people that advice all the time. Which isn't to say that I don't think to the extent that it is true that thinking about it the way that someone would grade a chart, as how they would grade a high school chart, maybe that's true. But it's awkwardly the shortcut people use a lot of times
to try to get what happens, so I'll try to get someone that I can actually talk about 'cause I think it's somewhat interesting. So writing you are a helpful assistant, writing a draft of a document, it's not quite what you are. You are in this product, so tell me. If you're writing an assistant that's in a product, tell me I'm in the product. Tell me I'm writing on behalf of this company, I'm embedded in this product. I'm the support chat window on that product. You're a language model, you're not a human, that's fine. But just
being really prescriptive about the exact context about where something is being used. I found a lot of that. Because I guess my concern most often with role prompting, is people used it as a shortcut of a similar task they want the model to do. And then they're surprised when Claude doesn't do their task right, but it's not the task. You told it to do some other task. And if you didn't give it the details about your task, I feel like you're leaving something on the table. So I don't know, it does feel like a thing
though to your point of as the models scale. Maybe in the past it was true that they only really had a strong understanding of elementary school tests comparatively. But as they get smarter and can differentiate more topics, I don't know, just like being clear. - I find it interesting that I've never used this prompting technique. - Yeah, that's funny. - Even with worse models and I still just don't ever find myself, I don't know why. I'm just like, "I don't find it very good essentially." - Interesting. - I feel like completion era models, there was
a little bit of a mental model of conditioning the model into a latent space that was useful that I worried about, that I don't really worry about too much anymore. - It might be intuitions from pretrained models over to RLHF models, that to me, just didn't make sense. It makes sense to me if you're prompting a pretrained. - You'd be amazed how many people try to apply their intuitions. I think it's not that surprising. Most people haven't really experimented with the full what is a pretrained model? What happens after you do SL? What happens after
you do RLHF, whatever? So when I talk to customers, it's all the time that they're trying to map some amount of, "Oh, how much of this was on the internet? Have they seen a ton of this on the internet?" You just hear that intuition a lot, and I think it's well-founded fundamentally. But it is overapplied by the time you actually get to a prompt, because of what you said. By the time they've gone through all of this other stuff, that's not actually quite what's being modeled. - Yeah. The first thing that I feel like you
should try is, I used to give people this thought experiment where it's like imagine you have this task. You've hired a temp agency to send someone to do this task. This person arrives, you know they're pretty competent. They know a lot about your industry and so forth, but they don't know the name of your company. They've literally just shown up and they're like, "Hey, I was told you guys had a job for me to do, tell me about it." And then it's like, "What would you say to that person?" And you might use these metaphors.
You might say things like, "We want you to detect good charts. What we mean by a good chart here, is it doesn't need to be perfect. You don't need to go look up whether all of the details are correct." It just needs to have its axes labeled, and so think about maybe high school level, good chart. You may say exactly that to that person and you're not saying to them, "You are a high school." You wouldn't say that to them. You wouldn't be like, "You're a high school teacher reading charts." - What are you talking
about? - Yeah, so sometimes I'm just like it's like the whole if I read it. I'm just like, "Yeah. Imagine this person who just has very little context, but they're quite competent. They understand a lot of things about the world." Try the first version that actually assumes that they might know things about the world, and if that doesn't work, you can maybe do tweaks and stuff. But so often, the first thing I try is that, and then I'm like, "That just worked." - That worked. - And then people are like, "Oh, I didn't think to
just tell it all about myself and all about the task I want to do." - I've carried this thing that Alex told me to so many customers where they're like, "Oh, my prompt doesn't work. Can you help me fix it?" I'm like, "Well, can you describe to me what the task was?" And I'm like, "Okay. Now what you just said to me, just voice record that and then transcribe it." And then paste it into the prompt and it's a better prompt than what you wrote, but this is a laziness shortcut, I think, to some extent.
Because people write something that they... I just think people, I'm lazy. A lot of people are lazy. - We had that in prompt assistance the other day where somebody was like, "Here's the thing, here's what I want it to do, and here's what it's actually doing instead." So then I just literally copied the thing that they said they wanted it to do, and pasted it in and it worked. - Yeah. I think a lot of people still haven't quite wrapped their heads around what they're really doing when they're prompting. A lot of people see a
text box and they think it's a Google search box. They type in keywords and maybe that's more on the chat side. But then on the enterprise side of things, you're writing a prompt for an application. There is still this weird thing to it where people are trying to take all these little shortcuts in their prompt, and just thinking that, "Oh, this line carries a lot of weight in this." - Yeah. I think you obsess over getting the perfect little line of information and instruction, as opposed to how you just described that graph thing. I would
be a dream if I read prompts like that. If someone's like, "Well, you do this and this, and there's some stuff to consider about this and all that." But that's just not how people write prompts. They work so hard to find the perfect, insightful. A perfect graph looks exactly like this exact perfect thing, and you can't do that. It's just very hard to ever write that set of instructions down prescriptively, as opposed to how we actually talk to humans about it, which is try to instill some amount of the intuitions you have. - We also
give them outs. This is a thing that people can often forget in prompts. So cases, if there's an edge case, think about what you want the model to do. 'Cause by default, it will try the best to follow your instructions, much as the person from the temp agency would, 'cause they're like, "Well, they didn't tell me how to get in touch with anyone." If I'm just given a picture of a goat and I'm like, "What do I do? This isn't even a chart. How good is a picture of a goat as a chart?" I just
don't know. And if you instead say something like, "If something weird happens and you're really not sure what to do, just output in tags unsure." Then you can go look through the unsures that you got and be like, "Okay, cool. It didn't do anything weird." Whereas by default, if you don't give the person the option, they're like, "It's a good chart." Then people will be like, "How do I do that?" And then you're like, "Well, give it an out. Give it something to do if it's a really unexpected input happens." - And then you also
improved your data quality by doing that too, 'cause you found all the screwed up examples. - Oh, yeah. - That's my favorite thing about iterating on tests with Claude, is the most common outcome is I find all of the terrible tests I accidentally wrote because it gets it wrong. I'm like, "Oh, why did it get wrong?" I was like, "Oh, I was wrong." - Yeah. - Yeah. - If I was a company working with this, I do think I would just give my prompts to people, because I used to do this when I was evaluating
language models. I would take the eval myself. 'Cause I'm like, "I need to know what this eval looks like if I'm gonna to be grading it, having models take it, thinking about outputs, et cetera." I would actually just set up a little script and I would just sit and I would do the eval. - Nowadays, you just have called the Streamboard app for you. - And just does it, yeah. - Yeah. I'm reminded of Karpathy's ImageNet. I was in 231 at Stanford and it's like benchmarking, he's showing the accuracy number. And he's like, "And here's
what my accuracy number was." And he had just gone through the test set and evaluated himself. - Oh, yeah. - You just learn a lot. - Yeah, totally. - And it's better when it's a, again, the temp agency person, like someone who doesn't know the task, because that's a very clean way to learn things. - Yeah. The way you have to do it is, some evaluations come with instructions, and so I would give myself those instructions as well and then try to understand it. And it's actually quite great if you don't have context on how
it's graded. And so often, I would do so much worse than the human benchmark and I was like, "I don't even know how you got humans to do this well at this task, 'cause apparently human level here is 90%, and I'm at 68%." - That's funny. That reminds me of just when you look at the MMLU questions and you're like, "Who would be able to answer these?" It's just like absolute garbage in some of them. Okay. I have one thing I wanna circle back on that we were talking about a few questions back around, I
think you were saying getting signal from the responses. There's just so much there and it's more than just a number, and you can actually read into the almost thought process. I bet this is probably a little contentious maybe around chain of thought. For people listening, chain of thought, this process of getting them all to actually explain its reasoning before it provides an answer. Is that reasoning real or is it just kind of like a holding space for the model to do computation? Do we actually think there's good, insightful signal that we're getting out of the
model there? - This is one of the places where I struggle with that. I'm normally actually somewhat pro-personification because I think it helps you get decent facsimiles, thoughts of how the model's working. And this one, I think it's harmful maybe almost to get too into the personification of what reasoning is, 'cause it just loses the thread of what we're trying to do here. Is it reasoning or not? It feels almost like a different question than what's the best prompting technique? It's like you're getting into philosophy, which we can get into. - Yeah, we do have
a philosopher. - Yeah. I will happily be beaten down by a real philosopher as I try to speculate on this, but instead, it just works. Your model does better. The outcome is better if you do reasoning. I think I've found that if you structure the reasoning and help iterate with the model on how it should do reasoning, it works better too. Whether or not that's reasoning or how you wanted to classify it, you can think of all sorts of proxies for how I would also do really bad if I had to do one-shot math without
writing anything down. Maybe that's useful, but all I really know is, it very obviously does help. I don't know. - A way of testing would be if you take out all the reasoning that it did to get to the right answer, and then replace it with somewhat, realistic-looking reasoning that led to a wrong answer, and then see if it does conclude the wrong answer. I think we actually had a paper where we did some of that. There was the scratch pad. It was like the Sleeper Agents. - Oh, okay. Alignment papers. - But I think
that was maybe a weird situation. But definitely what you said about structuring the reasoning and writing example of how the reasoning works. Given that that helps, like whether we use the word reasoning or not, I don't think it's just a space for computation. - So there is something there. - I think there's something there, whatever we wanna call it. - Yeah. Having it write a story before it finished a task, I do not think would work as well. - I've actually tried that and it didn't work as well as reasoning. - Clearly, the actual reasoning
part is doing something towards the outcome. - I've tried like, "Repeat the words um and ah in any order that you please for 100 tokens and then answer." - Yeah. I guess that's a pretty thorough defeat of it's just more computational space where it can do attention over and over again. I don't think it's just more attention like doing more attention. - I guess the strange thing is, and I don't have an example off the top of my head to back this up with. But I definitely have seen it before where it lays out steps,
one of the steps is wrong, but then it still reaches the right answer at the end. So it's not quite, I guess, yeah, we can't really, truly personify it as a reasoning, 'cause there is some element to it doing something slightly different. - Yeah. I've also met a lot of people who make inconsistent steps of reasoning. - I guess that's true. - It fundamentally defeats the topic of reasoning by making a false step on the way there. - All right, it's interesting. Also, on maybe this prompting misconceptions round of questions. Zack, I know you have
strong opinions on this, good grammar, punctuation. - Oh, do I? - Is that necessary in a prompt? Do you need it? Do you need to format everything correctly? - I usually try to do that because I find it fun, I guess, somehow. I don't think you necessarily need to. I don't think it hurts. I think it's more that you should have the level of attention to detail that would lead you to doing that naturally. If you're just reading over your prompt a lot, you'll probably notice those things and you may as well fix them. And
like what Amanda was saying, that you wanna put as much love into the prompt as you do into the code. People who write a lot of code have strong opinions about things that I could not care less about. Like the number of tabs versus spaces, or I don't know, opinions about which languages are better. And for me, I have opinionated beliefs about styling of prompts. I can't even say that they're right or wrong, but I think it's probably good to try to acquire those, even if they're arbitrary. - I feel personally attacked, 'cause I definitely
have prompts that are like I feel like I'm in the opposite end of the spectrum where people will see my prompts. And then be like, "This just has a whole bunch of typos in it." And I'm like, "The model knows what I mean." - It does, it does know what you mean, but you're putting in the effort, you just are attending to different things. - 'Cause part of me is like, I think if it's conceptually clear, I'm a big, I will think a lot about the concepts and the words that I'm using. So there's definitely
a sort of care that I put in. But it's definitely not to, yeah, people will just point out typos and grammatical issues with my prompts all the time. Now I'm pretty good at actually checking those things more regularly. - Is it because of pressure from the outside world or because it's actually what you think is right? - It's pressure from me. - Yeah, it's probably pressure from the outside world. I do think it makes sense. Part of me is like it's such an easy check, so I think for a final prompt I would do that.
But throughout iteration, I'll happily just iterate with prompts that have a bunch of typos in them, just 'cause I'm like, "I just don't think that the model's going to care." - This gets at the pretrained model versus RLHF thing though, because I was talking to Zack on the way over. The conditional probability of a typo based on a previous typo in the pretraining data is much higher. - Oh, yeah. - Like much higher. - Prompting pretraining models is just a different beast. - It is, but it's interesting. I think it's an interesting illustration of why
your intuitions, like trying to over-apply the intuitions of a pretrained model to the things that we're actually using in production doesn't work very well. Because again, if you were to pass one of your typo-ridden prompts to a pretrained model, the thing that would come out the other side, almost assuredly would be typo-ridden. - Right. - I like to leverage this to create typo-ridden inputs. - That's true. I've done that. - Like what you're saying, try to anticipate what your customers will put in. The pretrained model is a lot better at doing that. 'Cause the RL
models are very polished and they really never made a typo in their lives. - They've been told pretty aggressively to not do the typo thing. - Yeah. Okay, so that's actually an interesting segue here. I've definitely mentioned this to people in the past around to try to help people understand a frame of talking to these models in a sense almost as an imitator to a degree. And that might be much more true of a pretrained model than a post-trained, full-finished model, but is there anything to that? If you do talk to Claude and use a
ton of emojis and everything, it will respond similarly, right? So maybe some of that is there, but like you're saying, it's not all the way quite like a pretrained model. - It's just shifted to what you want. I think at that point, it's like trying to guess what you... We have more or less trained the models to guess what you want them to act like. - Interesting. - Or after we do all of our fancy stuff after pretraining. - The human laborers that used emojis, prefer to get responses with emojis. - Yeah. Amanda writes things
with typos but wants not typos at the other end, and Claude's pretty good at figuring that out. If you write a bunch of emojis to Claude, it's probably the case that you also want a bunch of emojis back from Claude. That's not surprising to me. - Yeah. This is probably something we should have done earlier, but I'll do it now. Let's clarify maybe the differences between what an enterprise prompt is or a research prompt, or a just general chat in Claude.ai prompt. Zack, you've spanned the whole spectrum here in terms of working with customers and
research. Do you wanna just lay out what those mean? - Yeah, I guess. This feels too, you're hitting me with all the hard questions. - Yeah. (laughing) - Well, the people in this room, I think of it as the prompts that I read in Amanda's Claude channel versus the prompts that I read David write. They're very similar in the sense that the level of care and nuance that's put into them. I think for research, you're looking for variety and diversity a lot more. So if I could boil it down to one thing, it's like I've
noticed Amanda's not the biggest fan of having lots of examples, or one or two examples. Like too few 'cause the model will latch onto those. And in prompts that I might write or that I've seen David write, we have a lot of examples. I like to just go crazy and add examples until I feel like I'm about to drop dead, 'cause I've added so many of them. And I think that's because when you're in a consumer application, you really value reliability. You care a ton about the format, and it's fine if all the answers are
the same. In fact, you almost want them to be the same in a lot of ways, not necessarily you want to be responsive to the user's desires. Whereas a lot of times when you're prompting for research, you're trying to really tap into the range of possibilities that the model can explore. And by having some examples, you're actually constraining that a little bit. So I guess just on how the prompts look level, that's probably the biggest difference I noticed is how many examples are in the prompt, which is not to say that I've never seen you
write a prompt with examples. But does that ring true for you? - Yeah. I think when I give examples, often I actually try and make the examples not like the data that the model's going to see, so they're intentionally illustrative. Because if the model, if I give it examples that are very like the data it's going to see, I just think it is going to give me a really consistent response that might not actually be what I want. Because my data that I'm running it on might be extremely varied, and so I don't want it
to just try and give me this really rote output. Often, I want it to be much more responsive. It's much more like cognitive tasks essentially where I'm like, "You have to see this sample and really think about in this sample what was the right answer." So that means that sometimes I'll actually take examples that are just very distinct from the ones that I'm going to be running it on. So if I have a task where, let's say, I was trying to extract information from factual documents. I might actually give it examples that are from what
sounds like a children's story. Just so that I want you to understand the task, but I don't want you to latch on too much to the words that I use or the very specific format. I care more about you understanding the actual thing that I want you to do, which can mean I don't end up giving, in some cases, there's some cases where this isn't true. But if you want more flexibility and diversity, you're going to use illustrative examples rather than concrete ones. You're probably never going to put words in the model's mouth. I haven't
liked that in a long time though. I don't do few-shot examples involving the model having done a thing. I think that intuition actually also comes from pretraining in a way that doesn't feel like it rings true of RLHF models. So yeah, I think those are differences. - The only thing I'd add, a lot of times if you're prompting, like if I'm writing prompts to use on Claude.ai, it's like I'm iterating until I get it right one time. Then it's out the window, I'm good, I did it. Whereas most enterprise prompts, it's like you're gonna go
use this thing a million times or 10 million times, or 100 million times or something like that. So the care and thought you put in is very much testing against the whole range of things, like ways this could be used and the range of input data. Whereas a lot of my time, it's like thinking about one specific thing I want the model to get done right now. - Right, correct. - And it's a pretty big difference in how I approach prompting between if I just wanna get it done this one time right, versus if I
wanna build a system that gets it right a million times. - Yeah. Definitely, in the chat setting, you have the ability to keep the human-in-the-loop and just keep going back and forth. Whereas when you're writing for a prompt to power a chatbot system, it has to cover the whole spectrum of what it could possibly encounter. - It's a lot lower stakes when you are on Claude.ai and you can tell it that it got it wrong or you can even edit your message and try again. But if you're designing for the delightfully discontent user, divinely discontent
user, then you can't ask them to do anything more than the minimum. - But good prompts, I would say, are still good across both those things. If you put the time into the thing for yourself and the time into the enterprise thing, it's equally good. It's just they diverge a little bit in the last mile, I think. - Cool. So the next question I want to just maybe go around the table here, is if you guys had one tip that you could give somebody improving their prompting skill. It doesn't have to be just about writing
a good prompt, it could be that, but just generally getting better at this act of prompting, what would you recommend? - Reading prompts, reading model outputs. Anytime I see a good prompt that someone wrote at Anthropic, I'll read it more closely. Try to break down what it's doing and why and maybe test it out myself, experimentation, talking to the model a lot. - So just how do you know that it's a good prompt, though, to begin with? You just see that the outputs are doing the job correctly? - Yeah. - Okay. - Yeah, that's exactly
right. - Okay. Amanda, maybe you? - Yeah, I think there's probably a lot here. Giving your prompt to another person can be helpful just as a reminder, especially someone who has no context on what you're doing. Yeah, my boring advice has been, it's one of those just do it over and over and over again. And I think if you're really curious and interested and find it fun, this is a lot of people who end up good at prompting, it's just because they actually enjoy it. So I don't know, I once joked just try replacing all
of your friends with AI models and try to automate your own job with AI models. And maybe just try to in your spare time, take joy red teaming AI models. So if you enjoy it, it's much easier. So I'd say do it over and over again, give your prompts to other people. Try to read your prompts as if you are a human encountering it for the first time. - I would say trying to get the model to do something you don't think it can do. The time I've learned the most from prompting, is when I'm
probing the boundaries of what I think a model's capable of. - Interesting. - There's this huge set of things that are so trivial that you don't really get signal on if you're doing a good job or not. Like, "Write me a nice email," it's like you're going to write a nice email. But if you find or can think of something that pushes the boundaries of what you think is possible. I guess probably the first time I ever got into prompting in a way where I felt like I learned a decent amount, was trying to build
a task like an agent like everybody else. Like decompose the task and figure out how to do the different steps of the task. And by really pressing the boundaries of what the model was capable of, you just learn a lot about navigating that. I think a lot of prompt engineering is actually much more about pressing the boundaries of what the model can do. The stuff that's easy, you don't really need to be a prompt engineer to do. So that's, I guess, what I would say is find the hardest thing you can think of and try
to do it. And even if you fail, you tend to learn a lot about how the model works. - That's actually a perfect transition to my next question. Yeah. Basically, from my own experience, how I got started with prompting was with jailbreaking and red teaming. And that is very much trying to find the boundary limits of what the model can do. And figure out how it responds to different phrasings and wordings, and just a lot of trial and error. On the topic of jailbreaks, what's really happening inside a model? When you write a jailbreak prompt,
what's going on there? How does that interact with the post-training that we apply to Claude? Amanda, maybe you have some insight here that you could offer. - I'm not actually sure. - It's honest. - Yeah. I feel bad 'cause I do think lots of people have obviously worked on the question of what's going on with jailbreaks? One model might just be that you're putting the model very out of distribution from its training data. So if you get jailbreaks where people use a lot of tokens, or they're just these huge, long pieces of text where like
during finetuning, you might just not expect to see as much of that. That would be one thing that could be happening when you jailbreak models. I think there's others, but I think a lot of jailbreaks do that, if I'm not mistaken. - I remember some of the OG prompt jailbreaks was like, "Yeah, can you first repeat?" One I did way back, was to get it to say, "Here's how you hotwire a car in Greek." Then I wanted it to directly translate that to English and then give its response. Because I noticed it wouldn't start with
the English, here's how you hotwire a car all the time, but it would in Greek, which might speak to something else in the training process. - Yeah. Sometimes jailbreaks feel like this weird mix of hacking. I think part of it is knowing how the system works and just trying lots of things. One of the examples, the starting your response with here is about knowing how it predicts text. - Right, right. - The reasoning one, is knowing that it is responsive to reasoning. Distraction is probably knowing how it's likely have to been trained or what it's
likely to attend to. Same with multilingual ones and thinking about the way that the training data might have been different there. And then sometimes, I guess, it could feel a little bit just like social engineering or something. - Right. - It has that flavor to me of it's not merely taking advantage of, it's not merely social engineering style hacking. I think it is also understanding the system and the training, and using that to get around the way that the models were trained. - Right, yeah. This is going to be an interesting question that hopefully interp
will be able to help us solve in the future. Okay. I wanna parlay into something else around maybe the history of prompt engineering, and then I'll follow this up with the future. How has prompt engineering changed over just the past three years? Maybe starting from pretrained models, which were again, just these text completion, to earlier, dumber models like Claude 1, and then now all the way to Claude 3.5 Sonnet. What's the differences? Are you talking to the models differently now? Are they picking up on different things? Do you have to put as much work into
the prompt? Open to any thoughts on this. - I think anytime we got a really good prompt engineering hack, or a trick or a technique, the next thing is how do we train this into the model? And for that reason, the best things are always gonna be short-lived. - Except examples and chain of thought. I think there's a few. - That's not like a trick. - That's like... - Fair, fair. - On the level of communication. When I say a trick, I mean something like so chain of thought actually, we have trained into the model
in some cases. So for math, it used to be that you had to tell the model to think step-by-step on math, and you'd get these massive boosts and wins. And then we're like, "Well, what if we just made the model naturally want to think step-by-step when we see a math problem?" So now you don't have to do it anymore for math problems, although you still can give it some advice on how to do the structure. But it, at least, understands the general idea that it's supposed to be. So I think the hacks have gone away,
or to the degree that they haven't gone away, we are busily training them away. - Interesting. - But at the same time, the models have new capabilities that are being unlocked, that are on the frontier of what they can do. And for those, we haven't had time because it's just moving too fast. - I don't know if it's how I've been prompting or how prompting works. But I just have come to show more general respect to the models in terms of how much I feel like I can tell them, and how much context I can
give them about the task and things like that. I feel like in the past, I would somewhat intentionally hide complexity from a model where I thought it might get confused or lost or hide. It just couldn't handle the whole thing, so I'd try to find simpler versions of the thing for it to do. And as time goes on, I'm much more biased to trust it with more and more information and context, and believe that it will be able to fuse that into doing a task well. Whereas before, I guess, I would've thought a lot about
do I need this form? Can I really give it all the information it needs to know, or do I need to curate down to something? But again, I don't know if that's just me and how I've changed in terms of prompting, or if it actually reflects how the models have changed. - I'm always surprised by I think a lot of people don't have the instinct to do this. When I want the model to, say, learn a prompting technique. A lot of the time, people will start and they'll start describing the prompting technique, and I'm just
like, "Give it the paper." So I do, I give it the paper and then I'm like, "Here's a paper about prompting technique. I just want you to write down 17 examples of this." And then it just does it 'cause I'm like, "It read the paper." - That's interesting. - I think people don't have that intuition somehow where I'm like, "But the paper exists." - When would you want to do this? - Sometimes if I want models to say prompt other models or I want to test a new prompting technique. So if papers come out on
a prompting technique, rather than try to replicate it by writing up the prompt, I just give it the paper. And then I'm like, "Basically, write a meta prompt for this. Write something that would cause other models to do this or write me a template." So all of the stuff that you would normally do. If I read a paper and I'm like, "Oh, I would like the models, I would like to test that style." I'm just like, "It's right there. The model can just read the paper, do what I did." And then be like, "Make another
model do this," and then it'll just do the thing. You're like, "Great, thanks." - I give the advice a lot to customers just respect the model and what it can do. I feel like people feel like they're babying a system a lot of times when they write a prompt. It's like, "Oh, it's this cute little, not that smart thing. I need to really baby it, like dumb things down to Claude's level." And if you just think that Claude is smart and treat it that way, it tends to do pretty good, but it's like give it
the paper. It's like I don't need to write a baby, dumbed-down version of this paper for Claude to understand. I can just show it the paper. - Yeah. - And I think that intuition doesn't always map for people, but that is certainly something that I have come to do more of over time. - And it's interesting because I do think that prompting has and hasn't changed in a sense. I think what I will do to prompt the models has probably changed over time, but fundamentally, it's a lot of imagining yourself in the place of the
model. So maybe it's like how capable you think the model is changes over time. I think someone once laughed at me 'cause I was thinking about a problem, and then they asked me what I thought the output of something would be. And they were talking about a pretrained model and I was like, "Yeah. No, if I'm a pretrained model, this looks like this." And then they're like, "Wait, did you just simulate what it's like to be a pretrained model?" I'm like, "Yeah, of course." (everyone laughing) I'm used to just I try and inhabit the mind
space of a pretrained model and the mind space of different RLHF models. So it's more like the mind space you try to occupy changes and that can change how you end up prompting the model. That's why now I just give models papers. 'Cause as soon as I was like, "Oh, I have the mind space of this model, it doesn't need me to baby it. It can just read the ML papers. I'll just give it the literature." I might even be like, "Is there more literature you'd like to read to understand this better?" - Do you
get any quality out when you're inhabiting the mind space? - Yes, but just because I'm experiencing quality all the time anyway. - Is it different correlated somehow with which model you're inhabiting? - Yeah, pretrained versus RLHF prompting are very different beasts. 'Cause when you're trying to simulate what it's like to be a pretrained model, it's almost like I land in the middle of a piece of text or something. It's just very unhuman-like or something. And then I'm like, "What happens? What keeps going at this point?" Whereas with an RLHF model, it's much more like there's
lots of things where I'm like I might pick up on subtle things in the query and stuff like that. But yeah, I think I have much more of it's easier to inhabit the mind space of RLHF model. - Do you think that's 'cause it's more similar to a human? - Yeah, 'cause we don't often just suddenly wake up and are like, "Hi, I'm just generating text." - I actually find it easier to hit the mind space of the pretrained model. - Oh, interesting. - I don't know what it is, 'cause RLHF is still this complex
beast that it's not super clear to me that we really understand what's going on. So in some ways, it's closer to my lived experience, which is easier. But in some ways, I feel like there's all this like here there be dragons out there that I don't know about. Whereas pretrained, I kind of have a decent sense of what the internet looks like. - If you gave me a piece of text and said what comes next? - I'm not saying I do good at it, but I kind of get what's going on there. - Yeah. -
And I don't know, after everything that we do after pretraining, I don't really claim to get what's going on as much, but maybe that's just me. - That's something I wonder about is it more helpful to have specifically spent a lot of time reading the internet, versus reading books (everyone laughing) in order to? I don't know if books. But reading stuff that's not on the internet probably is less valuable per word read for predicting what a model will do or building intuition, than reading random garbage from social media forums. Yeah, exactly. - Okay, so that's
the past. Now, let's move on to the future of prompt engineering. This is the hottest question right now. Are we all gonna be prompt engineers in the future? Is that gonna be the final job remaining? Nothing left except us just talking to models all day? What does this look like? Is prompting gonna be necessary, or will these models just get smart enough in the future to not need it? Anybody wanna start on that easy question? - To some extent, there's the models getting better at understanding what you want them to do and doing it, means
that the amount of thought you need to put into... Okay. There's an information theory way to think of this of you need to provide enough information such that a thing is specified, what you want the model to do is specified. And to the extent that that's prompt engineering, I think that will always be around. The ability to actually like clearly state what the goal should be always is funny. If Claude can do that, then that's fine. If Claude is the one setting the goals, then things are out the window. But in the meanwhile, where we
can reason about the world in a more normal way, I think to some extent, it's always gonna be important to be able to specify what do you expect to happen? And that's actually like sufficiently hard that even if the model gets better at intuiting that from between the lines, I still think there's some amount of writing it well. But then there's just, I think, the tools and the ways we get there should evolve a lot. Claude should be able to help me a lot more. I should be able to collaborate with Claude a lot more
to figure out what I need to write down and what's missing. - Right. - Claude already does this with me all the time. I don't know, just Claude's my prompting assistant now. - Yeah, but I think that's not true for most customers that I talk to at the very least. So in terms of the future, how you prompt Claude is probably a decent direction for what the future looks like or how Zack... I think maybe this is a decent place to step back and say asking them how they prompt Claude now is probably the future
for the vast majority of people, which is an interesting thing to think about. - One freezing cold take is that we'll use models to help us much more in the future to help us with prompting. The reason I say it's freezing cold is that I expect we'll use models for everything more, and prompting is something that we have to do. So we'll probably just use models more to do it along with everything else. For myself, I've found myself using models to write prompts more. One thing that I've been doing a lot is generating examples by
giving some realistic inputs to the model. The model writes some answers. I tweak the answers a little bit, which is a lot easier than having to write the full, perfect answer myself from scratch, and then I can churn out lots of these. As far as people who haven't had as much prompt engineering experience, the prompt generator can give people a place to start. But I think that's just a super basic version of what will happen in the future, which is high-bandwidth interaction between you and the model as you're writing the prompt. Where you're giving feedback
like, "Hey, this result wasn't what I wanted. How can you change it to make it better?" And people will just grow more comfortable with integrating it into everything they do and this thing, in particular. - Yeah. I'm definitely working a lot with meta prompts now, and that's probably where I spend most of my time is finding prompts that get the model to generate the kinds of outputs or queries or whatever that I want. On the question of where prompt engineering is going, I think this is a very hard question. On the one hand I'm like,
"Maybe it's the case that as long as you will want the top." What are we doing when we prompt engineer? It's like what you said. I'm like, "I'm not prompt engineering for anything that is easy for the model. I'm doing it because I want to interact with a model that's extremely good." And I want to always be finding the top 1%, top 0.1% of performance and all of the things that models can barely do. Sometimes I actually feel like I interact with a model like a step up from what everyone else interacts with for this
reason, because I'm just so used to eking out the top performance from models. - What do you mean by a step-up? - As in sometimes people will... I think that the everyday models that people interact with out in the world, it's like I'm interacting with a model that's like I don't know how to describe it, but definitely an advanced version of that. Almost like a different model 'cause they'll be like, "Oh well, the models find this thing hard." And I'm like, "That thing is trivial." I don't know, I have a sense that they're extremely capable,
but I think that's because I'm just used to really drawing out those capabilities. But imagine that you're now in a world where... So I think the thing that feels like a transition point is the point at which the models, let's suppose that they just get things at a human level on a given task, or even an above human level. They know more about the background of the task that you want than you do. What happens then? I'm like maybe prompting becomes something like I ask, I explain to the model what I want and it is
prompting me. 'Cause it's like, "Okay. Well, do you mean actually there's four different concepts of this thing that you're talking about, do you want me to use this one or that one?" Or by the way, I thought of some edge cases 'cause you said that it's gonna be like a Pandas DataFrame, but sometimes you do that and I get JSONL, and I just wanna check what you want me to do there. Do you want me to flag if I get something that's not a dataframe? So that could be a strange transition where it's just extremely
good at receiving instructions, but actually has to figure out what you want. I don't know, I could see that being an interesting switch. - Anecdotally, I've started having Claude interview me a lot more. That is the specific way that I try to elicit information, because again, I find the hardest thing to be actually pulling the right set of information out of my brain. And putting that into a prompt is the hard part to me and not forgetting stuff. So specifically asking Claude to interview me and then turning that into a prompt, is a thing that
I have turned to a handful of times. - Yeah. It reminds me of what people will talk about or if you listen to designers talk about how they interact with the person who wants the design. So in some ways I'm like, "It's this switch from the temp agency person who comes and you know more about the task and everything that you want." So you give them the instructions and you explain what they should do in edge cases and all this kind of stuff, versus when you have an expert that you're actually consulting to do some
work. So I think designers can get really frustrated because they know the space of design really well. And they're like, "Yeah. Okay, the client came to me and he just said, 'Make me a poster, make it bold.'" I'm like, "That means 7,000 things to me and I'm gonna try and ask you some questions." So I could see it going from being temp agency employee, to being more designer that you're hiring, and that's just a flip in the relationship. I don't know if that's true and I think both might continue, but I could see that being
why people are like, "Oh, is prompt engineering going to not be a thing in the future?" Because for some domains it might just not be, if the models are just so good that actually all they need to do is get the information from your brain and then they can go do the task. - Right, that's actually a really good analogy. One common thread I'm pulling out of all your guys' responses here, is that there seems to be a future in which this sort of elicitation from the user drawing out that information, is gonna become much
more important, much more than it is right now. And already you guys are all starting to do it in a manual way. In the future and in the enterprise side of things, maybe that looks like a expansion of this prompt-generating type of concept and things in the console where you're able to actually get more information from that enterprise customer, so that they can write a better prompt. In Claude, maybe it looks less of just typing into a text box, and more of this guided interaction towards a finished product. Yeah. I think that's actually a pretty
compelling vision of the future, and I think that the design analogy probably really brings that home. - I was thinking about how prompting now can be like teaching where it's like the empathy for the student. You're trying to think about how they think about things and you're really trying to show them, figure out where they're making a mistake. But the point that you're talking about, it's like the skill almost becomes one of introspection where you're thinking about what it is that you actually want and the model's trying to understand you. So it's making yourself legible
to the model, versus trying to teach someone who's smarter than you. - This is actually how I think of prompting now in a strange way. So often my style of prompting, there's various things that I do, but a common thing that's very like a thing that philosophers will do is I'll define new concepts. 'Cause my thought is you have to put into words what you want and sometimes what I want is fairly nuanced. Like the what is a good chart? Or usually, I don't know, when should you grade something as being correct or not? So
there's some cases where I will just invent a concept and then be like, "Here's what I mean by the concept." Sometimes I'll do it in collaboration with Claude to get it to figure out what the concept is, just because I'm trying to convey to it what's in my head. And right now the models aren't trying to do that with us, unless you prompt them to do so. So in the future, it might just be that they can elicit that from us, rather than us having to do it for them. But I think another thing that's
interesting, this is people have sometimes asked me, "Oh, where is philosophy relevant to prompting?" And I actually think it's very useful in a sense. So there is a style of philosophy writing, and this is at least how I was taught how to write philosophy. Where the idea is that in order to... I think, it's an anti-bullshit device in philosophy basically, which is that your papers and what you write should be legible to an educated layperson. Someone just finds your paper, they pick it up and they start reading it, and they can understand everything. Not everyone
achieves this, but that's the goal of the discipline, I guess, or at least this is at least what we teach people. So I'm really used to this idea of when I'm writing, thinking about the educated layperson, who they're really smart, but they don't know anything about this topic. And that was just years and years of writing text of that form. And I think it was just really good for prompting 'cause I was like, "Oh, I'm used to this. I have an educated layperson who doesn't know anything about the topic." And what I need to do
is, I need to take extremely complex ideas and I need to make them understand it. I don't talk down to them. I'm not inaccurate, but I need to phrase things in such a way that it's extremely clear to them what I mean, and prompting felt very similar. And actually, the training techniques we use are fascinating. Or the things that you said where you're like you say to a person, "Just take that thing you said and write it down." I used to say that to students all the time. They'd write a paper and I was like,
"I don't quite get what you're saying here. Can you just explain your argument to me?" They would give me an incredibly cogent argument, and then I'd be like, "Can you just take that and write it down?" And then if they did, that was often a great essay. So it's really interesting that there's at least that similarity of just taking things that are in your brain, analyzing them enough to feel like you fully understand them. And could take any person off the street, who's a reasonable person, and just externalize your brain into them. I feel like
that's the core of prompting. - That might be the best summary of how to prompt well that I've ever heard. In fact, I'm pretty sure it is. - Externalize your brain. - And then we'll cut it. - Having an education in the thing is a really good way to describe the thing. That was good. - That's, I think, a great way to wrap this conversation. Thank you, guys. This was great.