跳到主要内容

挑词的旋钮,与选模型这件事

这一章讲三件事: 第 02 章那张候选表算出来之后,还有哪些设定在决定「照这张表怎么挑」; 每个设定各治什么毛病、拧过头会怎样;以及为什么「选哪个模型」这件事其实排在所有设定之前。

它在全书链条里的位置: 第 02 章说了「调低随机度治不了幻觉」, 这一章把那句话展开成机制,顺便交代你在任何一份接口文档里都会看到的那几个可调设定各是什么这些旋钮一个都治不了幻觉——它们治的是别的毛病,而那些毛病也真的存在。

1. 顶层全景:这一章的六个旋钮各拧在哪一步

你的一段话 ──→ 模型算出一张候选表(第 02 章) ──→ 照表挑一个 ──→ 接上去,再来一遍
▲ ▲ ▲
│ │ │
┌────┴────┐ ┌──────┴──────┐ ┌──────┴──────┐
│ 两种惩罚 │ │ 温度 / top-p │ │ 长度上限 │
│(压重复) │ │(挑得多大胆) │ │ 停止序列 │
└─────────┘ └─────────────┘ │ 轮数上限 │
└─────────────┘
而在这一切之前:你选了哪个模型,决定了上面这些旋钮你有几个能拧。

图说:三组旋钮拧在三个不同的位置上——改表、改挑法、改什么时候停。
**没有一组能凭空加出一道「这句是真的吗」的检查。**

这一章的主走查是一句提示词:「列 10 件在杂货店能做的有趣事。」 下面每一节都拿它跑一次,只改一个旋钮,看输出怎么变。六步各在哪一节:

走查在哪一节这一步拧哪个旋钮
第 ①② 步第 2 节温度 0.3 与温度 2,同一句话跑两次
第 ③ 步第 4 节top-p 从 0.9 收到 0.5
第 ④ 步第 6 节给那十条加上频率惩罚
第 ⑤ 步第 7 节固定随机种子,再跑两次
第 ⑥ 步第 8 节选完模型,手上还剩几个旋钮能拧

第 3、5 节不在这条走查上:一个拆掉「随机度越高越有创意」这个误解, 一个讲长度上限那一类「让它收口」的拧法。

先说清一个名字:像这样在调用模型时可以传进去的设定,接口文档里都叫参数。 (留意一个重名: 第 10、11 章会说「一个模型有七十亿个参数」,那里指的是模型内部那些数。 本组文档在可能混淆的地方一律写全——调用参数模型参数。)

2. 温度:同一句话问两遍,答案为什么不一样

这一节回答一个你八成已经遇到过的现象,并给出它背后那个可以调的设定。

先看现象

同一句话问它两遍,两次回答不一样;或者让它「换一版」,它真能给出另一版。

这不是它记性不好,是设计里故意留的随机。

回到第 02 章那张候选表。假设它写到某处,表上是这样(这些数是为演示编的):

下一个词元的候选: 逛一逛 40% 试吃 25% 数一数 15% 拍照 8% …

最自然的做法:永远挑 40% 那个 → 稳定,但十条建议全是同一个调子,写长了还会开始复读
真实的做法: 有时候故意挑排名靠后的

温度到底在调什么

从候选表里挑出一个来的这个动作,叫采样(不是「取平均」的那种,就是「抽一个」)。

「可能性有多大」这件事,数学上叫概率:0 表示不可能,1 表示一定发生; 候选表上那个「逛一逛 40%」,写成概率就是 0.4。

而「所有候选各占多少概率、加起来正好是 1」这样一整张表,数学上就叫分布

这两个词合起来的正式说法叫概率分布——你在任何一篇讲这类模型的文章里都会撞见它。

温度就是控制这次抽签有多大胆的那个设定:它作用在这个概率分布上,把差距拉大或者抹平1

