← 进阶 vibe coding生成参数怎样影响回答

免费文章 · 02 理解模型怎样生成回答

生成参数怎样影响回答


  前面几节,我们从 token、向量和注意力一路讲到 Transformer,逐渐看清了模型怎样根据前文计算候选得分,再一步步生成回答。了解了这些原理,接下来就有一个更贴近实际使用的问题:我们能怎样影响模型的生成过程,让它更好地完成任务?

  比如让 AI 根据一组日志提出故障排查方案。我们希望它能分析不同的故障原因,给出完整、可执行的检查步骤。但实际使用时,有时分析不够深入,有时回答写到一半就停了下来;同样的问题重新生成,内容也可能有所不同。

  这些现象看起来都与生成有关,背后的原因却不一样。这里就会涉及推理投入、输出上限和采样参数。它们影响的环节各不相同,理解这些区别,我们才能知道什么时候该调整哪一项,以及哪些问题并不能靠调整参数解决。

推理投入影响模型怎样分析问题

  从日志中找出一个报错时间,和根据多条日志判断故障原因,显然不是同一回事。后者需要考虑更多问题:哪些原因能够解释现象?有没有相互矛盾的线索?下一步应该检查什么,才能缩小排查范围?

  对于支持调节推理投入的模型,我们可以为这类复杂任务分配更多的推理预算,让模型有机会进行更充分的分析。不过,推理投入增加,并不保证结果一定更好。它具体改变了什么,还需要结合模型的实现方式和实际任务来看。

  对于支持推理控制的模型,我们可以通过 effort、thinking 等设置调整本次任务的推理投入。较高档位通常允许模型花更多计算来分析、比较和检查,可能改善复杂任务的表现,但也可能增加等待时间和资源消耗。需要注意的是,推理档位并不代表正确率,也不意味着模型每次都会用完固定数量的 token。

  比如,完整日志已经提供,AI 却总是在看到第一条报错后就急着下结论。这时,我们可以保持输入不变,尝试提高推理投入,看看它能否发现之前遗漏的线索。但如果关键日志根本没有提供,增加推理投入也无法凭空获得这些信息。前者需要更充分地分析已有资料,后者则需要先补充依据。

  那么,怎样判断提高推理投入是否真的有用?我们可以看它有没有考虑原先遗漏的线索、排除与证据冲突的原因,或者提出更有针对性的检查步骤。至于回答写得更长、等待时间更久,甚至模型声称“已经仔细检查”,都不能直接证明分析更充分。真正需要检查的,仍然是它给出的判断、依据和解决步骤。

推理与思考

  这里有两个容易混淆的概念。模型推理(inference),指模型使用已经训练好的参数,根据输入计算输出的整个过程;而我们在产品中看到的 reasoning / thinking(思考),通常指模型为完成任务进行的进一步分析、推导和检查。推理投入(effort)则用于调节这部分工作的程度。

  因此,即使关闭思考模式,模型仍然在执行 inference,只是没有启用同样的思考过程。不同模型的具体实现可能有所区别。

  实际使用时,我们可以先采用模型推荐的推理档位,再在相同任务上与更高一档进行比较。如果较低投入已经能够稳定完成任务,而提高档位没有带来明显改善,就没必要增加等待时间和资源消耗。

在不同服务中找到对应控制项

  不同模型和服务对推理投入的控制方式并不相同:有的提供 effort 档位,有的允许开启或关闭思考模式,也有的支持限制思考 token 的数量。下面整理了几种常见服务的接口设置,方便实际使用时查阅。

  以下信息以 2026 年 10 月的接口为参考,具体支持情况仍需以当前模型的官方文档为准。

服务实例

控制项

应怎样理解

OpenAI Responses

reasoning.effort

调整推理投入档位,支持的级别因模型而异

Claude 自适应思考

output_config.effort

调整整次响应的工作投入,也影响思考深度

Gemini Interactions

generation_config.thinking_level

设置思考等级,引导模型分配推理投入

百炼中支持预算控制的 Qwen 型号

enable_thinking、thinking_budget

