Below is a transcript on the guide about prompting techniques.
I want you to
carefully go through and output with the most important information from the video
which will focus mainly on how to improve the prompts and get better at prompting.
- 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.