温度那张表被怎么动你看到什么
0差距拉到极致:40% 那个变成 100%永远挑最高的;同一句话问一百遍,一百遍一模一样
0.3差距略微拉大稳、聚焦、少花样
1.0 附近基本保持原样有变化,还在正常范围
2差距被抹平:8% 那个和 40% 那个几乎一样容易被抽中开始出现本来根本不该考虑的词

关键在最后一句话:温度不改变这张表上哪些词、也不改变它们的排序,只改变「抽签时差距有多大」。 (这正是第 02 章那个结论的机制:表本身没变,更没有凭空多出一道核验。)

书给的实用带,以及它为什么可以直接用

作者给了一组经验值2:

场景温度理由
要事实的问答(查规格、查政策)0.3 上下要的是同一个问题永远同一个答案
一般的产品问答0.4–0.6既准又不像机器人念稿
推荐、闲聊、想点子0.7–1.0要多样性
超过 1.0——有语无伦次的风险

这组数字是试出来的,不是推出来的。 书自己也说要针对你的场景实测。 但它有一个可靠的用法:拿它当起点,而不是当结论。

走查第 ①② 步:同一句话,温度 0.3 和温度 2

同一句「列 10 件在杂货店能做的有趣事」,书里给了两次真实运行的结果:

温度 0.3
1. 在货架间藏几张写着傻话的小纸条,给别的顾客找
2. 假装自己是某个你并不在的部门的店员,帮迷路的顾客找东西
3. 在试吃台反复拿,直到店员终于注意到你
…十条都是这个调子:通顺、切题、可复现

温度 2
1.、2.、3. 仍然正常
4. Roll VLC/BSC safety-ed commercialsuffix forums/routes/documents attractiveness
Maryland pointed most uneldorf jungle oppressed surrogate subset stones
boxShadow UIApplicatiion Disable nonprofit iterations unsafe schwer otherwise

图说:第 4 条不是「更有创意」,是**词串**——它已经不是句子了。
这两段是书里的真实输出,不是我们编的。

注意书里这两次演示并不是严格的对照实验: 温度 0.3 那次用的是一家的模型、问的是「10 件独特的事」; 温度 2 那次用的是另一家的在线试验台、问的是「10 件古怪又好玩的事」3我们并排放它们是为了看清温度的作用,不是在报告一次受控实验。

3. 「随机度越高越有创意」是个误解

上一节那第 4 条,是理解这整套旋钮的关键证据。

温度 2 的时候,模型并没有变得更有想象力。它是把「本来只有百分之零点几可能性的词」也放进了抽签池。 那些词之所以可能性低,不是因为它们冷门有趣,是因为它们在这个位置上根本讲不通

书里另有一处更极端的例子:问「什么是创造力」,温度 2 下它直接吐出 Compiled.hyFaainaRegularbubble… 这样一串毫无意义的字符4

一句话:温度调高不是「让它敢想」,是「让它敢挑不该挑的」。 在 0 到 1 之间它表现为文风变活,超过 1 之后它表现为语义崩掉—— 同一个动作,只是程度过了线。

4. 另一个旋钮:不设温度,改划一条线

这一节讲第二个你一定会在接口文档里撞见的名字。

温度动的是「差距拉多大」。另一条路完全不动差距,而是先把候选表截断: 把候选按可能性从高到低排队,从头开始累加,加到够某个比例就不再往下看,后面的一律不考虑

这个旋钮的名字叫 top-p。 设成 0.9,意思就是 「只考虑那一小撮加起来刚好凑够 90% 可能性的词元」5

它还有一个学名叫核采样(nucleus sampling)——同一件事的两个名字,你都会见到。

候选表: 逛一逛 40% 试吃 25% 数一数 15% 拍照 8% 闻一闻 5% …(长尾几百个)

top-p = 0.9 → 累加 40+25+15+8 = 88%,再加「闻一闻」到 93% ≥ 90% → 池子 = 前 5 个
top-p = 0.5 → 累加 40+25 = 65% ≥ 50% → **池子只剩前 2 个**

图说:top-p 改的是「有几个词有资格进抽签池」,温度改的是「池子里怎么抽」。

