大模型常见参数学习笔记

Hi,我是阿昌,今天记录下大模型里面几个经常看到,但是一开始又很容易混在一起的概念词汇。

比如平时调用大模型 API 的时候,经常会看到这些参数:

  • Token
  • 上下文窗口
  • Prompt
  • logits
  • softmax
  • Temperature
  • Top-p
  • Top-k
  • Repetition Penalty
  • Presence Penalty
  • Frequency Penalty
  • logprobs

这些词看起来像是模型底层原理,但其实和做 AI 应用开发非常相关。

因为它们会直接影响三个东西:

  1. 请求花多少钱
  2. 模型输出稳不稳定
  3. 结果会不会跑偏、重复、截断

下面就简单按调用大模型的流程,把这些概念梳理一下。

一、先把大模型调用过程说简单点

一次普通的大模型调用,大概可以理解成下面这个过程:

text 复制代码
用户输入 Prompt
  ↓
文本被切成 Token
  ↓
Token 放进上下文窗口
  ↓
模型根据上下文计算下一个 Token 的分数
  ↓
通过 softmax 把分数转成概率
  ↓
根据 Temperature / Top-p / Top-k 等参数进行采样
  ↓
一个 Token 一个 Token 生成最终回答

所以大模型不是一次性"写出一整段话",而是不断预测:

理解了这一点,后面的参数就好理解很多。

二、Token 是什么?

那 Token是啥?

Token可以简单理解为模型处理文本的最小单位。

它不完全等于中文里的"字",也不完全等于英文里的"单词",而是模型分词器切出来的一小段文本。

比如:

text 复制代码
我喜欢Java

可能会被切成:

text 复制代码
我 / 喜欢 / Java

也可能因为不同模型的分词器(Tokenizer)不同,被切成其它形式。

这里要注意:

大模型计费、上下文长度、输出长度,通常都是按 Token 算的,不是按字数算的。

所以平时看到模型价格里写的"每百万 Token 多少钱",说的就是输入 Token 和输出 Token 的成本。

一般来说:

  • 输入越长,input tokens 越多,成本越高
  • 输出越长,output tokens 越多,成本越高
  • 上下文越大,模型处理压力越大,延迟也可能越高

所以做 AI 应用时,不要无脑把所有内容都塞给模型。

三、上下文窗口是什么?

上下文窗口可以理解为模型一次请求最多能"看见"的 Token 总容量。

比如一个模型支持 128K 上下文,不代表它能无限记住所有内容,而是一次调用时最多能容纳 128K Token 左右的内容。

这个窗口里通常要放这些东西:

  • System Prompt:系统角色、回答规则、输出格式
  • User Prompt:用户真实问题
  • 历史消息:多轮对话里的前文
  • RAG Context:检索出来的知识片段
  • 工具定义:Function Calling、MCP 工具描述等
  • 输出预算:给模型生成回答预留的 Token

可以把上下文窗口想象成一个固定容量的桶。

桶里不仅要放用户的问题,还要放系统提示词、历史对话、知识库内容,最后还得给模型回答留位置。

所以实际预算可以简单记成:

text 复制代码
上下文窗口 >= 输入 Token + 最大输出 Token

如果是推理模型,比如一些带思考过程的模型,还要额外考虑:

text 复制代码
上下文窗口 >= 输入 Token + 推理 Token + 最大输出 Token

这里的推理 Token不一定会展示给用户,但它依然可能消耗模型的输出预算。

所以在工程上,比较稳的做法是:

  1. 先定好 max_tokens,也就是最多让模型输出多少
  2. 再计算输入内容能放多少
  3. 超出预算时,优先减少 RAG 片段、历史消息、长文本字段
  4. 不要赌模型自己会"看重点"

四、Prompt 是什么?

Prompt就是我们给模型的提示词。

它不只是用户输入的一句话,还可以包括系统规则、示例、上下文资料、输出格式要求。

比如:

text 复制代码
你是一个 Java 技术专家。
请用简单易懂的方式解释下面这段代码。
输出格式:
1. 代码作用
2. 执行流程
3. 可能的问题

这就是一个很简单的 Prompt。

一般来说,Prompt 写得越清楚,模型越容易输出稳定结果。

尤其是结构化输出场景,比如让模型返回 JSON,就不要只写:

text 复制代码
帮我提取用户信息

而是应该写清楚字段、类型、缺失值怎么处理、不要输出额外解释等。

Prompt 本质上是在约束模型行为。

采样参数是在控制模型"怎么选词",Prompt 是在告诉模型"应该做什么事"。

五、logits 和 softmax 是什么?

模型生成回答时,不是直接生成一句话,而是一步一步选下一个 Token。

每一步模型都会给词表里的候选 Token 打分。

这个原始分数就叫logits

比如模型要补全:

text 复制代码
今天天气真__

它可能给几个候选 Token 打分:

