如果你要学习 AI Agent 开发,第一步不是急着写代码,而是搞清楚你正在用的这个工具——大语言模型(LLM)——到底是怎么工作的。

这篇文章尽量不推公式,用直觉和具体例子帮你建立正确的认知。读完后你应该能回答这些问题:大模型到底在做什么?文字是怎么变成模型能处理的数字的?为什么有时候输出结果和你预期不一样?

文章思维导图


大模型到底在做什么?

“大语言模型"这个名字包含两个关键词:

大(Large) 说的是参数量。一个 7B 模型有 70 亿个参数,70B 有 700 亿,GPT-4 级别的模型可能有数万亿。你可以把参数想象成大脑里的突触连接——连接越多,能记住和理解的"知识"就越丰富。

语言模型(Language Model) 说的是它做的事:预测下一个词(token)

不管模型能写代码、能做数学题、能回答百科问题——底层机制都是同一件事:给定前面的文字,预测下一个 token 是什么。

举个例子。当你输入"今天天气真”,模型做的事情是:

输入: "今天天气真"
模型输出(下一个 token 的概率分布):
  "好"     → 0.35   (35% 概率)
  "热"     → 0.22   (22% 概率)
  "不错"   → 0.18   (18% 概率)
  "冷"     → 0.08   (8% 概率)
  "奇怪"   → 0.04   (4% 概率)
  ...其他几千个 token 共分剩下的 13%

模型选了"好"之后,再把"今天天气真好"当作新输入,继续预测下一个 token——这就是自回归生成(Autoregressive Generation)

关键认知:LLM 不是"理解"了你的问题再给你一个经过深思熟虑的答案。它是一个概率机器,每次只预测一个 token,一步一步"走"出完整答案。这个认知非常重要——后面你会看到,很多 Agent 设计技巧都源于此。


Transformer 架构:不需要推公式的直觉理解

目前几乎所有主流 LLM(GPT-4、Claude、DeepSeek、Llama 等)都基于 Transformer 架构。你不需要手推矩阵乘法,但需要理解它的两个核心组件在做什么。

自注意力(Self-Attention):“每个词都在看其他所有词”

假设输入是:"小明苹果 给了 小红,因为 饿了"

当模型处理"她"这个词时,自注意力机制让它"回头看"前面的所有词,并计算"她"和每个词的相关性:

"她" 的注意力权重(简化示意):
  "小明"  → 0.05  (不太相关)
  "苹果"  → 0.03  (不太相关)
  "小红"  → 0.72  (高度相关!"她"指的是小红)
  "饿"    → 0.15  (有一些相关)
  ...

通过这种方式,模型"知道"“她"指的是小红。自注意力让每个 token 都能动态地关注输入中最相关的部分,这是 Transformer 最核心的能力。

前馈网络(FFN):“存储知识的仓库”

如果说自注意力负责"理解上下文关系”,前馈网络就负责"存储学到的知识"。研究表明,模型在训练过程中学到的事实性知识(比如"巴黎是法国首都")主要存储在 FFN 层的权重中。

层叠(Layers):逐层抽象

一个 Transformer 模型由很多层堆叠而成。每一层都包含一个自注意力 + FFN 的组合:

  • 浅层(前几层):处理语法、词法、局部模式
  • 中间层:建立语义理解、实体关系
  • 深层(后几层):形成高层推理、整合复杂信息

类比人类阅读:你也是先识别字词(浅层),再理解句意(中间层),最后把握全文含义(深层)。一个 7B 模型通常有 32 层,70B 模型有 80 层。层数越多,能处理的抽象层次越丰富。


Tokenization:文字怎么变成数字?

模型不认识文字,只认识数字。Tokenization 就是把文字转换成数字 ID 的过程。

什么是 Token?

Token 不等于字,也不等于词——它是介于两者之间的一个"片段"。主流方法是 BPE(Byte Pair Encoding)

用一个英文例子说明 BPE 的工作方式。假设我们有文本:"low lower newest"

BPE 从单个字符开始,反复合并最高频的相邻字符对:

初始状态:l o w ▁ l o w e r ▁ n e w e s t
(▁ 表示空格,也是一个字符)

第 1 轮合并:lo w ▁ lo w e r ▁ n e w e s t
("l" 和 "o" 经常相邻,合并为 "lo")

第 2 轮合并:low ▁ low e r ▁ n e w e s t
("lo" 和 "w" 经常相邻,合并为 "low")

第 3 轮合并:low ▁ low er ▁ n e w e s t
("e" 和 "r" 合并为 "er")

...继续合并直到达到目标词表大小

在实际模型中,这个过程会迭代数万次,最终形成一个 50,000~100,000 个 token 的词表。

一个具体的 Tokenization 例子

以 GPT-4 的 tokenizer 为例,看同一句话怎么被切分:

英文: "I love machine learning"
切分: ["I", " love", " machine", " learning"]
Token IDs: [40, 2142, 5765, 4510]
→ 4 个 token

中文: "我喜欢机器学习"
切分: ["我", "喜", "欢", "机", "器", "学", "习"]
Token IDs: [10423, 4807, 13614, 7732, 3803, 25207, 6345]
→ 7 个 token

注意:同样含义的中文文本,token 数量大约是英文的 1.5~2 倍。这直接影响 API 使用成本(按 token 计费)和 Context Window 的使用效率。

Tokenization 的实际影响

Tokenization 不只是底层细节,它会直接影响你使用 LLM 的体验:

影响成本:API 按 token 计费。同样长度的中文 Prompt,token 数量更多,费用更高。

影响数字处理:模型把数字当文本 token 处理,不是当数值处理。比如 "12345" 可能被切分为 ["12", "34", "5"](3 个 token),模型做数学时需要"还原"这些片段,这就是 LLM 做算术容易出错的根本原因之一。

影响边界行为:有些"看似简单"的字符串操作(比如反转一个单词),模型表现不好,因为 token 边界和字符边界不对齐。


Context Window:模型一次能"看"多少内容?

Context Window 是模型在单次请求中能处理的最大 token 数量(输入 + 输出之和)。

你可以把它想象成模型的"工作记忆"——窗口越大,能同时看到的信息越多,但计算成本也越高。

常见模型的 Context Window 大小:

  • GPT-4o:128K tokens
  • Claude 3.5 Sonnet:200K tokens
  • DeepSeek-V3:128K tokens
  • Llama 3:128K tokens

128K tokens 大约等于 10 万个英文单词,或 5~7 万个中文字。

重要细节:Context Window 是输入和输出共用的。如果窗口是 128K,你的输入用了 120K tokens,模型最多只能输出 8K tokens。这对 Agent 开发尤其重要——工具调用结果、RAG 检索到的文档,都在消耗这个有限的窗口。

这也是为什么 Context Engineering(上下文工程)在 Agent 开发中如此关键:窗口有限,你必须精心管理放进去的信息。后面的第三阶段会专门讲这个话题。


自回归生成:LLM 是怎么"写"出一段文字的?

把前面的知识串起来,LLM 生成文本的完整流程是:

步骤 1: 把你的输入文字做 Tokenization → 得到一串 token IDs
步骤 2: 所有 token 并行通过 Transformer 的各层
        → 自注意力建立上下文理解
        → FFN 调用存储的知识
步骤 3: 最后一层输出一个概率分布(覆盖整个词表,比如 50000 个 token)
步骤 4: 根据概率采样一个 token
步骤 5: 把新 token 追加到输入末尾,回到步骤 2
步骤 6: 重复,直到生成结束符(