控制是否开启思考,以及允许使用的思考 token 上限

  需要注意,相似的控制项不代表完全相同的机制。例如,Claude 的 effort 还会影响回答和工具调用;Qwen 的 thinking_budget 则是思考 token 的数量上限。即使不同服务都提供“高、中、低”档位,也不能直接比较它们实际使用了多少计算资源。

  另外,并不是所有模型都允许自由调整采样参数。例如,GPT-6 在启用推理投入时需要移除 temperature、top_p 等设置;Gemini 3 系列建议保持默认温度;Claude Opus 5.5 则不接受非默认的采样参数。理解参数原理,不代表每个模型都需要或允许我们手动调整。

  因此,实际使用时,应先查看目标型号支持哪些设置,再通过对应的接口进行配置。如果使用 SDK、网关或第三方应用,还需要确认这些设置是否真正传递给了模型。

  不过,即使推理投入合适,回答也未必能完整输出。有时内容还没写完,就已经达到了生成长度的上限。这就引出了另一个需要考虑的问题:一次请求究竟能生成多少内容?

输出上限限制能生成多少

  推理投入影响模型能投入多少分析工作,输出上限则限制一次请求最多能生成多少 token。 在一些接口中,模型的内部思考和最终回答还会共用这份上限。如果前面消耗了太多,留给最终回答的空间就可能不足。

  以 OpenAI Responses 为例,max_output_tokens 包含推理 token、可见回答和其他不可见的输出 token。假设总上限为 1,000,推理过程已经消耗了 700,那么剩余的输出最多只能再使用 300。这只是为了说明计数关系,并不代表某个推理档位固定消耗这么多。达到上限后,回答可能被截断,甚至还没开始输出正文就停止了。

  那么,如果我们只想要一份简洁的排查方案,直接把输出上限设得很小就行了吗?未必。限制生成长度,不等于让模型学会简洁表达。 更合适的方式是先明确交付要求,例如“给出三个检查步骤,每步说明目的和判断结果”,再提供足够的输出空间。

  如果回答仍然不完整,就需要查看服务返回的停止原因和实际用量,再判断应该增加输出上限,还是减少不必要的推理与输出消耗。

  输出上限解决的是一次能生成多少内容。但即使生成空间足够,相同的输入也可能得到不同的回答。这又是为什么?要理解这种变化,我们还得回到模型每一步怎样选择 token。

同名长度参数,限制的内容可能不同

  不同服务对长度参数的定义并不一致。以百炼深度思考模型的 OpenAI 兼容接口文档为例,thinking_budget 限制思考 token,max_completion_tokens 限制思考与最终回复的总量,而该文档中的 max_tokens 只限制最终回复,官方建议新接入优先使用 max_completion_tokens。Claude 的 max_tokens 则将思考与最终回复都计入上限。

  因此,限制思考长度和限制总输出长度,是两回事。 总输出上限耗尽时,生成会被截断;达到思考上限后会怎样继续,则取决于具体模型和接口。实际配置时,我们需要确认每个参数究竟计算哪些 token,而不能只看名称。

温度改变的是候选分布

  前面我们已经知道,模型会为下一枚 token 计算候选得分(logits),再通过 softmax 转换成概率。温度(temperature) 就是在这一步影响概率分布的参数,它可以改变候选之间的概率差距,让采样时的选择更集中或更分散。

  还是用“早餐喝”的人工例子:豆浆、咖啡、茶的 logits 分别为 2、1、0。我们先固定这组得分,只观察温度带来的变化。

  假设温度为 T(T 大于 0),计算时会先把每个得分除以 T,再经过 softmax 得到新的概率:

plaintext
概率 = softmax(logits / T)

  当 T=1 时,得分仍然是 2、1、0,豆浆的概率为 66.52%;当 T=0.5 时,得分变成 4、2、0,差距被放大,豆浆的概率上升到 86.68%;而 T=2 时,得分变成 1、0.5、0,差距缩小,豆浆的概率降到 50.65%。

  可以看到,温度越低,概率越集中在高分候选上;温度越高,其他候选被抽中的机会也越大。 不过,这三种情况下,候选的排名始终没有改变,变化的是采样时各自被选中的机会。

  这也解释了为什么提高温度可能带来更多不同的表达,但多样性增加,并不意味着回答一定更好。实际使用时,我们需要根据任务对稳定性和多样性的要求来选择。

