§ B2·AI 实践5 prompts

Prompt Engineering:与 AI 说话的硬功夫

提示词 = *给模型的「任务说明书」*,不是咒语。三种角色:System / User / Assistant。

先读这部分
§ B2

Prompt Engineering:与 AI 说话的硬功夫

提示词 = *给模型的「任务说明书」*,不是咒语。三种角色:System / User / Assistant。

必须会的几条原则
  • 说清楚任务。要做什么、做到什么标准、输出格式是什么。
  • 给上下文。背景、约束、用户已经知道的、用户不知道的。
  • 给例子(few-shot), 1-3 个输入→输出样例比描述规则更有效。
  • 指定输出格式。要 JSON 就明说,要 markdown 表格就明说。
几个有用技巧
  • Chain of Thought(CoT,思维链)。让模型「一步步想」。最简单的写法:句末加一句「让我们一步步思考」。Reasoning Model(o 系列 / R1 / GLM-5 Reasoning)就是内置 CoT,你不用提示它也会想。
  • 结构化输出。JSON Schema / grammar / function calling,让模型输出可被程序解析。用途:调用工具、写入数据库、自动化工作流。
  • Self-Critique。让模型先生成答案,再让它检查自己的答案。常用于质量要求高的场景。
  • Decomposition(任务分解)。复杂任务拆成 3-5 步,每步单独 prompt。一次给 10 件事不如分 10 次问。
进阶:你要做 AI 产品再看

Anthropic 的《Effective context engineering for AI agents》、OpenAI 的《Prompt engineering guide》两份官方文档值得通读。Prompt caching 的成本收益分析见 B3。

动手做 · 提示词卡

把这段知识变成一段可执行的练习

以下 5 张卡,每张都是一段可复制的提示词。打开 Claude Code(或任何 LLM 终端),把卡里的提示词粘进去,AI 会陪你完成这一步。遇到不会的概念,把 AI 的回答贴回 卡里继续问下一步。可以一次做完,也可以分几次。

3 操作1 决策1 概念
Prompt 01操作★★

用 checklist 改写 prompt

为什么要学prompt 写得烂, 模型再强也救不回; checklist 帮你从'凭感觉'升级到'按规范'。
打个比方写 prompt 像给新员工发邮件, 任务越具体, 他干得越好。
VibeCoder 场景你连发 3 个模糊 prompt 都不满意, 用 12 条 checklist 补全, 第一次就拿到能用的。

找 5-10 段你以前写的、现在回头看不满意的 prompt,让 AI 按 12-point checklist 逐条改写;用改前 / 改后跑同一任务,对比质量与 token 数。

前置有 5-10 段自己写过的旧 prompt · 读过 B3 § 12-point checklist
  1. 01选 5-10 段旧 prompt,标记 1 个当前最不满意的任务
  2. 02先用旧 prompt 跑 3 次,记输出(baseline)
  3. 03让 AI 按 checklist 改写
  4. 04用改写后跑同样任务 3 次
  5. 05你盲评 baseline vs 改写版(标号打乱),看是否真的更好
粘贴到 Claude Code(或任何 LLM 终端)改写建议 Claude Opus 4.7 / GPT-5.4;改前改后对比用便宜模型即可
这是我的旧 prompt:[贴原文]。\n请按以下 12-point checklist 改写:1) 设 token 预算 2) 稳定内容放最前 3) 用 cache breakpoint 4) 检索选择性 k=3-8 5) 上下文分层 6) 控制历史长度 7) 写清 groundedness 8) 显式引用 9) 处理长上下文 rot 10) 监控 token / cache / 延迟 11) 跨 call 状态设计 12) 配 eval。\n输出:改写后的 prompt + 逐条说明你改了什么、为什么。
✓ 完成判据至少 3 段 prompt 改后输出更准或更省 token;你自己盲评能看出差别。
checklist 第 1 条(设 token 预算)最容易被忘;第 8 条(显式引用)一开始不习惯会跳过。坚持 12 条都过一遍,比'挑 3 条'更稳。
参考B3 § 12-point checklist
Prompt 02概念★★

CoT 数学题对照

为什么要学难题加'一步步想'能涨 30% 正确率——关键是什么时候该用、什么时候白费 token。
打个比方CoT 像考试时把草稿纸摊开, 难题不打草稿直接答, 大概率错。
VibeCoder 场景你让 AI 解'3 个连续偶数和是 126', 它直答 42 错了; 加'一步步想'后秒对。

选 3 道 AIME 风格的数学题(不要选 1 位数乘法),分别用直答和 CoT 两种 prompt 跑同一题;再换 reasoning model 跑一次。3 × 3 = 9 跑,看哪种组合正确率最高。

前置能调 API 或用网页对话 2 个模型
  1. 01选 3 道中等难度题(数论 / 组合 / 几何),记标准答案
  2. 02用 chat model 直答 3 题
  3. 03用 chat model + CoT 跑同样 3 题
  4. 04用 reasoning model 跑同样 3 题
  5. 053 模式 × 3 题 = 9 跑,出正确率对比表
粘贴到 Claude Code(或任何 LLM 终端)对比用:chat model(GPT-5.4 / Claude Opus 4.7)vs reasoning model(o 系列 / DeepSeek-R1 / GLM-5 Reasoning)
题 1:\n[题面]\n\nA) 直接给最终答案。\nB) 让我们一步步思考,最后再给答案。\n\n请分两次回答,先 A 再 B。
✓ 完成判据CoT 在 chat model 上提升 ≥30% 正确率;reasoning model 在所有题上 ≥ CoT。
简单题(一位数乘法、一步应用题)CoT 没差甚至略降;不要为所有题都加 CoT,浪费 token。
参考B2 § CoT
Prompt 03操作★★

