跳到主要内容

章节切分大纲 — Prompt Engineering for LLMs(14 章)

一节一行:「进来时以为…… → 出去时知道……」。已自查:任意两行的「出去时知道」不重复。 对应原书:01←Ch1+Ch2前 · 02←Ch2中 · 03←Ch2后 · 04←Ch3 · 05←Ch4 · 06←Ch5前 · 07←Ch5后 · 08←Ch6 · 09←Ch7 · 10←Ch8前 · 11←Ch8后 · 12←Ch9 · 13←Ch10 · 14←Ch11

01 它只是在续写:模仿者、幻觉与提示工程的诞生(原 Ch1 + Ch2 前半)

  • 进来时以为 ChatGPT 是个会思考、会回答的「AI 助手」 → 出去时知道它只做一件事:给一段文字续写后半截,好坏标准是「像训练集里的文档」
  • 进来时以为「问它问题它回答」天经地义 → 出去时知道该问的是「一份以这段话开头的文档,统计上最可能怎么往下写」
  • 进来时以为语言模型是这几年的新东西 → 出去时知道从 1948 年马尔可夫链到 seq2seq 的瓶颈,再到注意力、Transformer、GPT 三代,每一步都是被上一步的缺陷逼出来的
  • 进来时以为「调教提示词」是玄学技巧 → 出去时知道 GPT-3 的 few-shot 证明了「只改输入就能让模型干活」,提示工程由此诞生
  • 进来时以为它偶尔会「说错话」 → 出去时知道幻觉不是故障而是本性(它永远在猜,且从不表示怀疑),外加 truth bias:它默认你的提示词全是真的

02 模型眼中的文字:标记、一次一个与温度(原 Ch2 中段)

  • 进来时以为它跟我们一样一个字母一个字母读 → 出去时知道它读的是 token(三四个字符一块),确定性切分,大小写和错别字在它眼里完全是另一段文字
  • 进来时以为生成是一大段「想好了再写」 → 出去时知道是自回归:一次只吐一个 token,不能停、不能改、不能回头看
  • 进来时以为同一问题问两遍答案不同是「它记性差」 → 出去时知道是温度控制的故意采样;logprobs 是它给每个候选 token 打的分
  • 进来时以为 token 数是技术细节 → 出去时知道钱、速度、上下文窗口全按 token 算账,而且 token 数不可加(「cat」+「tail」≠ 2 token)

03 向左看、向下传:Transformer 如何决定了提示词的一切(原 Ch2 末段)

  • 进来时以为模型内部有个统一的「大脑」 → 出去时知道是每个 token 上坐一个相同的小脑,层数固定,只靠注意力互相喊话
  • 进来时以为它读文章像人一样可以随时翻回去 → 出去时知道信息只能从左往右、从下往上流,「回灌」的唯一通道是把想法写成文字
  • 进来时以为提示词里信息的摆放顺序无所谓 → 出去时知道「先问后读」和「先读后问」差别巨大(词数实验:348 vs 173),顺序是提示工程的第一变量

04 从续写到聊天:RLHF、ChatML 与系统消息(原 Ch3)

  • 进来时以为聊天机器人是「另一种更聪明的模型」 → 出去时知道聊天 = 微调过的续写模型 + ChatML 语法糖,补全的文档从文章变成了对话记录
  • 进来时以为「教模型学好」就是给它看好榜样 → 出去时知道诚实教不出来(标注员不知道模型知道什么),要走 SFT→奖励模型→PPO 的四模型流水线
  • 进来时以为对齐只有好处 → 出去时知道有 alignment tax(更乖但更笨),还会丢掉人类表达的多样性
  • 进来时以为系统消息只是个「高级一点的输入框」 → 出去时知道模型被训练成严格服从它,而 ChatML 的保留 token 是防提示注入的关键

05 应用即转换层:the loop、小红帽原则与四条准则(原 Ch4)

  • 进来时以为做 LLM 应用就是「写个好提示词」 → 出去时知道应用是用户问题域与模型文本域之间的转换层,提示词只是其中一站
  • 进来时以为提示词随便写模型都该懂 → 出去时知道小红帽原则:越像训练集里有的文档,输出越稳;四条准则(像、全、引向解答、能停)
  • 进来时以为「让它别说了」是小事 → 出去时知道 chat 模型自动停,completion 模型要设计可识别的停止信号(GitHub 那个停不下来的模型事故)
  • 进来时以为选模型就是选「最聪明的」 → 出去时知道要在聪明、速度、成本之间按应用场景取舍(Copilot 选了小而快的 Codex)

06 提示词里放什么:静态澄清与动态上下文(原 Ch5 前半)

  • 进来时以为提示词就是一句话问题 → 出去时知道内容分静态(澄清任务)与动态(这一次的情境),分界取决于实现
  • 进来时以为「把要求写清楚」很容易 → 出去时知道显式指令三法则(说正不说反、给理由、忌绝对),以及澄清带来的一致性
  • 进来时以为多放几个例子(few-shot)总没坏处 → 出去时知道三个坑:随上下文膨胀、锚定偏见、凭空学出假模式
  • 进来时以为上下文越多越好 → 出去时知道要按延迟、可预备性、可比较性三把尺子收集,还要给每条打分