书给的实用带: 从 0.9 起步;0.5–0.7 更聚焦更确定;0.8–0.95 更多样6

还有一条必须记住的操作纪律:

温度和 top-p 都在控制随机度,但作用方式不同。官方的建议是:两个里只调一个,不要同时调。7

走查第 ③ 步:把 top-p 从 0.9 收到 0.5

同一句杂货店的问题,候选池从五个收到两个,结果就是十条建议里重复的花样变多、 措辞变得保守——但它们仍然全都是通顺的句子

这就是 top-p 和温度最实用的差别:top-p 收紧只会让输出变无聊,不会让它变成词串; 而温度调过 1 之后会直接崩。

5. 长度上限,以及另外两个「让它收口」的拧法

这一节先破一个直觉,再给三个工具。

先破直觉:输出越短,不等于越准

限制长度确实有用,但理由不是「短就准」。 书说得很清楚:回答越长,它就多出越多次「随口添一句没有依据的细节」的机会—— 哪怕核心答案是对的8

但反过来不成立。 书特意点了一个反例:让模型把中间的思考步骤一步一步写出来 (这套做法叫思维链,第 04 章整节讲它),故意产出更长的输出,质量反而更高9

所以目标不是「更短的回答」,而是「把回答的范围收到它答得可靠的那一块」。10

书给的起步带:先试 200–500 个词元的上限11。这个数有参照物: 第 02 章说过词元是切分文字的最小单位,英文里 200–500 个词元大致相当于 150–380 个单词 ——也就是两三段话(这个换算不在书里,来自通用知识)。

同一件事的另外两个拧法

用户问一句、它答一句算一次,这个计数单位就叫轮。 原书这一节的标题其实是「限制输出和轮数」,长度上限只是其中一条,另外三条同样实打实12

其中第二条要先说清一个名字:给它定一个「见到就立刻收口」的字串, 这个字串在接口文档里叫停止序列(序列 = 一串按先后排好的东西,这里就是几个字符)。

拧法怎么做治什么
停止序列传一个字串进去,模型一写到它就立刻收口。这个设定在接口文档里写作 stopstop_sequences让回答止步于该止步的地方。书给的例子:把换行符设成停止序列,它就写不出第二段
对话轮数上限给整段对话设一个最大轮数,并写清什么条件下终止多绕一轮就多一次它自由发挥的机会
把结束权交给用户让用户能随时结束这段对话同上,只是把闸门交到人手上

停止序列这个名字必须留下: 你在任何一家的接口文档里都会看到 stop 这个参数, 而它就是这里说的这件事

6. 两种重复惩罚,治的是两种不同的啰嗦

这一节的两个旋钮长得很像,但治的毛病不一样,分清楚才用得对。

先看现象

不加任何处理时,聊天机器人容易反复推荐同一件商品、反复用同一句套话, 对话推不下去13

两种压法

它们都作用在候选表上——把已经出现过的词元的可能性压下去。差别在「怎么算压多少」:

旋钮怎么压治哪种啰嗦
频率惩罚按已经出现过几次,递增地压。 出现 1 次压一点,出现 5 次压很多「同一句话里反复推同一个产品名」
存在惩罚只要出现过一次,就一律压同样多,不看次数「换了个话轮还在讲同一个话题」

书给的取值:范围是 −2.0 到 2.0,大多数场景用 0.5–1.014

走查第 ④ 步:给杂货店那十条加上频率惩罚

不加惩罚: …3. 在试吃台反复拿 …5. 在试吃台比较不同品牌 …8. 记录试吃台的口味
「试吃台」出现三次

频率惩罚 0.8:
第一次出现「试吃台」之后,它的可能性被压一档;
第二次出现之后再压一档 → 第三处改成了别的活动

图说:惩罚不禁止重复,只是让重复越来越难。**这些是为演示编的,不是书里的输出。**

注意惩罚的副作用:压得太狠,它会为了避开用过的词而说些奇怪的话。 这也是书把推荐值定在 0.5–1.0、而不是顶格 2.0 的原因。

