资料核验日期:2026-10-10。公开版保留整理正文与必要证据;原始资料通过来源链接回查。验证范围在正文中分别说明。
LLM 怎样理解输入并生成输出
整理与核验日期:2026-10-10。对象是以 Transformer 为基础的自回归语言模型;具体产品可能增加多模态编码、检索和其他结构。读完后应能解释一次回答经过的主要计算,以及哪些信息需要自己提供。
1. 从一个材质脚本问题出发
假设你要解释资产命名检查器。只问“这个脚本做什么”时,模型没有脚本,就只能请求更多信息或按常见做法猜测。提供 lab.py 后,才能据实际 inspect_csv 分析字段、规则和错误路径;再提供 assets.csv,才能指出第 3 行前缀不符合规则、第 4 行名称重复、第 5 行两个字段为空。
用户看到的对话框只是输入入口。系统实际提交的上下文还可能包含产品指令、历史消息、项目规则、工具描述和文件片段。模型不能凭文件路径自动取得文件;宿主必须读取并把内容交给模型。某些编程产品会自动完成这一步,仍应检查它实际读了什么。
本章架构图把一次文本计算展开。工具读取文件属于图外的宿主行为;模型输出工具参数后,也要由执行器真正运行工具。
2. 文字先变成 Token
分词器把文本映射为词表中的整数 ID。一个 Token 可能表示一个词、部分词、符号或字节片段。中文字符、英文单词和代码变量的切分都依赖具体分词器,因此“100 个字一定等于 100 Token”没有通用依据。
可以把流程理解为“文本 → 切分 → ID 序列”。Token ID 是索引,不是该词的意义分数。解码把 ID 序列还原为文本;单独显示某个 Token 时可能出现不完整字节,因此检查整体解码是否等于原输入比逐个显示更可靠。
本版本的 分词实验 使用已有 Whisper multilingual 文本分词器,保存配置、哈希、中文/英文/代码三组实际 ID 与数量。它用于展示切分差异,不代表 Claude、GPT 或 Gemini 的分词与计费。Whisper 是语音模型;这里只使用其文本分词器,不做语音推理。不同产品应使用各自官方计数方式。
| 实际输入 | 字符数 | 此分词器的 Token 数 | 整体解码回原文 |
|---|---|---|---|
| 材质检查 | 4 | 7 | 是 |
| material check | 14 | 3 | 是 |
| name.startswith(prefix) | 23 | 10 | 是 |
词表和实际 ID 见 分词结果。其中字节片段的单项显示可能不是可读汉字;整体解码保持输入一致。
为什么这影响使用?文件内容、聊天记录、工具返回都占上下文。重复粘贴、长日志和无关文件会消耗空间;删掉变量定义或业务约束又会失去必要条件。选信息时应根据任务相关性,而不是只追求最少字数。
3. ID 怎样变为向量
嵌入层把每个 ID 查成一个数值向量。如果序列有 N 个 Token、表示宽度为 D,序列表示可以示意为 N×D 的矩阵。D 是模型结构参数;这里的字母是形状示意,不是某个商业模型的公开尺寸。
向量通过训练形成,能支持后续计算。不能把第 17 维解释成“红色程度”、第 28 维解释成“是不是建筑”:通常没有这种固定、可读的单维语义。模型是在许多数值关系中表示模式。
位置也有意义。a-b 和 b-a 的 Token 集合接近,但结果不同;变量定义在何处、引用在何处也需要区分。位置表示或位置相关计算为序列顺序提供线索。原始 Transformer 的位置编码与许多现代模型的旋转位置表示并非同一实现,不应把一种方式说成所有模型的唯一方式。
4. 注意力连接上下文中的信息
设脚本先定义 prefix = 'T_',后面调用 name.startswith(prefix)。解释后一句需要利用前面的定义。自注意力允许每个位置根据当前表示,对其他允许访问的位置计算相关权重,再组合信息。常用 Q、K、V 分别表示用于查询、匹配和被组合的表示;这些也是计算表示,不是人工标注的问答库。
因果语言模型在预测后续 Token 时不能读取尚未出现的未来答案。因果掩码限制这种访问。多头让不同投影同时处理关系,多层让表示反复变换。它们提供计算能力,但不能保证每个相关事实都会被正确利用,更不能把注意力权重直接当成可信的解释证据。
实际长上下文可能遗漏中间信息、混淆类似函数或采用过时定义。可把关键约束放在任务说明中,给出准确符号和版本,并用工具检查产物。窗口够大与稳定利用全部内容,是两项不同能力。
5. Transformer 层还有哪些组成
注意力不是整个模型。前馈网络进一步变换每个位置的表示;残差连接让前后层信息可以相加;归一化帮助控制数值尺度。典型解码器堆叠这些模块,再用输出层得到词表上的分数。
Attention Is All You Need 提出 Transformer,原论文任务是机器翻译,含编码器与解码器。这里面向语言模型讲解因果解码部分,不把原论文完整结构直接套在每个 LLM 上。可对照作者实现 nanoGPT/model.py 的 CausalSelfAttention、MLP、Block 与输出层;它是教学实现,不是当期商业模型源码。
6. 从分数到下一个 Token
输出分数通常称为 logits。将分数经 softmax 转成分布,就可以选择下一 Token。选择最大分数、按概率采样,以及限制候选集合,会产生不同生成行为。
温度调节分布的集中程度。本教材设三项 教学 logits = [3,2,1],离线计算结果如下。候选 A/B/C 是抽象候选,不是一次模型实际输出,也没有事实正确率含义。
| 温度 | A | B | C |
|---|---|---|---|
| 0.5 | 0.866813 | 0.117310 | 0.015876 |
| 1.0 | 0.665241 | 0.244728 | 0.090031 |
| 2.0 | 0.506480 | 0.307196 | 0.186324 |
计算见 学习实验结果。温度较低时分布更集中;这不能推出答案更真实。错误 API 名称也可能在某个上下文下获得很高分数。产品即使设置低温度,也可能受版本、并发实现和其他设置影响,不应承诺每次完全相同。
7. 一段回答怎样逐步完成
模型先处理已有上下文,产生第一项新 Token,再把它纳入后续生成条件,继续预测。这解释了自回归生成。终止标记、长度限制、工具调用边界或宿主取消都可能结束当前输出。
流式显示只是宿主把已经到达的内容陆续展示;它不意味着模型在你屏幕上执行了代码。模型可以生成一段正确程序,但是否运行、是否读到真实资产、是否保存报告,都需要另外的执行证据。
KV cache 可以复用已计算位置的部分注意力表示,减少重复计算;它不是项目知识库,也不会使模型永久学会用户的代码。缓存具体实现、上下文裁剪和持久策略属于产品与运行时条件,见 LLM-02 和 CAP-01。
8. 三组上下文怎样比较
实验记录 保留三组输入:仅问题;问题加实际函数;问题加函数和清单。本次没有调用模型,因此没有补写模型响应或“准确率提升”数字。已经实测的是程序对 CSV 的四项问题检查。
自己实验时,为同一模型固定版本和设置,对每组保存完整响应,用事先确定的四项问题评分。另记它是否虚构了存在性检查、自动重命名或未实现的规则。说明更长不等于更准确;重点是是否引用了真实信息、是否保留约束、是否区分确定事实与假设。
一个可直接使用的 TA 请求是:
解释 lab.py 中 inspect_csv 的输入、规则和输出。
以 assets.csv 为样本,逐行列出实际问题和对应条件。
区分空字段、名称重复与前缀错误;不要推断文件在磁盘上是否存在。
输出一张问题表,并指出代码没有实现的检查。禁止修改输入资产。
9. 常见混淆与练习
| 概念 | 准确理解 | 需要避免的推断 |
|---|---|---|
| Token 数 | 某分词器的切分结果 | 字符数就是 Token 数 |
| 生成概率 | 给定上下文的候选分布 | 概率高就是事实正确 |
| 上下文 | 本次计算可访问的信息 | 模型永久更新了参数 |
| 工具请求 | 模型提出结构化动作 | 动作已经执行成功 |
| 流式输出 | 逐步展示已到达内容 | 输出代码等于已运行代码 |
练习:画出脚本解释请求中的文本计算和文件读取两个流程;说明 Token、嵌入、注意力、采样各负责什么;运行分词与温度实验;对三组上下文自己保存模型记录。
验收:至少解释上述三个区别;分词数来自结果文件;示意分布明确写为教学数据;任何模型效果结论能回到实际响应。
来源与衔接
机制参考:原始 Transformer 论文、nanoGPT 教学实现,2026-10-10 读取页面与相关结构。实践材料:Karpathy 本地英文讲座,本地 00:00:00~00:06:22 的上下文讨论。图表与 TA 案例由本教材归纳。所有来源状态见 来源索引。接着读 LLM-02。