Anthropic交互式提示工程教程学习整理

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(如果你要还原项目)

  1. 安装依赖:pip install anthropic jupyterlab
  2. 启动:jupyter lab
  3. 打开项目中的 notebooks/01_basic_prompt_structure.ipynb
  4. 修改 prompt 内容,运行对比输出。
    (你需要在环境变量中配置 ANTHROPIC_API_KEY

🎬 Step 1. 准备原文本

在Claude或ChatGPT窗口输入以下内容(也可打在Notebook里):

请总结下面的文本内容:

今天的天气非常糟糕,暴雨导致道路积水。很多上班族被迫在地铁站排队两个小时。
与此同时,超市的面包货架被一扫而空。城市仿佛回到了疫情时期。

得到输出(AI可能只写一句话,比如):

天气恶劣导致交通不便,市民生活受影响。

🎯 问题:太模糊,没有结构,也没情绪信息。

🎬 Step 2. 改进Prompt(展示对比)

第二次输入改进版提示:

请总结下面的文本内容,并使用以下格式:
- 用3个要点列出主要事件
- 每个要点后标注情绪倾向(如“负面”“中性”“正面”)

文本如下:
今天的天气非常糟糕,暴雨导致道路积水。很多上班族被迫在地铁站排队两个小时。
与此同时,超市的面包货架被一扫而空。城市仿佛回到了疫情时期。

AI输出可能是:

  • 暴雨造成道路积水,交通瘫痪(负面)
  • 上班族通勤困难,排队时间过长(负面)
  • 市民抢购生活物资,社会秩序受影响(负面)

🎯 效果:结构化 + 情绪标签 + 更可用。

太好了,说明 JupyterLab 已经跑起来了。下面给你两种「马上能测」的方式:

克隆官方教程并运行(最贴近项目)

  1. 在这个页面点「Terminal」
    进入终端后依次执行:
git clone https://github.com/anthropics/prompt-eng-interactive-tutorial.git
cd prompt-eng-interactive-tutorial
pip install -r requirements.txt
  1. 设置 Claude API Key
  • 临时(当前会话)
    在 Jupyter Notebook 的第一个单元格里先写:import os os.environ["ANTHROPIC_API_KEY"] = "你的sk-ant-开头的密钥"
  • 或 Windows 全局(建议):在终端输入:setx ANTHROPIC_API_KEY "你的密钥"关闭并重新打开终端或浏览器标签页后生效。
  1. 打开左侧文件栏 → prompt-eng-interactive-tutorial/notebooks/
    双击 01_basic_prompt_structure.ipynb(或任一章节)→ 上方菜单 Run > Run All Cells
    如果弹 “Trust this notebook”,点 Trust

看到每个单元格输出正常(出现 Claude 的文本),就说明 OK 了。

新建一个最小可运行示例(更快验证)

  1. 在 Launcher 点击 Python 3 (ipykernel) 新建 Notebook。
  2. 依次运行以下单元格:

单元格 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