top-p 怎样筛选候选

  温度可以改变候选的概率分布,但我们还可以进一步缩小抽样范围,只从概率较高的一部分候选中选择。这就用到了 top-p(核采样)。

  它会先把候选按概率从高到低排列,再逐个累加,直到累计概率达到设定的阈值。随后,只保留这些候选,并重新分配它们的抽样概率。

  还是用“早餐喝”的例子。固定 T=1,豆浆、咖啡和茶的概率分别为 66.52%、24.47% 和 9.00%。

  假设 top-p=0.8,也就是累计概率至少达到 80%。只保留豆浆还不够,加上咖啡后,累计概率约为 91%,已经超过阈值。因此,豆浆和咖啡被保留,茶则不再参与这次抽样。

  不过,筛选后还需要重新分配概率。原来豆浆和咖啡合计约占 91%,现在只剩下它们两个候选,就需要把这部分概率重新调整为总和 100%。计算后,豆浆约为 73.11%,咖啡约为 26.89%。

  所以,top-p=0.8 并不是保留 80% 的候选,也不要求累计概率恰好等于 80%,而是保留累计概率达到阈值所需的最少候选。

  这里还会延伸出一个问题:如果同时调整温度和 top-p,会发生什么?本例先通过温度改变概率分布,再按 top-p 筛选。因此,即使 top-p 保持不变,温度变化也可能改变最终保留的候选。下面我们通过采样实验观察这个过程。

运行采样实验

沿用已准备的课程实验仓库,打开采样实验。

  1. 观察三档温度下的概率分布,再固定 T=1、top-p=0.8,检查候选筛选与概率重新分配。
  2. 点击“运行100次抽样”。种子2026应得到豆浆76次、咖啡24次、茶0次;改为2027再运行,对照75、25、0。
  3. 保持 top-p=0.8,将温度降到0.5,检查是否只剩豆浆;再把 top-p 改为1,重新运行并比较三个候选。

更换种子会清空记录。这是固定人工得分下的本地抽样,不调用模型。

  这些结果来自固定算法和随机种子的人工实验,能够重复观察采样过程,但不代表真实语言模型一定生成相同内容。实际服务还可能采用不同的采样处理方式。

保持 top-p,咖啡为什么消失了?

  保持 top-p=0.8,只把温度从 1 降到 0.5。先猜一猜:豆浆、咖啡和茶,最终还会保留几个候选?

  运行实验后,再想一想:咖啡的概率明明还大于零,为什么最终却没有机会被抽中?

查看答案与解析

  温度降到 0.5 后,豆浆的概率已经达到约 86.68%,超过了 top-p 设置的 80% 阈值。因此,只保留豆浆就足够了,咖啡和茶都会被排除。

  虽然咖啡经过温度调整后的概率仍然大于零,但它没有通过 top-p 的筛选,最终抽样概率就变成了零。豆浆则在重新归一化后,占据了全部抽样机会。

  这也说明,温度不仅会改变候选被选中的概率,还可能影响 top-p 最终保留哪些候选。

抽样频率不是回答正确率

  刚才的实验还有一个值得注意的现象:即使参数不变,多次抽样的结果也可能不同。

  保持 T=1、top-p=0.8,豆浆和咖啡的抽样概率分别约为 73.11% 和 26.89%。连续抽取 100 次,随机种子为 2026 时,得到 76 次豆浆、24 次咖啡;换成 2027,则得到 75 次和 25 次。两次都没有茶,因为它已经被 top-p 排除。

  为什么结果不完全相同?因为概率描述的是每次被抽中的机会,并不要求实际次数严格符合这个比例。而且,这里每次都从同一份概率分布中抽取,并不是连续生成 100 枚 token。真正生成文字时,每选出一枚 token,前文就会改变,下一步的概率也需要重新计算。

  那么,某个 token 被选中的概率很高,是否意味着它生成的内容更可能正确?并不是。这里就需要区分三种不同的数字:候选的选择概率、模型对答案的自我评价,以及实际任务的通过率。 它们各自说明的问题并不相同。

观察到的数字

能说明什么

不能据此推出什么

某枚 token 的抽样概率

