1. 背景为什么提示词总“不听话”把 Claude 当成一位刚入职的“外包同事”——它能力超强却完全不了解你的业务。很多团队把需求随手一扔结果拿到的东西要么缺字段、要么风格跑偏甚至直接“幻觉”出不存在的方法。归根结底是提示词没把“边界、格式、示例”讲清楚。下面把最常踩的三颗雷先摆出来语义歧义自然语言天生宽松同一句话前后端理解可能完全相反上下文丢失多轮对话里Claude 只能看到最近 N 个 token前面关键约束被挤掉生成不稳定温度、top-p 等采样参数保持默认导致同一条提示两次运行结果差异巨大2. 三种提示词范式对比范式核心思路优点缺点适用场景指令式Imperative用“你要做…”的祈使句直接下令简短、token 省容易遗漏边界条件一次性脚本、内部工具示例式Few-shot给 2-3 个输入-输出对让模型“照猫画虎”输出格式稳、风格对齐快示例占 token长示例易超窗API 对接、数据清洗混合式Hybrid先下指令再给 1 个黄金示例最后追加“必须遵守” checklist兼顾灵活与稳定需要调长度生产环境主力方案经验对外接口用户可见一律用混合式内部一次性任务能指令就指令省 token 就是省钱。3. Claude 提示词解析机制速览Claude 采用双向注意力 RoPE 位置编码对长文本的绝对位置不敏感但对相对顺序极其敏感。官方把提示词拆成三段注入System放全局约束相当于“公司章程”Human当前轮用户输入Assistant留空让模型续写关键System 段权重最高重复的关键约束最好在这里再声明一次防止后续被截断。另一个细节Claude 对 XML 标签极度友好用instruction、example等成对标签包裹可显著降低格式跑偏率官方文档 2024-03-15 更新已验证。4. 三大高频场景模板与 Python 实战下面示例均基于官方anthropicSDK v0.28Python≥3.9已加 retry、异常捕获与关键参数注释。4.1 场景 A代码补全指令式from anthropic import Anthropic, HUMAN, AI import os, time, backoff client Anthropic(api_keyos.getenv(ANTHROPIC_API_KEY)) backoff.on_exception(backoff.expo, Exception, max_tries3) def complete_code(prefix: str, lang: str python) - str: prompt fSystem: You are a senior {lang} developer. Reply ONLY with code, no explanation. Human: Complete the following code snippet. Do not alter given logic. python {prefix} resp client.completions.create( modelclaude-3, max_tokens_to_sample512, temperature0.2, # 低温度保稳定 promptprompt, stop_sequences[] # 遇到代码块结束符立刻停 ) return resp.completion.strip() if __name__ __main__: print(complete_code(def quicksort(arr):))4.2 场景 B文档生成混合式def gen_doc(code_snippet: str) - str: system You are a tech writer. Output Markdown. instruction - Keep sections: Overview, Parameters, Returns, Example - Use English only - Skip boilerplate /instruction example Input: def add(a, b): return a b Output: ## Overview Adds two numbers. ## Parameters - a int: left operand ... /example human fGenerate documentation for:\npython\n{code_snippet}\n prompt fSystem: {system}\n\nHuman: {human}\n\nAssistant: resp client.completions.create( modelclaude_3_sonnet, max_tokens_to_sample800, temperature0.3, promptprompt ) return resp.completion4.3 场景 C错误诊断示例式def diagnose_error(traceback_txt: str) - str: examples [ (ZeroDivisionError: division by zero, Root cause: divisor variable x is 0. Fix: Add if x 0: return guard.), (KeyError: user_id, Root cause: missing key in dict. Fix: Use .get(user_id, default) or validate input.) ] ex_str \n.join([fQ: {q}\nA: {a} for q, a in examples]) prompt fSystem: You are a Python debugger. Answer in Chinese, keep within 140 words. Human: Here are some reference cases: {ex_str} Now diagnose: {traceback_txt} Assistant: resp client.completions.create( modelclaude_3_haiku, max_tokens_to_sample300, temperature0.1, promptprompt ) return resp.completion5. 性能优化token 与延迟的量化关系实测 claude_3_haiku输入 输出总 token 数与首 token 延迟RTT≈180 ms近似线性1 k token → 0.9 s4 k token → 2.1 s8 k token → 4 s省 token 直接等于省时间。策略把“长示例”拆成外部向量库提示里只保留 ID 或摘要复用 System 段减少每轮重复指令对同批任务使用batch prompt用 XML 包裹多条task一次请求回包再拆分平均延迟可降低 35%6. 生产环境避坑 5 条坑位现象快速解决1. 敏感词泄露模型输出含用户邮箱、密钥后处理加正则扫描 同态脱敏2. 超长截断返回被无情截断JSON 不闭合设置max_tokens时预留 200 缓冲用stop_sequences[\n]精准刹车3. 超时重试偶现 60 s 无响应官方推荐 3 次指数退避首次 1 s最大 8 s4. 温度漂移同 prompt 两次输出格式不同锁定 temperature ≤ 0.3top-p ≤ 0.95对外接口加输出 schema 校验失败回滚5. 上下文溢出多轮聊天越跑越偏每轮把“关键约束”重新写进 Human 开头或改用 100 k 窗口模型7. 动手任务让提示词再“瘦” 20%下面是一段用于生成 SQL 的混合式提示词全长 1 260 token实测延迟 3.4 s。请读者在不损失正确率的前提下通过删减冗余、合并段落、用缩写等方式把它压到 1 000 token 以内用 haiku 模型跑 20 条随机需求记录平均延迟与正确率把优化后的提示词和实验数据贴到评论区一起 PK 谁更“瘦”提示可把示例从 3 个减到 1 个长字段名用缩写 checklist 用表格横排System 段禁止重复动词。8. 小结把提示词当成产品需求文档来写边界、格式、验收标准一个都不能少。先用 System 段立规矩再用示例给风格最后用参数锁温度基本就能让 Claude 稳定输出“人类可合并”的代码。剩下的优化就是与 token 数、延迟、成本的三角博弈——省下来的每一分钱都会在你月底账单里大声说谢谢。