Star 数:25.3K+ ,Claude 模型优化从入门到进阶 prompt-eng-interactive-tutorial 是 Anthropic 推出的开源教育项目,提供全面的逐步指导,帮助用户掌握为 Claude AI 模型设计高效提示的技巧。
它涵盖基础结构到高级链式提示与工具集成,通过 9 章互动课程与 Playground 实验环境,让学习者实践写作、调试提示。
该教程强调 80/20 原则,适用于聊天机器人、法律、金融与编码等实际场景,已成为提示工程领域的热门学习资源。
课程目标
- 掌握「良好提示词(prompt)结构」的基本要素。
- 识别常见失败模式,并掌握针对这些情况的 80/20 技巧。
- 了解 Claude 模型(及类似大语言模型)的优势与局限。
- 从零开始为典型应用场景(如聊天机器人、法律服务、金融服务、编程)构建强提示词。
课程结构 & 各章内容概览
课程共 9 章 + 附录,分为「初级(Beginner)」「中级(Intermediate)」「高级(Advanced)」三个层次。
初级篇
第 1 章:Basic Prompt Structure(提示词结构基础)
- 讲解提示词由哪些组成:上下文、用户意图、限制/格式要求等。
- 强调结构清晰的重要性。
- 练习:调整一个简单提示,看模型输出如何变化。
第 2 章:Being Clear and Direct(清晰直接)
- 教你如何让模型「明白你想什么」:避免模糊、避免隐含假设。
- 练习:同一任务写多个版本提示,比较结果。
第 3 章:Assigning Roles(角色分配)
- 利用「角色设定」(如“你是法律专家”“你是历史教授”)来设定语气或知识背景。
- 练习:为不同场景指定角色,看模型输出变化。
中级篇
第 4 章:Separating Data from Instructions(数据与指令分离)
- 把「数据」(输入内容)和「指令」(你希望模型做什么)分开,避免混淆。
- 提示词设计中常见的问题,比如把数据直接嵌入指令里会导致理解混乱。
- 练习:将提示词中数据与指令拆开重构。
第 5 章:Formatting Output & Speaking for Claude(输出格式化 & 适应Claude)
- 如何控制输出格式(例如 JSON、Markdown、XML 标签等)。
- 如何「为 Claude 说话」——即使用模型偏好的格式、标记等。
- 练习:设计提示要求特定格式输出(如“请以 JSON 数组形式返回”)。
第 6 章:Precognition (Thinking Step by Step)(预思考:逐步思考)
- 引导模型先“思考”/列出步骤,再输出结果。
- 使用标签(如
<scratchpad>、<analysis>)帮助模型分段推理。 - 练习:让模型先罗列优缺点、再做判断。
第 7 章:Using Examples(使用示例)
- 给模型“示例输入→示例输出”作为 few-shot 提示。
- 通过示例可以更快引导模型达成你想要的行为。
- 练习:提供 2-3 个示例,然后让模型模仿。
高级篇
第 8 章:Avoiding Hallucinations(避免“幻觉”)
- 模型可能「瞎编」事实/误用信息。此章教你策略来减少这种情况。
- 举例:先要求模型从文档中提取证据、再基于证据作答。
- 练习:给定长文档,让模型先抽引用再输出结论。
第 9 章:Building Complex Prompts (Industry Use Cases)(构建复杂提示-行业用例)
- 提供多个行业场景练习:聊天机器人、法律服务、金融服务、编程等。
- 练习:选择某一行业(例如:编程任务)设计一个从零构建的提示。
附录:Beyond Standard Prompting(高级延伸)
- 链式提示(Chaining Prompts)
- 工具调用(Tool Use)
- 搜索与检索增强(Search & Retrieval)
学习建议
- 每章读完“理论部分”后 一定要动手做练习:修改提示、看结果差异。
- 在练习中 记录变化前后结果:这样你能直观看出“提示改变”对输出质量的影响。
- 对你关心的应用领域(如你学 Python/用 AI 辅助编程)优先尝试第 9 章中的行业用例。
- 把“输出格式约束 + 角色设定 +逐步思考”这几项组合起来,通常效果更好。
- 注意模型局限:提示工程可以优化,但不能保证模型「知道一切」或「完全不出错」。第 8 章的内容非常关键。
实操笔记
用 Notebook(如果你要还原项目)
- 安装依赖:
pip install anthropic jupyterlab - 启动:
jupyter lab - 打开项目中的
notebooks/01_basic_prompt_structure.ipynb - 修改
prompt内容,运行对比输出。
(你需要在环境变量中配置ANTHROPIC_API_KEY)
🎬 Step 1. 准备原文本
在Claude或ChatGPT窗口输入以下内容(也可打在Notebook里):
请总结下面的文本内容:
今天的天气非常糟糕,暴雨导致道路积水。很多上班族被迫在地铁站排队两个小时。
与此同时,超市的面包货架被一扫而空。城市仿佛回到了疫情时期。
得到输出(AI可能只写一句话,比如):
天气恶劣导致交通不便,市民生活受影响。
🎯 问题:太模糊,没有结构,也没情绪信息。
🎬 Step 2. 改进Prompt(展示对比)
第二次输入改进版提示:
请总结下面的文本内容,并使用以下格式:
- 用3个要点列出主要事件
- 每个要点后标注情绪倾向(如“负面”“中性”“正面”)
文本如下:
今天的天气非常糟糕,暴雨导致道路积水。很多上班族被迫在地铁站排队两个小时。
与此同时,超市的面包货架被一扫而空。城市仿佛回到了疫情时期。
AI输出可能是:
- 暴雨造成道路积水,交通瘫痪(负面)
- 上班族通勤困难,排队时间过长(负面)
- 市民抢购生活物资,社会秩序受影响(负面)
🎯 效果:结构化 + 情绪标签 + 更可用。
太好了,说明 JupyterLab 已经跑起来了。下面给你两种「马上能测」的方式:
克隆官方教程并运行(最贴近项目)
- 在这个页面点「Terminal」
进入终端后依次执行:
git clone https://github.com/anthropics/prompt-eng-interactive-tutorial.git
cd prompt-eng-interactive-tutorial
pip install -r requirements.txt
- 设置 Claude API Key
- 临时(当前会话):
在 Jupyter Notebook 的第一个单元格里先写:import os os.environ["ANTHROPIC_API_KEY"] = "你的sk-ant-开头的密钥" - 或 Windows 全局(建议):在终端输入:
setx ANTHROPIC_API_KEY "你的密钥"关闭并重新打开终端或浏览器标签页后生效。
- 打开左侧文件栏 →
prompt-eng-interactive-tutorial/notebooks/
双击01_basic_prompt_structure.ipynb(或任一章节)→ 上方菜单 Run > Run All Cells
如果弹 “Trust this notebook”,点 Trust。
看到每个单元格输出正常(出现 Claude 的文本),就说明 OK 了。
新建一个最小可运行示例(更快验证)
- 在 Launcher 点击 Python 3 (ipykernel) 新建 Notebook。
- 依次运行以下单元格:
单元格 1:安装 & Key(第一次用时装一次就行)
!pip -q install --upgrade anthropic
import os
os.environ["ANTHROPIC_API_KEY"] = "你的sk-ant-密钥" # 没有就先去 anthropic.com 获取
单元格 2:创建客户端 + 写一个对比测试函数
from anthropic import Anthropic
client = Anthropic() # 会自动读 ANTHROPIC_API_KEY
def ask(prompt: str):
resp = client.messages.create(
model="claude-3-5-sonnet-latest", # 你也可以换 opus/haiku
max_tokens=400,
messages=[{"role": "user", "content": prompt}]
)
return resp.content[0].text
baseline = """请总结下面的文本:
今天的天气非常糟糕,暴雨导致道路积水。很多上班族在地铁站排队两个小时。
与此同时,超市的面包货架被一扫而空。城市仿佛回到了疫情时期。
"""
improved = """请总结下面的文本,并严格按此格式输出:
- 用3个要点列出主要事件
- 每个要点后用括号标注情绪倾向(负面/中性/正面)
文本如下:
今天的天气非常糟糕,暴雨导致道路积水。很多上班族在地铁站排队两个小时。
与此同时,超市的面包货架被一扫而空。城市仿佛回到了疫情时期。
"""
print("—— 基线提示 ——")
print(ask(baseline))
print("\n—— 优化提示 ——")
print(ask(improved))
Github:https://github.com/anthropics/prompt-eng-interactive-tutorial
油管:https://youtu.be/AaWTBIVernI