JSON Schema 强结构化

为什么要学让 AI 输出能直接喂给代码的 JSON, 自动化工作流的命门——省掉手动改格式。
打个比方JSON Schema 像填空题的横线 + 括号说明, 填错格式直接判零, 模型不跑偏。
VibeCoder 场景你做 50 条评论要批量存数据库, 改用 schema 后 1 秒 parse, 之前手动改 5 分钟。

让模型抽 3 条产品评论的结构化字段:评分、优点、缺点、推荐人群。用 JSON Schema 强制格式;故意混一条破损评论看模型能否标'无法解析'。

前置懂 JSON 基本语法 · 会调 API(OpenAI / Anthropic / function calling)
  1. 01写 1 份 JSON Schema(评分 / 优点 / 缺点 / 推荐人群)
  2. 02找 3 条真实评论(其中 1 条只写'还行')
  3. 03让模型按 schema 抽 3 条
  4. 04用 JSON.parse 校验,必须全部成功
  5. 05检查破损评论那条模型是否给了 insufficient_info
粘贴到 Claude Code(或任何 LLM 终端)
请从以下 3 条评论中抽取结构化字段,严格按 schema 输出:\n\n{\"type\":\"object\",\"properties\":{\"score\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":5},\"pros\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"cons\":{\"type\":\"array\"},\"target\":{\"type\":\"string\"}},\"required\":[\"score\",\"pros\",\"cons\",\"target\"]}\n\n如果某条评论信息不足无法填齐 required,请返回 {\"error\":\"insufficient_info\"}。\n\n评论 1:[...]\n评论 2:[...]\n评论 3:[故意残缺]
✓ 完成判据100% 输出能被 JSON.parse 成功;类型全部正确;破损评论给出 error。
prompt 里写 schema 时别用裸 ASCII 双引号;要么用单引号包整个 JSON、要么用反斜杠转义。更稳的做法:让平台用 tool / function calling 强制 schema,模型无法跑偏。
参考B2 § 结构化输出
Prompt 04操作★★

让 AI 改自己的代码

为什么要学AI 第一次写的代码几乎都有 bug, 让它自审 = 免费多一轮检查——但要约束它别演。
打个比方像让作者自己当编辑, 写完再看一眼, 比单纯'看一遍'更准——但作者会美化。
VibeCoder 场景AI 给你写排序函数看着没问题, 跑边界 case 全炸; 自审 3 轮后补上'空列表返回 []'。

让 AI 写一个 Python 排序函数(带边界 case 漏洞),然后让它作为严格评审员挑自己的 bug;跑 3 轮,每轮都先列发现的问题再改。

前置能跑 Python · 会写或让 AI 写一段 ~50 行代码
  1. 01让 AI 写第 1 版代码
  2. 02让 AI 自审第 1 版,记录它列的 bug
  3. 03AI 改第 2 版
  4. 04再自审、再改第 3 版
  5. 05用 1 份隐藏测试(边界 + 性能)验 3 个版本
粘贴到 Claude Code(或任何 LLM 终端)
你是 Python 高级工程师,写一个 robust 的排序函数,要求:\n- 处理空列表、单元素、全相同、已排序、逆序\n- 复杂度稳定\n- 写完后再以严格评审员身份找自己的 bug,重复 3 轮,每轮都先列发现的问题再改代码。\n\n约束:只列能被测试证伪的问题,不要'过度修正'。
✓ 完成判据第 2 轮发现 ≥1 个新 bug;第 3 轮基本无新发现;隐藏测试下最终版通过 ≥90%。
Self-Critique 会幻觉出原本不存在的 bug(过度修正、迎合'看起来更专业'的写法)。要加约束'只列能被测试证伪的问题',否则就是 AI 演给你看。
参考B2 § Self-Critique
Prompt 05决策★★

把大任务拆 5 步

为什么要学一次塞 10 件事给 AI, 它的'注意力'会被稀释, 拆 5 步质量高一档。
打个比方像让搬家工人搬 1 大箱 vs 5 个小箱, 小箱不会掉东西也不会压坏。
VibeCoder 场景你让 AI'写完整竞品分析'写得稀烂, 改成'先列 5 家、再分头查、汇总'后翻倍。

选一个你反复让 AI 干、干不好的复杂任务(如'写一份完整竞品分析报告'),拆成 5 个子任务,每步独立 prompt,最后拼起来。对比 1 个长 prompt vs 5 个短 prompt 的质量。

前置有 1 个你想让 AI 干但总是干不好的真实任务
  1. 01选 1 个你之前让 AI 干不好的真实任务
  2. 02写 1 个超长 prompt(baseline)跑 1 次,记输出
  3. 03让 AI 拆 5 步
  4. 04每步独立跑,结果拼成完整交付
  5. 05你盲评 2 种输出(标号打乱),看哪种好
粘贴到 Claude Code(或任何 LLM 终端)
我的总任务:[一句话描述,如 写一份 AI 编程助手赛道 5 家公司的竞品分析]。\n\n请按以下格式输出:\n1. 5 个子任务(每步 1 句、目标明确、可独立交付)\n2. 每步需要的输入(是上一步的输出?还是新数据?)\n3. 每步的 prompt 草稿\n\n约束:每步 input + output 总 token 不超过 4K。
✓ 完成判据拆 5 步版质量明显高于 1 个长 prompt(你盲评 ≥7/10 vs ≥5/10)。
第 2-3 步的中间结果是给下一步的输入,必须显式传递(贴进 prompt),不能让 AI 假设'它应该记得'。拆步 ≠ 拆完就忘。
参考B2 § Decomposition