7. 完全复现做不到——这一节是书里最诚实的一段

这一节回答:把所有旋钮都拧死,能不能保证两次运行一字不差。不能。

先看现象

即使把温度设成 0.1、把 top-p 关掉,同一句话跑多次,推荐结果仍会略有不同15

为什么

书给的理由是两条,都不在旋钮这一层:

  1. 第一条是:计算机存小数时位数有限,算的时候必然有极小的舍入差别—— 这类小数算术叫浮点运算,而那点差别在层层计算里会被一点点放大;

  2. 第二条是:同一批计算被拆到很多个部件上同时做——这叫并行; 而谁先算完谁后算完的顺序会变,加起来的结果就可能差最后几位。

这两条合起来,会让候选表上的数字有微小的抖动;绝大多数时候不影响挑谁, 但当第一名和第二名本来就贴得很近时,抖动就足以让结果翻转。

书给这件事起了名字:内在随机性——靠调采样参数或者改提示词,消不掉的那部分变化16

走查第 ⑤ 步:固定随机种子,再跑两次

随机种子是给抽签用的随机数发生器定的一个起点:同一个种子,抽签序列就一样。 接口里写成 seed=42 这样17

seed=42,温度 0.1,跑第一次: 推荐 A、B、C
seed=42,温度 0.1,跑第二次: 推荐 A、B、C ← 大多数时候一致
seed=42,温度 0.1,跑第三次: 推荐 A、B、**D** ← 偶尔仍会翻一个

图说:种子消掉的是「抽签」这一层的随机,消不掉「算数」这一层的抖动。
**这三次结果是为演示编的。**

书给的两条务实做法: 固定种子;或者干脆跑多次,取出现次数最多的那个答案18。 (后一条在第 04 章会拿到一个正式的名字:叫自洽——同一题问几遍,看几次答案彼此一致不一致; 到第 17 章它会变成一种评测手段。)

8. 顺序其实是反的:先选模型,再谈旋钮

这一节把整章倒过来讲一遍,而且它是这一章最实用的一段。

先看现象:有的模型根本不给你温度这个旋钮

你照着上面调了半天温度,换一个模型,发现这个参数被完全忽略——它压根不吃这一套。

这不是 bug。 今天最重要的一条模型分类就在这里:有一类模型拿到问题不马上动笔, 而是先额外花一大段计算「想」一遍,再开始写——这一类模型叫推理模型。

先澄清一个中文重名,否则后面几章会读岔:「推理模型」里的「推理」,说的是它答之前先想。 而另一个到处出现的词也叫推理——英文是 inference,指的是 「把模型跑一遍、产出结果」这个动作本身,和想不想没有关系。 本组文档里,后者一律写成「跑一遍模型」或「生成」,只在必须用行业原词的地方 (比如第 19 章那句「九成七的费用花在这一步」)才写「推理(inference)」并当场说明。

普通模型推理模型
它怎么答拿到问题直接开始一个词元一个词元地写先额外花一大段计算「想」一遍,再开始写
擅长什么绝大多数日常任务数学、写代码、做计划、需要一步步推的活
代价——更慢、更贵
旋钮温度、top-p 都能拧很多不支持这些采样参数;有的完全忽略温度,改用一个「想多久」的参数(reasoning_effort)19

作者给的经验法则

先用普通模型。提示词写好了它还搞不定,再上推理模型。 任务简单但量很大,就用能过质量线的最小模型。20

还有一条轴:用别人的接口,还是自己跑

书还点了另一条轴:可以整个下载下来、在自己机器上跑的那类模型—— 程序连同模型内部那些数一起公开,所以叫开源模型。它换来的是三件事21:

  • 生命周期在自己手里——不会某天被供应商宣布下线;
  • 数据不出自己的机房——受监管的行业(医疗、金融)靠这一条;
  • 可以改成自己这一行的样子(第 10、11 章讲怎么改)。

代价是你得自己养机器: 这类模型跑起来要显卡(行话叫 GPU, 它擅长同时做大量同类计算,正是这类模型需要的),还要有人运维。