07 检索与摘要:RAG(原 Ch5 后半)

  • 进来时以为把资料塞进提示词,模型自然会挑着用 → 出去时知道契诃夫之枪谬误:模型觉得每条上下文都必须有用
  • 进来时以为检索就是「关键词匹配」 → 出去时知道词法检索(Jaccard/TF-IDF/BM25)与神经检索(嵌入向量)各管一段,前者可调可 debug,后者按意思匹配
  • 进来时以为嵌入模型就是小一点的 LLM → 出去时知道它是另一种模型:不预测下一个词,而是把一段文字变成一个坐标
  • 进来时以为摘要就是「让模型总结一下」 → 出去时知道窗口装不下要分层摘要,且通用摘要与任务导向摘要各有代价

08 组装提示词:山谷、文档类型与背包算法(原 Ch6)

  • 进来时以为把内容拼起来就行 → 出去时知道两个效应叠出「平庸之谷」(开头结尾记得牢、中段被略过),三明治写法是对策
  • 进来时以为提示词只能是问答 → 出去时知道三种文档原型(建议对话/分析报告/结构化文档)各有强项,Markdown 是通用底座
  • 进来时以为「替模型开个头」是作弊 → 出去时知道 inception 是正规技巧:你写下答案的第一句,模型会接着当成自己的往下写
  • 进来时以为组装就是字符串拼接 → 出去时知道 token 数不可加、元素有位置/重要性/依赖三关系,组装是个背包式优化问题

09 驯服输出:格式、停顿与模型的「语气」(原 Ch7)

  • 进来时以为拿到 completion 直接用就行 → 出去时知道前奏分三种(结构/推理/废话),要设计可识别的头尾,stop 与流式取消各管一段
  • 进来时以为模型输出只有文字可读 → 出去时知道 logprobs 是它的「语气」,能当质量信号、能做分类校准、能找出文本里的「意外点」
  • 进来时以为分类就是「问它是哪类」 → 出去时知道选项首 token 不唯一会出合并陷阱(North 例),阈值要用 logprob 常数校准
  • 进来时以为微调是「更高级的提示工程」 → 出去时知道全量/LoRA/软提示各管一层,且微调后小红帽有两条路——提示词像旧文档,模型就「忘了」微调

10 工具与推理:让模型出手与出声(原 Ch8 前半)

  • 进来时以为工具调用是 API 的新魔法 → 出去时知道底层还是续写:工具定义进系统消息(TypeScript 形式),一次调用是十几个 token 里的五六步分类
  • 进来时以为工具设计就是把 API 文档贴进去 → 出去时知道两直觉(人易懂=模型易懂、照训练数据写)和一堆具体规矩,危险操作必须在应用层拦
  • 进来时以为模型「想什么」无法干预 → 出去时知道它没有内心独白,把思考「喊出来」(思维链)能让数学解题率从 ~20% 涨到 ~60%
  • 进来时以为 ReAct 只是又一种提示词模板 → 出去时知道「想-做-看」循环微调后能让 8B 模型超过不会推理的 62B 模型

11 造一个对话 agent:上下文、循环与 UX(原 Ch8 后半)

  • 进来时以为 agent 是个神秘黑盒 → 出去时知道它离 process_messages 只差一个 while 循环
  • 进来时以为上下文就是「聊天记录」 → 出去时知道要分 preamble/prior conversation/artifacts/current exchange 四块,各自有取舍
  • 进来时以为 UI 只是美观问题 → 出去时知道 spinner、工具 pill、参数可改可重提、危险操作授权,都是 agent 可信度的组成部分

12 工作流:把大目标拆成可靠的小任务(原 Ch9)

  • 进来时以为 agent 够聪明就能干复杂活 → 出去时知道通用性与强度此消彼长,复杂任务要拆成工作流(Shopify 三连败)
  • 进来时以为任务之间「传数据」是小事 → 出去时知道输入输出要先定 schema,模板法与工具法各有适用面
  • 进来时以为流程图随便画 → 出去时知道 pipeline/DAG/环三种拓扑的代价,环要小心死循环
  • 进来时以为让 LLM 驾驶工作流是未来 → 出去时知道可以(agent of agents、stateful 任务、AutoGen/CrewAI),但「简单几乎总是更好」

13 评估:Copilot 写下的第一段代码(原 Ch10)

  • 进来时以为评估是「上线前跑个分」 → 出去时知道 Copilot 的第一段代码就是评估框架,它指导了之后全部开发
  • 进来时以为 offline 评估就是攒几个测试用例 → 出去时知道从 example suite 到 harness 的科技树,样本三来源各有陷阱(合成样本的「自家人判卷」偏见)
  • 进来时以为「让 LLM 评 LLM」是自己改自己卷子 → 出去时知道做对三件事(SOMA)就成立,且要拿人群分歧校准
  • 进来时以为线上指标看点赞点踩就行 → 出去时知道五类指标的可靠性排序,Copilot 选接受率是因为它与生产力最相关

14 展望:多模态、Artifacts 与两条家训(原 Ch11)

  • 进来时以为文本就是 LLM 的全部世界 → 出去时知道多模态怎么进来(图像变向量拼进序列),以及训练数据荒的阴影
  • 进来时以为对话 UI 已经到头 → 出去时知道缺的是「有状态的谈资对象」(Artifacts),而现在的实现还差三步
  • 进来时以为模型会一路变聪明下去 → 出去时知道 benchmark 在饱和(含污染),蒸馏与量化在压低价格,但模型永远不是神仙——提示词里没有的信息它就没有