数据截至 (上游 commit 0d277542e927)
Anthropic Prompt Engineering Tutorial — 架构与原理
30 秒导读: 这是 Anthropic 官方的交互式提示工程课程。它不是一个库,而是一套 Jupyter notebook:每章讲一个提示技巧,配一段可运行的 Claude 调用示例,再附自动评分的练习 ——你改 prompt,代码当场判你过没过。读完你能从零写出一个生产级的复杂提示。
1. 这是什 么(零基础也能懂)
一句话定义: 一套手把手教你跟 Claude 说话的官方课程,用 Jupyter notebook 承载, 每个技巧都能立刻在 notebook 里运行、验证。
解决什么问题 / 给谁用: 假设你刚拿到 Claude 的 API key,会写 messages.create(...),
但发现 Claude 答得不对、不听话、瞎编、格式乱。问题往往不在模型,而在你的提示写得不够好。
这门课就是把「怎么写提示」拆成 9 个可练习的技巧,让一个新手按顺序走完就上手。
它教你做什么(能力清单):
| 章 | 你学会 |
|---|---|
| 1 | Messages API 的最小结构 + system prompt |
| 2 | 把指令写得清楚直接 |
| 3 | 给 Claude 分配角色(role prompting) |
| 4 | 用 XML 标签把「数据」和「指令」隔开 |
| 5 | 让 Claude 按格式输出 + prefill 替 Claude 起头 |
| 6 | 让 Claude 出声逐步思考(chain of thought) |
| 7 | 用 few-shot 示例教 Claude 模仿 |
| 8 | 抑制幻觉(给台阶下、先找证据) |
| 9 | 把全部技巧拼成一个 10 元素复杂提示 |
| 附录 | 链式提示 / 工具调用 / 检索(RAG) |
用起来什么样: 整门课的「Hello World」就是一个叫 get_completion 的辅助函数——
你只往 PROMPT 里填字,运行单元格,Claude 的回答就打印在下面。
# 示意,非源码 —— 课程里每个例子都长这样
import anthropic
client = anthropic.Anthropic(api_key=API_KEY)
def get_completion(prompt, system_prompt=""):
message = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=2000,
temperature=0.0, # 课程全程用 0,结果近似确定,方便对照
system=system_prompt,
messages=[{"role": "user", "content": prompt}],
)
return message.content[0].text
print(get_completion("Hi Claude, how are you?"))
真实定义见 Anthropic 1P/01_Basic_Prompt_Structure.ipynb(setup 单元格里的 get_completion)。
一句话直觉: 把 Claude 当成一个聪明但毫无背景、刚上岗第一天的新同事。 它只知道你字面上告诉它的东西。你交代得越清楚、越有结构、越给例子,它干得越好—— 这门课的所有技巧,本质都是这条直觉的展开。
本节不出现底层细节。目标:完全没用过 Claude 的人也知道「这门课是干嘛的」。
2. 顶层全景(它大概怎么转)
课程不是「库」,而是「评分闭环」
它没有运行时、没有中央循环。真正的「源码」是 notebook 单元格里的提示字符串 + 评分函数。 每个练习是一个小闭环:
你改这里
│
▼
┌──────────────┐ prompt ┌──────────┐ 回答 ┌────────────────┐
│ PROMPT / │ ──────────▶ │ Claude │ ──────▶ │ grade_exercise │
│ SYSTEM_PROMPT│ │ (Haiku) │ │ (正则判过没过) │
└──────────────┘ └──────────┘ └────────┬───────┘
▲ │
└─────────────── 没过就回去改 prompt ◀────────────┘
这个闭环是这门课的核心教学法:你不是读「应该怎么写」,而是被一个正则逼着写到对为止。
例如第 1 章练习的判分函数,就是要求回答里同时含 1 2 3
(Anthropic 1P/01_Basic_Prompt_Structure.ipynb 的 grade_exercise)。
三个仓库目录(同一课程的三种 SDK 版本)
| 目录 | 跑在哪 | 调用方式 |
|---|---|---|
Anthropic 1P/ | Anthropic 第一方 API | anthropic.Anthropic(...)(本系列文档以此为准) |
AmazonBedrock/anthropic/ | AWS Bedrock | 同上的 SDK,指向 Bedrock |
AmazonBedrock/boto3/ | AWS Bedrock | 原生 boto3 调用 |
三者教学内容基本一致(README 声明练习/解答相同),只是换了调用样板。一处可见差异:两个 Bedrock 目录
多出一个 10_3 Empirical Performance Evaluations 附录,并把检索附录顺延编号为 10_4(共 4 个附录),
而 Anthropic 1P/ 只有 10.1/10.2/10.3 三个附录。本系列文档以 Anthropic 1P/ 为准。
见根 README.md 与 AmazonBedrock/README.md。
难度三段式(也是本文档的三章)
| 初级(ch1-3) | 中级(ch4-7) | 高级(ch8-9 + 附录) |
|---|---|---|
| 会调 API | 结构化输入/输出 | 让它别瞎编 |
| 清楚直接 | prefill 控制起头 | 10 元素复杂提示 |
| 分配角色 | 让它出声思考 | 链式 / 工具 / 检索 |
| — | 给示例 | — |
主线走一遍(高层): 第 1 章让你会调用;第 2-3 章教你把话说清楚 + 给角色; 第 4-7 章是工程核心——用 XML 立边界、用 prefill 卡输出、用 CoT 提准确率、用示例定格式; 第 8 章教你对付幻觉;第 9 章把这些拼成一个真实可上线的复杂提示;附录走向 多次调用编排(链式 → 工具 → 检索)。
3. 怎么读这套文档
按顺序读三章即可,每章对应一个难度段:
01-basics.md—— 你从「不会调」到「会把话说清楚、会给角色」。这章最适合零基础。02-structure-and-thinking.md—— 工程核心四件套:XML 隔离、prefill、出声思考、few-shot。 想真正用好 Claude,这章是重点。03-reliability-and-complex.md—— 抑制幻觉 + 10 元素复杂提示模板 + 三个附录(链式/工具/检索)。 想上生产、想理解 agent 雏形,看这章。
每章末尾都有「代码地图」,直接告诉你该打开哪个 notebook、grep 哪个符号。
4. 巧妙之处(这门课设计上值得学的)
这门课本身的教学设计就有值得借鉴的地方:
- 自动评分把「主观好坏」变成「客观过/不过」。 提示工程最难教的是「写得好不好」,
这门课用正则判分(如要求输出恰好等于
"Michael Jordan")把它变成一个有反馈的游戏。 - 全程
temperature=0。 让示例结果近似确定,你才能把「改了 prompt → 结果变了」 归因到你的改动,而不是随机性。这是教学严谨性的关键设计。 - 故意留 bug 当教材。 第 4 章故意保留拼写错误和误导性连字符,让你亲眼看到 Claude 对小细节的敏感——「你写得糙,它答得糙」。
5. 边界与局限(诚实)
- 不是 API 参考手册。 它教技巧和直觉,参数细节要看官方文档(notebook 里到处是链接)。
- 工具调用用的是 2024 年的旧格式。 附录 10.2 教的
<function_calls>XML 格式, notebook 自己在「Tool use roadmap」一节就声明会被更流畅的格式取代——今天的官方 工具调用已经是结构化tools参数。把 10.2 当成「工具调用的原理拆解」读,而非当 前 API 用法。 - 模型是 Claude 3 Haiku(2024-03)。 例子里「Claude 会犯的错」很多在更新的模型上已不再出现; 技巧仍然有效,但「触发错误的反例」未必能复现。
6. 横向对比(ai-frontier-reference 同库)
这套课在「prompt-authority」区里是最入门、最动手的一支:它教人怎么对一个通用模型写提示。 库里其他更偏「系统怎么自动组装提示 / 怎么把提示工程化进 agent 循环」的项目, 可以把本课当作第一性原理读物——先在这里建立「清晰指令 + XML 边界 + prefill + CoT + 示例」 这套词汇,再去看上层系统如何把它们自动化。
7. 代码地图(导航索引)
| 主题 | 文件 | 关键符号 |
|---|---|---|
| 课程总览 / 目录 | README.md | — |
| API 最小调用 + system prompt | Anthropic 1P/01_Basic_Prompt_Structure.ipynb | get_completion, SYSTEM_PROMPT |
| 所有练习的提示/判分 | 各 0N_*.ipynb | PROMPT, grade_exercise |
| 练习提示语 | Anthropic 1P/hints.py | exercise_*_hint, exercise_*_solution |
| 10 元素复杂提示 | Anthropic 1P/09_Complex_Prompts_from_Scratch.ipynb | TASK_CONTEXT, PREFILL, PROMPT 拼接段 |
| 工具调用系统提示 | Anthropic 1P/10.2_Appendix_Tool Use.ipynb | system_prompt_tools_general_explanation |
| Bedrock 镜像版 | AmazonBedrock/anthropic/, AmazonBedrock/boto3/ | 同名 notebook |