走查第 ⑥ 步:选模型这一步做完,你手上还剩几个旋钮

选了普通模型 → 温度 ✓ top-p ✓ 长度上限 ✓ 停止序列 ✓ 两种惩罚 ✓ 种子 ✓
选了推理模型 → 温度 ✗(很多直接忽略) top-p ✗ 长度上限 ✓ 停止序列 ✓
多出来:「想多久」这一个
选了自己跑的 → 全都有,而且多出「改模型本身」这条路;代价是显卡和运维

图说:这就是「先选模型」的实际含义——**它决定了这一章前七节里,你能用上哪几节。**

一条可以马上照做的建议

把模型名做成配置项,不要写死在代码里。22 理由很实在:每一家大厂都在相当短的周期里下线过老模型; 而且更好更便宜的新模型出来时,你希望换一行配置就能试。

这条建议在第 19 章会再出现一次,那里给了「什么时候该换模型」的四个信号。

9. 作者的判断与证据

书里给了证据的:

说法证据是什么
温度调到 2 会产出词串两段真实运行输出(杂货店那条、以及「什么是创造力」那条)
温度 0 不能可靠减少幻觉引了一项实证研究(编号我们没核到,见第 02 章)
完全确定性做不到一条机制上的解释(浮点运算 + 并行计算),没有实验数据
温度和 top-p 只调一个引的是模型供应商的官方建议,不是实验结论

作者的推测或经验值:

说法它是什么
事实类 0.3 / 产品问答 0.4–0.6 / 闲聊 0.7–1.0经验带。 书自己说要针对场景实测,这组数只是起点
长度上限 200–500 词元经验值。 书同时警告:限得太死会砍掉有用的细节
惩罚取 0.5–1.0经验值。 没有给出这个区间是怎么定的
「先用普通模型,不行再上推理模型」经验法则。 合理,但书没给成本对照数字

判断(我们的,不是书里的): 这一章的六个旋钮里,只有长度上限和停止序列 是真正意义上的「可靠性工具」——它们减少了模型自由发挥的空间。 温度、top-p、两种惩罚调的都是文风;它们让输出更好看、更不重复, 但没有一个能让一句假话变成真话把它们当成可靠性手段,是这一行最常见的一种误配。 如果错,会错在: 如果某个场景里「重复」本身就是主要失效模式 (比如它反复推荐同一个已售罄的商品),那两种惩罚就确实是在提升可靠性—— 判据是:你要治的毛病,是「说错了」还是「说腻了」。

10. 边界与局限

  • 没有讲这些旋钮在数学上到底怎么作用。 温度是怎么「拉大差距」的、 top-p 的累加是在什么分布上做的,书都只给了效果,没给公式;
  • reasoning_effort 只有一个名字。 它有哪些取值、和温度是什么关系,书一笔带过;
  • 没有讲不同供应商的取值范围不同。 书的代码注释里出现过「这一家的温度范围是 0 到 1」 这样的提醒,但没有系统对照——这是实际会踩的坑:同一个 0.7,在两家那里不是一回事;
  • 开源模型那一段过于乐观。 书说「近年质量差距已经缩小很多」, 但没有给任何对照数据,也没说清「差距缩小」是在哪类任务上;
  • 书里的具体模型名不要记。 未定稿的稿子里模型名前后不一致(同一章前文一个名字、 项目代码里换了另一个),这本身就是「把模型名做成配置项」那条建议的活例子

11. 可带走的