在当前条件下,它被选中的机会

整个回答有同样的概率正确

模型说“我有 90% 把握”

模型给出了对自身答案的评价

它的判断真的有 90% 的准确率

一批任务的通过率

按照既定标准,实际有多少任务达标

换成其他任务也能达到相同水平

  理解这些区别后,我们再来看温度的作用。如果模型原本就给错误的候选较高得分,降低温度反而可能让它更容易被选中。因此,采样越集中,并不意味着答案越准确。回答是否可靠,仍要结合依据和实际结果判断。

温度为 0,为什么仍不一定完全复现?

  许多服务会把 T=0 视为每次选择得分最高的 token。如果候选得分完全相同,且最高分唯一,选择结果自然一致。但在云端服务中,模型每次计算出的得分未必完全相同。

  例如,服务负载可能改变推理批量和底层计算路径,浮点运算中的细微差异,也可能改变得分接近的候选排名。一些研究通过改进计算方式,提高了结果的可复现性。这说明,能否复现不仅取决于温度,也与模型的实际运行方式有关。

  本地实验可以通过固定算法和随机种子复现抽样结果,但不能据此保证云端模型也完全一致。比较真实模型时,还需要固定输入、具体型号和相关配置,并记录实际输出。

在固定任务中比较一次调整

  前面的采样实验让我们看到了概率怎样变化,但参数调整是否真的改善了任务结果,还需要进一步验证。接下来,我们换一个有明确判断标准的任务,比较不同推理投入带来的效果。

  假设我们要检查一段故事提纲,看看它有没有违背已经确定的人物设定。我们先自行核对,找出其中四处明确的冲突,再让 AI 完成同样的检查,并修改三步提纲。

prompt
只依据下面给出的设定,检查提纲中的冲突。
先逐项列出“提纲原句、冲突的设定、冲突原因”,再给出修改后的三步提纲。
不得改变设定中的时间、位置和物品条件,也不得新增窗户、传音手段或隔墙观察能力。修改后的三步仍发生在当天早晨到中午。
不需要公开思维过程,只交付检查结果和修改后的提纲。

背景:《青岚修仙录》的主角林青是青岚宗外门弟子,目前炼气三层,希望日后筑基。

设定:
1. 林青从今天早晨到中午一直在炼丹房,没有离开。
2. 陈师兄今天傍晚才到青岚宗山门。
3. 林青手边只有纸笔和一份灵草清单,没有传音符。
4. 炼丹房没有窗,林青也没有隔墙观察外面的能力。

待检查的提纲:
早晨,林青站在炼丹房窗边,看见已经来到山门的陈师兄。
上午,林青走出炼丹房,到院中整理灵草清单。
中午,林青回到炼丹房,用传音符把灵草清单发给陈师兄。

  怎样才算完成得好?不仅要找全四处冲突,还要准确对应相关设定,修改后的提纲也必须遵守全部约束。有了这些明确的标准,我们才能判断调整是否带来了实际改善,而不是只听模型说“已经修改好了”。

怎样核对这份故事练习

  早晨陈师兄尚未到山门,不能写成已经到达;炼丹房没有窗,不能安排窗边观察。这一句包含两个独立冲突。上午出门违反林青从早晨到中午没有离开的设定;中午使用传音符违反物品设定。这是需要覆盖的四处。

  一种可行改法是:早晨,林青在炼丹房核对灵草清单;上午,写下需要向陈师兄确认的问题;中午,整理要交给陈师兄的清单,等待傍晚之后会合。三步都在规定的时间段与房间内完成准备,并没有声称已经与陈师兄会合或传送清单。具体文句可以不同,只要不靠新增能力绕过限制。

  如果只指出“传音符不该出现”,漏掉其他冲突,检查不完整;如果删了传音符,却新增窗口或隔墙观察能力,改写仍然违规;如果答案被截断,缺少修改后的三步,也未完成交付。分别记录这些失败,不把它们合成一句“效果一般”。

  选择一个支持调整推理投入的工具,保持模型、输入、可用工具和输出上限不变,只改变推理投入。将默认或较低档位记为 A,高一档记为 B,先各运行一次,比较检查结果和修改后的提纲。

  每次都从新会话开始,记录四处冲突是否找全、修改后的三步是否遵守设定,以及完成时间。工具提供用量或费用时一并记录。不支持调整推理投入时,直接练习核对输出即可。

  这组对照只能提供初步线索,不能证明模型的普遍表现。如果两档都能完成任务,就比较时间和用量;如果高一档减少了遗漏,需要进一步验证时,再交替重复几组,或换一份有明确判断标准的材料。

  把这种方法用到其他任务中也是一样:资料不足,就先补充依据;分析遗漏,就比较推理投入;回答被截断,就检查输出预算;需要不同方案,则先明确比较方向和评价标准。一次只调整一个因素,再观察实际结果,才能更容易判断调整是否真正有效。