候选 Token logit 分数
5.0
不错 3.2
2.1
糟糕 0.5
紫色 -8.0

这个分数越高,说明模型越觉得这个 Token 适合出现在当前位置。

但 logits 只是分数,不是概率。

要把分数变成概率,就需要经过softmax

转换后大概就会变成:

候选 Token 被选中的概率
62%
不错 20%
10%
糟糕 5%
紫色 接近 0%

最后模型会根据这个概率分布进行采样,决定真正输出哪个 Token。

所以可以简单理解:

text 复制代码
logits:模型打出来的原始分数
softmax:把原始分数转换成概率
采样参数:控制最终从概率池里怎么选

六、Temperature 是什么?

Temperature可以理解为控制模型输出的"随机程度"。

它会影响 softmax 前的分数分布。

p(t) = softmax(z_t / T Temperature )

  • T ≈ 1:保持原始分布。
  • T < 1:分布更尖锐,更倾向选择高概率 Token(更"稳")
  • T > 1:分布更平坦,低概率 Token 更容易被采样到(更"野")

简单说:

  • Temperature越低,模型越保守,越倾向选择最高概率 Token
  • Temperature越高,模型越发散,低概率 Token 也更容易被选中

常见理解:

Temperature 效果 适合场景
0 ~ 0.3 很稳定,随机性低 JSON、信息抽取、分类
0.4 ~ 0.8 稳定和表达兼顾 技术分析、代码评审、摘要
0.8 ~ 1.2 更有变化,更有创意 文案、头脑风暴、创作

比如还是这个句子:

text 复制代码
今天天气真__

低温时,模型大概率每次都输出"好"。

高温时,模型可能输出"不错""棒",甚至偶尔输出一些不太常规的词。

所以如果你希望模型稳定输出 JSON,不建议把温度调太高。

如果你希望它帮你想 20 个广告语,那温度可以适当调高。

七、Top-p 是什么?

Top-p也叫 nucleus sampling,可以理解为按累计概率选择候选池。

它不是固定保留几个 Token,而是从概率最高的 Token 开始往下加,直到累计概率达到 p。

比如:

候选 Token 概率 累计概率
62% 62%
不错 20% 82%
10% 92%
糟糕 5% 97%
紫色 接近 0% 接近 100%

如果设置:

text 复制代码
Top-p = 0.9

那模型会保留累计概率达到 90% 左右的候选。

在这个例子里,大概率就是保留:

text 复制代码
好 / 不错 / 棒

然后在这些候选里面重新采样。

Top-p 的特点是比较灵活:

  • 如果模型非常确定,可能只保留 1 个候选
  • 如果模型不太确定,候选池会变大

所以实践中 Top-p 用得比较多。

记忆方法:Top-p(percentage百分比),就快速理解为保留前多少百分比

八、Top-k 是什么?

Top-k更简单,就是只保留概率最高的 k 个候选 Token。

比如:

text 复制代码
Top-k = 3

那就只保留概率最高的 3 个候选,其它全部丢掉。

它和 Top-p 的区别是:

参数 控制方式 特点
Top-k 固定保留 k 个候选 简单直接,但不看概率分布形状
Top-p 保留累计概率达到 p 的候选集合 更灵活,会根据模型确定程度变化

如果模型第一名概率已经 95%,Top-k=3仍然会保留 3 个候选;但Top-p=0.9可能只保留第一名。

所以 Top-p 更像是"按信心动态控制候选池"。

记忆方法:Top-k(kill杀死),就快速理解杀死保留几个

九、Penalty 系列参数是什么?

Penalty 系列参数主要用来解决模型"复读"的问题。

有时候模型会一直重复同一句话,或者在长回答里重复相同观点,这时就可以通过惩罚参数降低已经出现过的 Token 的分数。

常见有三个:

参数 作用 通俗理解
Repetition Penalty 惩罚已经出现过的 Token 说过的词,再说就扣分
Presence Penalty 只要出现过就惩罚,不关心出现次数 鼓励模型聊新内容
Frequency Penalty 出现次数越多,惩罚越重 重复越多,扣分越狠

但这里要注意,不是所有场景都适合开 Penalty。

比如结构化 JSON 输出里,字段名本来就需要重复出现:

json 复制代码
{
  "name": "阿昌",
  "score": 90
}

如果惩罚太强,模型可能反而不敢重复必要字段,导致 JSON 格式变差。

再比如 RAG 问答场景,本来就希望模型忠实引用检索内容,如果开太强的 Presence Penalty,可能会鼓励模型"讲点新的",反而增加幻觉。

所以比较保守的建议是:

不确定的时候,Penalty 保持默认,优先通过 Prompt、低温度、输出长度控制来解决稳定性问题。

十、logprobs 是什么?

logprobs是 log probabilities 的缩写,也就是对数概率。

它可以理解为模型对自己生成某个 Token 的"确信程度"。