全章那条走查,一行写完:「列 10 件在杂货店能做的有趣事」→ 温度 0.3:十条通顺可复现 → 温度 2:第 4 条变成 boxShadow UIApplicatiion Disable nonprofit 词串 (书里的真实输出)→ top-p 从 0.9 收到 0.5:候选池从五个收到两个,变保守但仍通顺 → 加频率惩罚 0.8:重复的「试吃台」被压掉 → 固定种子跑三次:仍偶有一次翻一个 (这几处演示数为编的)→ 而这一切的前提是:你选的模型给了你这些旋钮。

  1. 温度改的是「照候选表怎么抽签」,不改这张表本身,更不会加出一道核验;
  2. 温度带:事实类 0.3 / 产品问答 0.4–0.6 / 闲聊 0.7–1.0;超过 1.0 有语无伦次的风险;
  3. 调高温度不是「让它敢想」,是「让它敢挑不该挑的」——过了 1 就会吐词串;
  4. top-p 是另一条路:先按累积可能性截断候选池。 从 0.9 起步; 温度和 top-p 只调一个,不要同时调;
  5. 限长度的理由不是「短就准」,是「少给它随口添细节的机会」; 目标是把回答收到它答得可靠的那一块,而不是越短越好;
  6. 同一件事还有两个拧法:停止序列(stop)和对话轮数上限;
  7. 频率惩罚按出现次数递增地压,存在惩罚出现过就一律压——治两种不同的啰嗦,取 0.5–1.0;
  8. 完全确定性做不到: 浮点运算和并行计算带来的抖动,靠旋钮消不掉; 能做的是固定种子,或者跑多次取多数;
  9. 顺序是反的:先选模型。 推理模型答之前先想,更慢更贵,而且很多不吃温度这些参数;
  10. 把模型名做成配置项——每家大厂都下线过老模型;
  11. 这六个旋钮里,只有长度上限和停止序列算可靠性工具,其余调的是文风。

12. 原文地图