这次应该调整哪一项?

  学完推理投入、输出上限和采样参数,假设我们在请 AI 协助创作小说时遇到了四种情况:

  1. 已经提供完整的人物设定,AI 却仍然漏掉提纲中的冲突。
  2. 章节还没写完,就突然停在了半句话。
  3. 请 AI 核对人物会合的日期,材料中没有写,它却给出了确定日期。
  4. 要求给出五种不同的后续情节方案,结果只是换了几种说法。

  遇到这些问题,你会先检查什么,又会尝试怎样调整?如果直接把温度和推理投入全部调高,能解决这些问题吗?

查看答案与解析

  第一种,可以保持输入不变,比较提高推理投入后,AI 是否能找全冲突、减少遗漏。

  第二种,应先查看停止原因和输出预算,确认是不是生成空间不足。

  第三种需要补充缺失的信息,或者让 AI 明确指出现有材料无法确定会合日期。

  第四种则需要先说清楚“不同”体现在哪里,比如人物采取的行动、面对的阻碍或付出的代价,再判断是否需要调整生成方式。单纯提高温度,未必能得到真正不同的方案。

  这些问题需要的处理方式并不一样。 如果一次调整多个参数,即使结果改善了,也很难判断究竟是哪项调整发挥了作用。因此,更合适的做法是先找出问题所在,一次只改变一个因素,再根据实际结果判断是否有效。

学完这一模块,这些知识可以用在哪里

  从 token、向量、注意力到 Transformer,再到生成参数,我们已经沿着模型处理信息的过程走了一遍。这些原理虽然涉及不少公式和计算,但学习它们,并不是为了记住每一个细节,而是为了在实际使用 AI 时,能够更清楚地理解它的能力与局限。

  读懂新模型的说明。 当我们看到“更长的上下文”“更强的推理能力”“新的位置编码”等介绍时,就能理解它们分别涉及模型的哪些环节,以及可能带来什么变化。当然,技术上的改进能否转化为实际效果,还需要通过具体任务验证。

  安排输入和回答的空间。 理解 token 的切分与计数,我们就能更合理地估算资料占用、请求用量和生成预算,也能分清哪些问题需要补充信息,哪些可能与输出长度限制有关。至于怎样进一步组织和利用这些资料,后面的课程还会深入讨论。

  根据具体问题调整用法。 当 AI 的表现不符合预期时,我们可以更有方向地寻找原因:资料是否完整、已有信息是否被充分利用、推理投入是否合适、回答是否受到长度限制。理解各个环节的作用,能帮助我们找到值得调整的地方,而不是盲目修改提示词和参数。

  比较模型的能力、成本与适用任务。 面对“更强、更快、更便宜”的宣传,我们可以进一步了解比较的是哪些任务、采用了什么设置,以及实际完成质量、等待时间和使用成本。这样,选择模型时就不必只依赖排行榜或演示结果,而是能够结合自己的任务作出判断。

  不必一次掌握所有细节。 正如模块开头提到的,这部分知识有一定难度,也不是后续学习的前置要求。即使暂时没有理解全部公式,只要对模型怎样处理信息、各个环节承担什么作用有了整体认识,就已经有所收获。以后遇到需要深入研究的问题,再回来查阅也完全可以。

  接下来,我们进入「03 让模型用好上下文与记忆」。前面主要在理解模型怎样工作,接下来则更关注我们能做什么:怎样选择、组织和更新信息,让 AI 更好地完成眼前的任务。

讨论

登录后参与讨论