# LLM-01｜LLM 怎样理解输入并生成输出

整理与核验日期：2026-10-10。对象是以 Transformer 为基础的自回归语言模型；具体产品可能增加多模态编码、检索和其他结构。读完后应能解释一次回答经过的主要计算，以及哪些信息需要自己提供。

## 1. 从一个材质脚本问题出发

假设你要解释资产命名检查器。只问“这个脚本做什么”时，模型没有脚本，就只能请求更多信息或按常见做法猜测。提供 [lab.py](<../../示例/学习实验/lab.py>) 后，才能据实际 `inspect_csv` 分析字段、规则和错误路径；再提供 [assets.csv](<../../示例/学习实验/assets.csv>)，才能指出第 3 行前缀不符合规则、第 4 行名称重复、第 5 行两个字段为空。

用户看到的对话框只是输入入口。系统实际提交的上下文还可能包含产品指令、历史消息、项目规则、工具描述和文件片段。模型不能凭文件路径自动取得文件；宿主必须读取并把内容交给模型。某些编程产品会自动完成这一步，仍应检查它实际读了什么。

本章架构图把一次文本计算展开。工具读取文件属于图外的宿主行为；模型输出工具参数后，也要由执行器真正运行工具。

![输入到生成的逻辑架构图](<../../图表/LLM-01_架构.svg>)

## 2. 文字先变成 Token

分词器把文本映射为词表中的整数 ID。一个 Token 可能表示一个词、部分词、符号或字节片段。中文字符、英文单词和代码变量的切分都依赖具体分词器，因此“100 个字一定等于 100 Token”没有通用依据。

可以把流程理解为“文本 → 切分 → ID 序列”。Token ID 是索引，不是该词的意义分数。解码把 ID 序列还原为文本；单独显示某个 Token 时可能出现不完整字节，因此检查整体解码是否等于原输入比逐个显示更可靠。

本版本的 [分词实验](<../../示例/分词/README.md>) 使用已有 Whisper multilingual 文本分词器，保存配置、哈希、中文／英文／代码三组实际 ID 与数量。它用于展示切分差异，**不代表 Claude、GPT 或 Gemini 的分词与计费**。Whisper 是语音模型；这里只使用其文本分词器，不做语音推理。不同产品应使用各自官方计数方式。

| 实际输入 | 字符数 | 此分词器的 Token 数 | 整体解码回原文 |
|---|---|---|---|
| 材质检查 | 4 | 7 | 是 |
| material check | 14 | 3 | 是 |
| name.startswith(prefix) | 23 | 10 | 是 |

词表和实际 ID 见 [分词结果](<../../示例/分词/结果.json>)。其中字节片段的单项显示可能不是可读汉字；整体解码保持输入一致。

为什么这影响使用？文件内容、聊天记录、工具返回都占上下文。重复粘贴、长日志和无关文件会消耗空间；删掉变量定义或业务约束又会失去必要条件。选信息时应根据任务相关性，而不是只追求最少字数。

## 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](<https://arxiv.org/abs/1706.03762>) 提出 Transformer，原论文任务是机器翻译，含编码器与解码器。这里面向语言模型讲解因果解码部分，不把原论文完整结构直接套在每个 LLM 上。可对照作者实现 [nanoGPT/model.py](<https://github.com/karpathy/nanoGPT/blob/master/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 |

计算见 [学习实验结果](<../../检查记录/学习实验结果.json>)。温度较低时分布更集中；这不能推出答案更真实。错误 API 名称也可能在某个上下文下获得很高分数。产品即使设置低温度，也可能受版本、并发实现和其他设置影响，不应承诺每次完全相同。

## 7. 一段回答怎样逐步完成

模型先处理已有上下文，产生第一项新 Token，再把它纳入后续生成条件，继续预测。这解释了自回归生成。终止标记、长度限制、工具调用边界或宿主取消都可能结束当前输出。

流式显示只是宿主把已经到达的内容陆续展示；它不意味着模型在你屏幕上执行了代码。模型可以生成一段正确程序，但是否运行、是否读到真实资产、是否保存报告，都需要另外的执行证据。

KV cache 可以复用已计算位置的部分注意力表示，减少重复计算；它不是项目知识库，也不会使模型永久学会用户的代码。缓存具体实现、上下文裁剪和持久策略属于产品与运行时条件，见 LLM-02 和 CAP-01。

## 8. 三组上下文怎样比较

[实验记录](<../../检查记录/学习实验结果.json>) 保留三组输入：仅问题；问题加实际函数；问题加函数和清单。本次没有调用模型，因此没有补写模型响应或“准确率提升”数字。已经实测的是程序对 CSV 的四项问题检查。

自己实验时，为同一模型固定版本和设置，对每组保存完整响应，用事先确定的四项问题评分。另记它是否虚构了存在性检查、自动重命名或未实现的规则。说明更长不等于更准确；重点是是否引用了真实信息、是否保留约束、是否区分确定事实与假设。

一个可直接使用的 TA 请求是：

```text
解释 lab.py 中 inspect_csv 的输入、规则和输出。
以 assets.csv 为样本，逐行列出实际问题和对应条件。
区分空字段、名称重复与前缀错误；不要推断文件在磁盘上是否存在。
输出一张问题表，并指出代码没有实现的检查。禁止修改输入资产。
```

## 9. 常见混淆与练习

| 概念 | 准确理解 | 需要避免的推断 |
|---|---|---|
| Token 数 | 某分词器的切分结果 | 字符数就是 Token 数 |
| 生成概率 | 给定上下文的候选分布 | 概率高就是事实正确 |
| 上下文 | 本次计算可访问的信息 | 模型永久更新了参数 |
| 工具请求 | 模型提出结构化动作 | 动作已经执行成功 |
| 流式输出 | 逐步展示已到达内容 | 输出代码等于已运行代码 |

练习：画出脚本解释请求中的文本计算和文件读取两个流程；说明 Token、嵌入、注意力、采样各负责什么；运行分词与温度实验；对三组上下文自己保存模型记录。

验收：至少解释上述三个区别；分词数来自结果文件；示意分布明确写为教学数据；任何模型效果结论能回到实际响应。

![本章思维导图](<../../图表/LLM-01_思维导图.svg>)

## 来源与衔接

机制参考：[原始 Transformer 论文](<https://arxiv.org/abs/1706.03762>)、[nanoGPT 教学实现](<https://github.com/karpathy/nanoGPT/blob/master/model.py>)，2026-10-10 读取页面与相关结构。实践材料：[Karpathy 本地英文讲座](<../../sources.html#ref-fae8f922a0de3d>)，本地 00:00:00～00:06:22 的上下文讨论。图表与 TA 案例由本教材归纳。所有来源状态见 [来源索引](<../../来源索引.csv>)。接着读 [LLM-02](<LLM-02_训练推理与能力边界.md>)。