主题原书章原文位置
选模型是最要紧的决定Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:31(搜「most consequential decision」)
推理模型与 reasoning_effortChapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:36(搜「reasoning models and non-reasoning」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:43(搜「reasoning_effort」)
先用普通模型这条法则Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:46(搜「start with a non-reasoning model」)
开源模型的三条收益Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:59(搜「control the model lifecycle」)
模型名做成配置项Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:73(搜「deprecated older models」)
温度在调什么Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:95(搜「controls the randomness」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:96(搜「adjusts the distribution」)
温度实用带Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:133(搜「0.4-0.6」)
温度 2 的真实输出Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:202(搜「boxShadow UIApplicatiion」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:279(搜「Compiled.hyFaaina」)
top-p 是什么Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:301(搜「setting top-p to 0.9」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:339(搜「0.5 to 0.7」)
两个只调一个Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:391(搜「adjusting one or the other」)
长度不是越短越准Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:399(搜「chain-of-thought」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:401(搜「scoped to what the model can reliably answer」)
停止序列与轮数上限Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:419(搜「Use stop sequences」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:426(搜「maximum」)
200–500 词元Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:444(搜「200-500 tokens」)
两种惩罚Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:455(搜「frequency penalty penalizes」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:458(搜「presence penalty is simpler」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:461(搜「-2.0 to 2.0」)
内在随机性Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:499(搜「Intrinsic randomness refers」) · text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:506(搜「floating-point operations」)
随机种子Chapter 2: Prompt Engineeringtext/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:551(搜「seed=42」)

Footnotes

  1. 出处:「Chapter 2: Prompt Engineering」第 95 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:95,搜「controls the randomness」)与第 96 段(同文件 :96,搜「adjusts the distribution」)。原文的说法是:它调整的是「下一个词元各自可能性」的那个分布。书没有给出它在数学上怎么调整——这是本章的一处缺口。

  2. 出处:「Chapter 2: Prompt Engineering」第 133 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:133,搜「0.4-0.6」)与第 134 段(同文件 :134,搜「Values above 1.0 risk」)。事实类问答用 0.3 见第 105 段(同文件 :105,搜「low temperature of 0.3」)。

  3. 出处:「Chapter 2: Prompt Engineering」第 181 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:181,搜「10 unique things to do at the」)与第 189 段(同文件 :189,搜「10 weird and fun things」)。两次演示的提示词与模型都不同,这一点是我们核出来的,书里没有说明。

  4. 出处:「Chapter 2: Prompt Engineering」第 279 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:279,搜「Compiled.hyFaaina」)。书在第 276 段(同文件 :276,搜「completely nonsensical」)给出的评价是:温度 2 的回答「完全不知所云」。

  5. 出处:「Chapter 2: Prompt Engineering」第 301 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:301,搜「setting top-p to 0.9」)。原文:模型只会考虑「累积可能性刚好够到这个门槛的那一小撮最可能的词元」。「核采样」(nucleus sampling)是它的另一个名字,见第 296 段(同文件 :296,搜「nucleus」)。

  6. 出处:「Chapter 2: Prompt Engineering」第 339 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:339,搜「0.5 to 0.7」)与第 343 段(同文件 :343,搜「0.8 to 0.95」);从 0.9 起步见第 335 段(同文件 :335,搜「recommended to start with a value」)。

  7. 出处:「Chapter 2: Prompt Engineering」第 391 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:391,搜「adjusting one or the other」)。这是书转述的模型供应商官方建议。

  8. 出处:「Chapter 2: Prompt Engineering」第 397 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:397,搜「unsupported」)。原文:限制输出长度和对话轮数,能减少模型「通过不必要的展开引入无据主张」的机会。

  9. 出处:「Chapter 2: Prompt Engineering」第 399 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:399,搜「chain-of-thought」)。

  10. 出处:「Chapter 2: Prompt Engineering」第 401 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:401,搜「scoped to what the model can reliably answer」)。

  11. 出处:「Chapter 2: Prompt Engineering」第 444 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:444,搜「200-500 tokens」)。原文同时提醒:限得太死会切掉有用的细节,完全不限则有啰嗦跑题的风险。补充(不在书里,来自通用知识):英文文本大致 1 个词元约合 0.75 个单词,所以 200–500 词元约合 150–380 个英文单词。

  12. 出处:「Chapter 2: Prompt Engineering」第 419 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:419,搜「Use stop sequences」)、第 426 段(同文件 :426,搜「maximum」)与第 432 段(同文件 :432,搜「Provide user controls」)。原书这一节的标题是「Limit output and turns」——「and turns」那一半常被忽略,而它是三条里最省事的一条。

  13. 出处:「Chapter 2: Prompt Engineering」第 468 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:468,搜「repeat suggestions and phrases」)。

  14. 出处:「Chapter 2: Prompt Engineering」第 455 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:455,搜「frequency penalty penalizes」)、第 458 段(同文件 :458,搜「presence penalty is simpler」)与第 461 段(同文件 :461,搜「-2.0 to 2.0」)。

  15. 出处:「Chapter 2: Prompt Engineering」第 503 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:503,搜「temperature to a」)与第 505 段(同文件 :505,搜「slightly different recommendations」)。

  16. 出处:「Chapter 2: Prompt Engineering」第 499 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:499,搜「Intrinsic randomness refers」)与第 506 段(同文件 :506,搜「floating-point operations」)。

  17. 出处:「Chapter 2: Prompt Engineering」第 551 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:551,搜「seed=42」)。

  18. 出处:「Chapter 2: Prompt Engineering」第 551 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:551,搜「remains consistent across」)。书给的第二条做法是跑多次做多数表决,代码里用的是「取出现次数最多的那一个」。

  19. 出处:「Chapter 2: Prompt Engineering」第 40 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:40,搜「do not support the full」)与第 43 段(同文件 :43,搜「reasoning_effort」)。原文还提醒:支持情况因供应商和版本而异,用之前一定要查这个模型自己的文档

  20. 出处:「Chapter 2: Prompt Engineering」第 46 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:46,搜「start with a non-reasoning model」)。

  21. 出处:「Chapter 2: Prompt Engineering」第 59 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:59,搜「control the model lifecycle」)。原文点名的例子是 LLaMA、Mistral、Qwen 这几个可以下载下来自己跑的模型系列。

  22. 出处:「Chapter 2: Prompt Engineering」第 73 段(text/05-ch02-chapter-2-generating-trustworthy-responses-with-.txt:73,搜「deprecated older models」)与第 76 段(同文件 :76,搜「straightforward to swap models」)。