一般来说:

  • logprob 越接近 0,说明模型越确定
  • logprob 越小,比如 -5、-8,说明模型越不确定

这个参数不是每个模型 API 都支持,但如果支持,在一些场景里很有用。

比如做信息抽取:

text 复制代码
金额:1000 元

如果模型生成"1000"对应的 logprob 很低,说明它其实不太确定,可能需要人工复核。

常见应用场景:

  • 置信度评估:判断模型对某个结果是否有把握
  • 异常排查:发现某批输入下模型整体置信度下降
  • 候选对比:查看 Top-N 候选 Token,用于二次排序

不过 logprobs 也会让响应体变大,并且不同厂商支持情况不同,使用前要看具体 API 文档。

十一、停止条件和截断风险

除了采样参数,还有两个工程上经常踩坑的点:max_tokensstop

max_tokens是最大输出 Token 数。

它是硬上限。

如果模型写到一半达到上限,就会被直接截断。

常见问题:

  • JSON 少一个右括号
  • 列表只输出了一半
  • 句子还没说完就结束

stop是停止词。

比如设置模型生成到某个字符串就停止。

它可以用于控制输出边界,但如果设置不好,也可能提前截断关键内容。

所以结构化输出场景,不只要关注 Temperature,还要关注输出长度和停止条件。

十二、采样参数配置建议

下面是一个偏工程实践的配置参考,不是绝对标准。

场景 Temperature Top-p Penalty 其它建议
JSON / 结构化输出 0 ~ 0.3 1.0 默认 配合 schema、解析失败重试
信息抽取 / 分类 0 ~ 0.3 1.0 默认 Prompt 写清楚字段和边界
代码评审 / 技术分析 0.4 ~ 0.7 0.9 默认 让模型按步骤分析,但最终输出要收敛
摘要 / 报告生成 0.4 ~ 0.8 0.9 默认 控制输出长度,避免啰嗦
多轮对话 0.6 ~ 0.8 0.9 适度开启 控制历史消息长度,必要时摘要历史
创意写作 / 头脑风暴 0.8 ~ 1.2 0.95 按需开启 接受多样性,后续做人工筛选
RAG 问答 0.2 ~ 0.6 0.9 不建议乱开 优先保证忠实检索内容
推理模型 看模型限制 看模型限制 看模型限制 很多推理模型会忽略采样参数,主要靠 Prompt 控制

别处总结摘要

text 复制代码
要稳定:低 Temperature + 明确 Prompt + 严格输出格式
要创意:高 Temperature + 较高 Top-p + 接受后处理
要防重复:先优化 Prompt,再谨慎考虑 Penalty
要省钱:控制输入 Token、输出 Token、历史消息和 RAG 片段

十三、总结

核心就是:

大模型不是魔法,它是在有限上下文窗口里,根据概率一个 Token 一个 Token 生成结果。

所以做 AI 应用开发时,要重点关注三件事。

  • 第一,Token是成本和容量单位。

    输入、输出、历史消息、RAG 内容都会消耗 Token,所以不能只按字数或者段落数来估算成本。

  • 第二,上下文窗口是有限资源。

    上下文越大不代表越可以乱塞内容,真正上线时还是要做 Token 预算、历史裁剪、RAG 片段去重和输出长度控制。

  • 第三,采样参数决定输出风格和稳定性。

    Temperature控制随机程度,Top-pTop-k控制候选池,Penalty 控制重复,logprobs可以辅助判断置信度。

如果是生产环境,优先级应该是:

text 复制代码
先写好 Prompt
再控制 Token 预算
再设置合理的 Temperature / Top-p
最后才考虑 Penalty、logprobs 等高级参数
相关推荐
AndrewHZ42 分钟前
【LLM技术全景】Transformer架构深度解析:Encoder-Decoder全理解
人工智能·深度学习·语言模型·大模型·llm·transformer·编解码技术
Stick_ZYZ42 分钟前
从项目启动到 Milvus 向量检索,我把 RAG 项目链路又打通了一层
java·人工智能·经验分享·ai·milvus
沫儿笙43 分钟前
新能源汽车焊接智能节气装置
人工智能·机器人·汽车
包子BI大数据43 分钟前
2.COZE-RAG知识库搭建
python·ai·aigc
Hi~晴天大圣44 分钟前
AI Engineer发展历程
prompt·context·harness
程序员cxuan1 小时前
太顶了,ChatGPT 要和 Codex 搞一起了。
人工智能·后端·程序员
weixin_446260851 小时前
ClinEnv:面向Agent的交互式多阶段电子健康记录(EHR)环境
人工智能
allein_STR1 小时前
【Transformer拆解】-4. 残差连接(Residual Connection)与层归一化(LayerNorm)
人工智能·深度学习·transformer
码破天机1 小时前
【Dify解惑:Prompt变量插值与Context上下文为什么分开设计?】
prompt