一份面向实战的 Claude 提示工程学习笔记。涵盖基础结构、角色设定、变量模板、输出格式化、思维链、Few-shot、降低幻觉、复杂提示编排,以及提示链、工具调用与检索增强等进阶主题。
0. 教程使用指南
- 使用 Messages API(推荐)进行对话,基本参数:
model、max_tokens、messages,可选:system、temperature。 - 建议设置
temperature=0以获得更稳定输出。 - 函数封装:建立
get_completion(prompt, system_prompt="", prefill="")便于统一调用。 - 运行顺序:从上至下执行单元;跨 Notebook 使用
%store共享变量,如API_KEY、MODEL_NAME。
1. 基础提示结构(Basic Prompt Structure)
- 最小调用格式:
messages=[{"role":"user","content": "..."}]。 - 规则:
- 会话轮次必须严格交替:
user/assistant。 - 第一个消息必须是
user。 - 可用
system传入全局指令,例如语气、角色、边界。
- 会话轮次必须严格交替:
- 示例要点:
- 错误示例:缺少
role/content字段;不按角色交替。 system prompt可强力提升规则遵循度(如要求用提问式输出)。
- 错误示例:缺少
2. 清晰直接(Being Clear and Direct)
- 核心准则:像指导一位新同事一样,直截了当、具体明确。
- 常见技巧:
- 直接要求“跳过前言”、“只输出一个名字且无其他字符”。
- 明确“若必须二选一,请给出你唯一的选择并直答”。
- 对长度或风格做硬性约束(如 800+ 字、严禁解释)。
3. 角色设定(Assigning Roles / Role Prompting)
- 为模型设定“身份+受众+任务”能显著改变风格与表现。
- 应用场景:文风控制、逻辑/数学提升、面向特定行业(法务/金融/客服)。
- 技巧:
- 在
system或user中写清:你是谁、对谁说、以什么方式做题。 - 针对推理任务可设定“逻辑机器人”“数学批改员”等角色。
- 在
4. 数据与指令分离(Separating Data and Instructions)
- 用变量与模板复用提示骨架;把“指令”和“数据”清晰分隔。
- 强烈建议用 XML 标签包裹可变输入,避免歧义:
- 例如:
<email>...</email>、<sentences>...</sentences>。
- 例如:
- 小细节很重要:错别字、误导性标点会影响解析效果。
5. 输出格式化与“代说”(Formatting Output & Speaking for Claude)
- 让 Claude 用你希望的格式输出:XML/JSON/自定义标签。
- Prefill(代说):在
assistant放入起始输出(如<haiku>或{),模型会从此处继续生成,更稳更贴合。 - 可结合
stop_sequences(如闭合标签)提前停采样,节省 Token。
6. 先思考再作答(Precognition / Thinking Step by Step)
- 指示“先在某标签内思考,再给最终答案”可显著提升复杂任务正确率。
- 注意顺序敏感:在对立选项时,模型常倾向第二项;可通过结构与引导减小偏置。
- 适用:情感判定、常识/事实检索、复杂指代、多步问题。
7. 用示例引导(Few-Shot Prompting)
- 通过“好/坏示例”快速对齐风格与格式,比纯口头指令更高效。
- 实践要点:
- 示例与目标任务尽量贴近,格式完全对齐(含标签、大小写)。
- 可用
assistantprefill 提供结构起点(如<individuals>)。
8. 降低幻觉(Avoiding Hallucinations)
- 原则:
- 给“台阶”:不确定时要明确说“不知道/证据不足”。
- 先抽取证据/引用,再基于证据作答;答案需与证据一一对应。
- 对缺失信息,要求“指出缺口并给出收集方法”,而非编造。
- 正确性工程:
- 结构化链路:
<relevant_quotes>→<answer>。 - 明确引用样式与证据对应关系。
- 结构化链路:
9. 从零构建复杂提示(Complex Prompts from Scratch)
- 推荐结构(可按需增减):
- 任务/身份背景(Task/Tone Context)
- 详细规则与出错兜底(“不知道就直说”)
- 示例(包含边界/异常)
- 输入数据(XML 包裹)
- 即时任务重申(底部再强调要做什么)
- 先思考再回答(思维链/草稿区)
- 输出格式(统一标签/JSON)
- Prefill(可选,给出开头)
- 行业范式:法务 Q&A、税务解析、代码导师等都可沿用该骨架。
10. 附录
10.1 提示链(Chaining Prompts)
- 通过多轮对话让 Claude“二次检查/润色/改写”,通常能提升质量。
- 把上一步的
assistant输出直接作为下一轮的“已知上下文”输入。 - 给“不需要更改”的出路,减少过度修改。
10.2 工具使用(Tool Use / Function Calling)
- 思想本质:让 Claude 产出“函数调用请求”,由外部执行,再把结果回填,继续对话。
- 两要素:
- 系统提示:交代工具清单、参数、调用格式、何时调用与何时不调。
- 编排逻辑:检测
</function_calls>,解析参数,执行函数,构造<function_results>回注。
- 用例:计算器、简易“数据库”CRUD、天气/检索等。
10.3 搜索与检索增强(Search & Retrieval, RAG)
- 借助外部资料提高时效性与准确度:Wikipedia、自有知识库、向量数据库等。
- 关键点:切片与召回、引用与证据、再写作(总结/整合/转述)。
实操速查清单
- 系统指令(全局约束)
- 明确身份、语气、边界与“不会就说不知道”。
- 输入模板(复用+可维护)
- 指令与变量分离;变量用 XML 包裹;小心错别字与标点。
- 输出格式(结构化)
- XML/JSON;必要时用 Prefill 起手;可设置
stop_sequences。
- XML/JSON;必要时用 Prefill 起手;可设置
- 思维链与示例
- 先思考后回答;给 1-3 个贴近任务的高质量示例。
- 可信度与反幻觉
- 先抽取证据再作答;严格对齐证据;不确定就拒答。
- 复杂提示骨架
- 背景 → 规则 → 示例 → 输入 → 即时任务 → 思维链 → 格式 → Prefill。
- 进阶编排
- 提示链:复核/润色/改写;工具使用:函数调用-回填-继续。
常见坑与规避
- 忽略角色与轮次交替 → 严格
user/assistant。 - 指令与数据混杂 → 用 XML 清晰分隔。
- 口头化要求太模糊 → 给示例,给格式。
- 让模型“只给答案不思考” → 思维链必须外显,否则难以生效。
- 长提示信息量过载 → 结尾处再次明确“现在要做什么”。
可直接复用的微模板
- 清晰直答(无前言):
- “请直接回答问题本身,省略任何前置说明或客套话。”
- 唯一选择:
- “如果必须二选一,请只输出你的唯一选择的名称,不要任何其他字符。”
- 变量模板:
- “请基于以下输入生成结果:{VAR}。除结果外不输出其他内容。”
- 思维链+证据:
- “先在 内列出与问题相关的原文要点,再在 内作答;若证据不足,请在 明确说明不知道。”
- 输出 JSON:
- Prefill
assistant为{,指示键集合与值类型;设置stop_sequences为}后的自定义终止项(可选)。
- Prefill
结语
这套 Anthropic 1P 互动教程覆盖了从基础到进阶的完整提示工程方法论。建议以“可运行的最小闭环”为目标:先用足元素拿到稳定正确,再逐步瘦身优化。结合提示链、工具调用与检索增强,你可以把 Claude 打造成可靠的行业助手与生产力伙伴。
如需,我可以把本文转成 README.md 并推送到你的项目中,或生成一版含最小可复制代码片段的“速用手册”。
参考资料