大模型的“基础零件”
如果说上一章是让你“知道 Agent 长什么样”,这一章就是让你“看懂 Agent 是用什么零件拼出来的”。
本章将会系统讲清楚Token、Transformer、训练三阶段、Prompt、Embedding、Function Calling 六个概念。很多人学大模型,这些词一个个都听过,但问它们之间什么关系,就答不上来了。其实它们串成一条线就特别好懂:
Token 解释模型怎么“看”文本,Prompt 解释你怎样给模型下指令,Embedding 解释模型怎样“找”知识,Function Calling 和思维框架 解释模型怎样从“只会说话”变成“能办事情”。
作为一个写了 12 年 Java 的人,我把这几个概念翻译成咱们最熟的工程语言,你大概率一看就懂。
01 Token——AI 世界的“字节”
如果问我学 AI 最先该搞懂什么,我会说 Token。这是整个大模型世界的最小度量单位。
用咱们 Java 人的话说:Token 之于大模型,就像字节(Byte)之于计算机——它是计费、容量、速度的底层计量单位。你不理解 Token,连写 Prompt 的优化方向都是错的。
Token ≠ 一个字,也 ≠ 一个词。 它介于两者之间,由分词器(Tokenizer)按 BPE(Byte Pair Encoding)算法自动切分。同样一句“我爱学习人工智能”,GPT-4 可能切 6 个 Token,Claude 可能切 4 个。所以同样长的文本,在不同模型上费用不同——因为计费按 Token 数,不是按字符数。
这点特别像不同 JVM 对字符串的编码处理:底层怎么切,取决于“词表”(相当于字符集),词表不同,切法就不同。
中文为什么比英文贵?
一个让很多开发者困惑的现象:同样 1000 字的内容,中文比英文贵不少。原因是主流模型的词表以英文为核心——一个英文单词通常约 1 个 Token,而一个中文字符可能要 1.5~2 个 Token。中文的 Token 密度更高,成本自然更高。
| 文本内容 | 字符数 | GPT-4o Token 数 | 每字符 Token 比 |
|---|---|---|---|
| Hello World | 11 | 2 | 0.18 |
| 你好世界 | 4 | 4~6 | 1.0~1.5 |
| 我爱学习人工智能 | 8 | 8~12 | 1.0~1.5 |
上下文窗口 = 模型的“内存容量”
每个大模型都有一个硬性限制:上下文窗口大小。它表示模型一次能“看到”的最大 Token 数,输入和输出都算在内。它就像你给一个方法分配的栈空间 / 缓冲区——窗口太小,多轮对话和长文档就处理不了。
| 模型 | 上下文窗口 | 约等于中文字数 |
|---|---|---|
| GPT-4o | 128K | ~8.5 万字 |
| Claude 3.5 Sonnet | 200K | ~13 万字 |
| Gemini 1.5 Pro | 2M | ~130 万字 |
| DeepSeek-V3 | 128K | ~8.5 万字 |
| DeepSeek-V4 | 1M | ~65 万字 |
| Qwen 2.5 | 128K | ~8.5 万字 |
计费:Input 和 Output 分开算,输出更贵
几乎所有模型都分开计费:输入 Token 和输出 Token 价格不同,输出通常贵 3~4 倍。逻辑很合理——输入只是“读”,输出需要“生成”,生成的计算量大得多。
对 Agent 开发者而言,结论很明确:控制输出长度比压缩输入更省钱。 一个常见误区是拼命压缩 Prompt,却让模型输出一堆废话。让模型输出简洁、用结构化格式约束,优化效果反而更好。
02 Transformer——大模型的“发动机”
面试被问“大模型底层什么架构”,很多人能答出 Transformer,但能讲清楚它为什么行、RNN 为什么不行的,不多。本节帮你建立足够应对面试的直觉。
Transformer 是 2017 年 Google 论文《Attention Is All You Need》提出的架构,核心创新是:完全抛弃 RNN 和 CNN,只用 Attention 机制处理序列。市面上计划所有的大模型,包括 GPT、Claude、Gemini、DeepSeek、Qwen 全都基于它。
为什么不用 RNN?
在 Transformer 之前,NLP 主力是 RNN/LSTM,它有两个致命缺陷,咱们写过后端长流程的应该秒懂:
- 顺序依赖(无法并行):必须先处理第 1 个词,才能处理第 2 个词,像一条串行流水线,GPU 的并行能力被完全浪费。
- 长距离依赖丢失:句子有 100 个词时,第 1 个词的信息传到第 100 个词时几乎消失了——像跨了 100 个微服务调用,上下文早丢了。
Attention 直接解决这两点:每个词能直接“看到”所有其他词,且所有位置可同时并行计算。
Self-Attention:Q / K / V,像一次“带条件的查询”
Self-Attention 是 Transformer 的灵魂。每个词通过三个线性变换生成:
- Q(Query,查询):“我在找什么”
- K(Key,键):“我有什么标签”
- V(Value,值):“我的实际内容”
计算分四步:① 生成 Q/K/V → ② Q×Kᵀ 算每对词的相关度(除以 √dₖ 防梯度消失)→ ③ Softmax 归一化成权重 → ④ 权重×V 加权求和,得到这个词的新表示。
用 Java 思维翻译:Q/K/V 就像一次带条件的数据库联表查询——Q 是查询条件,K 是索引键,V 是命中后的实际数据行。相关度高的行(Key 匹配 Q)权重高,最后聚合返回。
Multi-Head Attention(多头)就是同时跑多组 Self-Attention,每组学不同关注模式(语法、指代、因果……),类似多线程从不同维度分析同一批数据,最后合并结果。
位置编码:给“谁在前谁在后”打标
Self-Attention 本身位置无关——“猫追狗”和“狗追猫”它看成一样的。位置编码就是用来注入顺序信息的。当前主流是 RoPE(旋转位置编码):在 Q/K 上施加旋转变换,让距离越远的词注意力分数越小。配合 NTK-aware Scaling 等技术,训练见过 4K Token 的模型可以外推到 128K+ 的上下文长度。GPT-4、Llama、Qwen、DeepSeek 全用它。
类比:RoPE 就像给数组元素标了下标(index),下标差越大,相关度衰减越明显。
最后,现代大模型几乎全是 Decoder-Only 架构——去掉 Encoder,只用 Decoder 堆叠。因为所有 LLM 任务本质都是“给上文、续下文”,Decoder-Only 天然契合,且 Scaling Law 友好、工程简洁。
03 训练三阶段——大模型是怎么“造”出来的
面试问“GPT 怎么训练出来的”,只答“用大数据训练”基本就凉了。大模型训练是一条三阶段流水线:
阶段一:预训练(Pre-training)——“读万卷书”
- 目标:从海量无标注文本学语言规律和世界知识。
- 方法:Next Token Prediction(预测下一个词),在数万亿 Token 上反复练。
- 代价:占整个训练成本的 99% 以上(GPT-4 级约 $78M,不同机构估算有差异)。
- 产出:基座模型(Base Model)——能力很强但“不会对话”,你问“你好”,它可能续写“你好,欢迎光临”。
Java 类比:预训练就像让一个新员工通读公司所有历史代码和文档,把架构、规范、坑都装进脑子里——但他还不知道具体接到需求该怎么按规范交付。
阶段二:监督微调(SFT)——“学规矩”
- 目标:让基座模型从“只会续写”变成“能听指令、会对话”。
- 方法:用 1万~10万条高质量“指令-回答”对微调。
- 本质:行为模仿——不改底层知识,教它“什么时候用什么知识、以什么格式输出”。
{
"instruction": "将以下代码从 Python 翻译为 Java",
"input": "def add(a, b):\n return a + b",
"output": "public static int add(int a, int b) {\n return a + b;\n}"
}阶段三:RLHF / DPO——“对齐人类偏好”
- 目标:让模型“回答得更好、更安全”。
- 方法:用人类偏好数据训练奖励模型(RM),再用强化学习(PPO/DPO)优化。DPO 是重要的对齐方法之一——跳过 RM,直接用偏好数据优化,更简单稳定;但在复杂推理场景,RL 仍有不可替代的优势。
一句话记住三阶段:预训练教模型“有什么知识”(读万卷书),SFT 教它“怎么回答”(学规矩),RLHF 教它“怎么答得更好”(对齐偏好)。
Java 类比的延续:SFT 像写单元测试和规范文档,让交付符合格式;RLHF 像Code Review 和验收,把“能跑”优化成“跑得好、符合团队价值观”。
04 Prompt——你给模型的“工作说明书”
Prompt 是你给大模型的指令文本。如果把 LLM 比作一个超级聪明的实习生,Prompt 就是你给他的工作说明书——写得越清楚,交付质量越高。
一个完整 Prompt 通常含三部分:
- System Prompt(系统指令):定义角色和全局规则,整个对话持续生效,像一份隐形的“工作手册”。
- User Prompt(用户输入):表达具体需求,每次请求不同。
- Context(上下文):提供背景信息。
在 Agent 架构里,Prompt 的地位更重——它不只是人机交互入口,还是 Agent 决策的“方向盘”:规划、工具选择、输出格式,全受 Prompt 控制。所以 Prompt Engineering 不是“调参数”,而是“设计指令”。
六种常用技巧(从简单到复杂):
| 技巧 | 原理 | 适用场景 |
|---|---|---|
| 角色扮演(Role) | 指定模型扮演特定角色 | 专业领域问答 |
| 思维链(CoT) | 要求一步步推理 | 数学、逻辑、推理题 |
| 少样本(Few-Shot) | 提供示例引导格式 | 格式约束、分类 |
| 思维树(ToT) | 探索多条推理路径取最优 | 规划、博弈 |
| 自一致性 | 多次采样取多数票 | 有确定答案的推理 |
| ReAct | 推理 + 行动交替 | Agent 核心模式 |
好 Prompt 的四个特征:清晰、具体、约束格式、示例驱动。实际项目里往往要反复迭代,别指望一次写好。
05 Embedding——把“语言”变成“坐标”
Embedding 是连接“自然语言”和“数学计算”的桥梁。大模型能理解“猫”和“小猫咪”语义相近,靠的不是字符串匹配,而是两者在向量空间里的距离很近。
Embedding 就是把文本转换成一个高维向量(通常 768~3072 维的浮点数数组),让语义相近的文本对应相近的向量。
直觉上很好懂:想象一个三维空间,x 轴是“动物性”、y 轴是“体型”、z 轴是“可爱度”——“猫”和“狗”位置近,“猫”和“汽车”离得远。实际空间有上千维,每维含义是模型自动学的,人类读不懂,但整体能捕捉丰富语义。
| 文本 | 向量示意 | 余弦相似度 |
|---|---|---|
| 猫 | [0.8, 0.2, 0.9, ...] | 猫 vs 狗 ≈ 0.95(很像) |
| 狗 | [0.7, 0.3, 0.8, ...] | 猫 vs 汽车 ≈ 0.22(不像) |
| 汽车 | [0.1, 0.9, 0.05, ...] |
向量相似度怎么算? 最常用余弦相似度(衡量方向一致性,忽略长度)。在 Agent 里,Embedding 的核心用途是语义搜索——也就是 RAG(检索增强生成)的基础:把知识库文档 Embedding 后存进向量数据库,用户提问时把问题也 Embedding,找最相似的片段喂给 LLM。
Java 类比:Embedding + 向量数据库,相当于给文本建了一套语义版的倒排索引——只不过传统倒排按“关键词”命中,它按“意思相近”命中。
没有 Embedding,Agent 就没有长期记忆和知识检索能力——这正是 RAG 为什么非做 Embedding 不可的原因。
06 Function Calling——从“聊天”到“执行”的跨越
如果说 Prompt 让 LLM 有了“语言能力”,Function Calling 就让它有了“行动能力”。
Function Calling 是 LLM 根据用户意图,自动生成结构化函数调用(函数名 + 参数 JSON)的能力。 这是 Agent 能使用工具的技术基石——没有它,Agent 就只是个更聪明的 ChatBot。
核心突破:模型不再输出自然语言让你去解析,而是直接输出符合 JSON Schema 的结构化数据。你可以让 LLM 准确地调用 get_weather(city="北京", date="2026-07-01"),而不是含糊地说“你应该查一下北京天气”。
一个关键认知:LLM 本身不执行任何函数。 它只“决定”调哪个函数、传什么参数,真正的执行由你的代码完成。模型的角色像一个“调度员”——告诉你要打什么电话,但电话是你打的。
这简直是 Java 工程师的舒适区:模型负责路由决策(像 Gateway 判断转发哪个 Service),你的代码负责实际业务逻辑(像 Controller 调用 Service 落地)。Function Calling 把“AI 决策”和“代码执行”清晰地切开了。
07 怎么把零件拼成 Agent?思维框架的递进
六个零件讲完,最后看怎么“组装”。
六个零件是 Agent 的“硬件”,但光有硬件跑不起来,还需要一个“操作系统”来调度它们——这就是思维框架。它决定 Agent 如何思考、何时行动、如何纠错。四种主流框架是递进的:
CoT(学会一步步推理)
→ ReAct(在 CoT 上加"行动":推理 + 调工具)
→ ToT(在 ReAct 上加"探索":多路径推理 + 最优选择)
→ Reflection(再加"审查":自我检查修正)- CoT:纯思考,不行动,适合数学/逻辑。
- ReAct:边想边做(思考 → 调工具 → 观察),Agent 的核心模式。
- ToT:多路径探索,适合复杂规划。
- Reflection:先生成再审查修正,质量最高但消耗大。
框架不是越复杂越好,而是越匹配任务越好。简单推理用 CoT,需要工具才上 ReAct,探索型才用 ToT。
到这里你应该能串起来了:Token 是底层计量,Transformer 是发动机,三阶段训练塑造了能力,Prompt 是方向盘,Embedding 给了它记忆和检索,Function Calling 给了它手脚,而思维框架决定了它怎么把这一切运转成“自主干活”。
写在最后
如果只记住一句话,我希望是这一句:
大模型是“发动机”,六个基础零件是“传动系统”,而 Agent 是装了方向盘、记忆和手脚的整车。
作为程序员,我们最该有的信心是:这些概念翻译过来,全是咱们熟悉的东西——Token 是字节,Attention 是带条件的查询,SFT/RLHF 是规范与验收,Function Calling 是路由与 Service 调用。LLM 提供了引擎,零件都认全了,接下来就是动手组装。