在上一篇文章中,我们了解了 AI 编程带来的范式变革。很多朋友会好奇:AI 为什么能写代码?它真的”理解”代码吗?这篇文章用最通俗的方式,拆解大语言模型的工作原理。
一、Token——AI 的”文字积木”
大语言模型并不直接认识文字,它认识的是 Token(词元)。
可以把 Token 理解为一种”文字积木”。模型把一段文字拆分成若干 Token,每个 Token 对应一个编号(ID)。比如:
1 | "Hello World" → ["Hello", " World"] → [15496, 2159] |
不同模型的分词方式不同,中文通常一个汉字不一定对应一个 Token。这也是为什么写中文 Prompt 时,表达越简洁精确,Token 利用率越高。
| 语言 | 平均每个字的 Token 数 | 说明 |
|---|---|---|
| 英文 | ~0.3 | 一个单词约 1-2 Token |
| 中文 | ~1.5 | 一个汉字约 0.6-2 Token |
| 代码 | ~0.5 | 关键字和符号压缩率高 |
1.1 Token 对编程的影响
理解 Token 机制对 AI 编程有实用价值:
| 场景 | 最佳实践 | 原因 |
|---|---|---|
| 变量命名 | 使用有意义的英文命名 | 中文拼音占用更多 Token |
| 注释 | 英文注释比中文注释省 Token | 释放上下文给代码逻辑 |
| Prompt | 精简指令,去掉冗余修饰 | 更多 Token 留给代码和示例 |
| 上下文 | 只包含相关代码文件 | 避免无关文件消耗 Token |
模型的所有输入输出,本质上都是在处理 Token 序列。这意味着你的 Prompt 越长,模型可用的”思考空间”就越小。
二、从 N-Gram 到 Transformer
2.1 早期的语言模型
最初的”语言模型”基于统计:给定前面几个词,预测下一个最可能的词是什么。这种 N-Gram 模型只能看到前面几个词,长距离依赖关系无法捕捉。
1 | N-Gram 示例(Trigram): |
2.2 注意力机制——让模型”关注重点”
2017 年,Google 团队在《Attention Is All You Need》论文中提出了 Transformer 架构,其核心是注意力机制(Attention)。
注意力机制让模型在处理每个词时,能够”关注”到句子中所有其他词的相关性。比如在句子 “The cat sat on the mat because it was tired” 中,模型能通过注意力机制判断 “it” 指代的是 “cat” 而不是 “mat”。
注意力机制的核心思想(简化版):
1 | "猫坐在垫子上,因为它累了" |
这种”关注重点”的能力,让模型在处理代码时能理解变量之间的引用关系、函数调用的上下游依赖。
2.3 Transformer 的核心结构
每个 Transformer 层包含两个核心子层:
- 多头注意力:从多个不同角度同时计算词与词之间的关系(就像多个程序员同时审查同一段代码)
- 前馈网络:对注意力结果做进一步的变换和抽象(类比为”理解并总结这些关系”)
通过堆叠数十个这样的层(GPT-3 有 96 层),模型获得了强大的模式识别和生成能力。每一层都在不同抽象级别上理解输入:低层关注语法结构,中层关注语义关系,高层关注整体意图。
1 | 层数增加 → 抽象级别提升 |
三、GPT 系列演进
OpenAI 的 GPT 系列经历了多次迭代,每次迭代都带来质的飞跃:
| 版本 | 发布时间 | 参数量 | 核心突破 |
|---|---|---|---|
| GPT-1 | 2018 | 1.17 亿 | 验证了生成式预训练的有效性 |
| GPT-2 | 2019 | 15 亿 | 展示了零样本学习能力 |
| GPT-3 | 2020 | 1750 亿 | 大规模涌现出上下文学习能力 |
| GPT-3.5 | 2022 | - | InstructGPT 对齐训练 |
| GPT-4 | 2023 | - | 多模态、推理能力大幅提升 |
| GPT-4o | 2024 | - | 原生多模态、超低延迟 |
3.1 预训练 + 微调
大语言模型的训练分为两个阶段:
- 预训练:在海量互联网文本上学习语言规律,目标是预测下一个 Token。这一阶段模型”读”了几乎整个互联网的内容
- 微调/对齐:通过指令微调(Supervised Fine-Tuning)和人类反馈强化学习(RLHF),让模型学会遵循指令、输出有用内容
这也解释了为什么模型能写代码——预训练数据中包含了大量的开源代码(GitHub),模型从中学习了编程语言的语法和模式。训练数据中代码占比越高,模型的编程能力就越强。
3.2 国产大模型崛起
| 模型 | 厂商 | 特点 | 编程能力 |
|---|---|---|---|
| DeepSeek-V3/R1 | 深度求索 | 推理能力突出,性价比极高 | 五星 |
| Qwen2.5-Coder | 阿里云 | 专门针对代码优化 | 四星 |
| Yi-Lightning | 零一万物 | 速度快,数学推理强 | 四星 |
| MiniMax-M2.7 | MiniMax | 超长上下文(256K) | 四星 |
| GLM-5 | 智谱 | 中文理解最佳 | 四星 |
国产模型的快速发展让 AI 编程的成本大幅降低——DeepSeek 的 API 价格仅为 GPT-4 的几十分之一,且中文理解更好。
四、编码器 vs 解码器架构
| 架构 | 代表模型 | 特点 | 适合场景 |
|---|---|---|---|
| 编码器-解码器 | T5、BART | 理解+生成并重 | 翻译、摘要 |
| 纯编码器 | BERT | 双向理解 | 分类、实体识别 |
| 纯解码器 | GPT、LLaMA、DeepSeek | 自回归生成 | 代码生成、对话 |
当前主流的大语言模型(包括 GPT、Claude、DeepSeek、Qwen 等)都采用纯解码器架构。它们逐个 Token 地生成输出,每次生成一个新 Token,就把它拼接到已有序列中,再预测下一个 Token。
1 | 解码器生成过程示例: |
每次生成一个 Token,都要回顾已经生成的全部内容——这就是自回归(Auto-regressive)的含义。
五、涌现能力
当模型规模超过某个临界点(约 100 亿参数),会涌现出一些小模型不具备的能力:
| 能力 | 说明 | 编程场景示例 |
|---|---|---|
| 上下文学习 | 给几个示例就能按模式执行 | 给 3 个 API 调用示例后自动写第 4 个 |
| 思维链 | 通过”一步步思考”提升推理质量 | 先分析需求→设计方案→生成代码 |
| 代码理解 | 理解代码结构、变量作用域、控制流 | 分析复杂函数的时间复杂度 |
| 指令遵循 | 执行复杂的多步指令 | “创建类→添加属性→实现接口→添加测试” |
| 自我修正 | 识别并纠正自己输出的错误 | 主动发现代码中的 bug 并修正 |
这些能力不是显式编程出来的,而是从海量数据中”涌现”出来的。这也是为什么 GPT-3(1750 亿参数)比 GPT-2(15 亿参数)的能力有质的飞跃——不仅仅是”更大”的差异,而是”质变”。
六、温度与采样——控制 AI 的”创造力”
大语言模型生成文本时不是每次都选概率最高的 Token,而是通过采样引入随机性:
| 参数 | 作用 | 编程场景推荐值 | 对话场景推荐值 |
|---|---|---|---|
| temperature(温度) | 控制随机性,越高越有创意 | 0.2 ~ 0.4 | 0.7 ~ 0.9 |
| top_p(核采样) | 只从累积概率 p 的 Token 中采样 | 0.1 ~ 0.3 | 0.8 ~ 0.9 |
| top_k | 只从概率最高的 k 个 Token 中采样 | 20 ~ 40 | 40 ~ 60 |
编程场景为什么用低温? 写代码需要确定性和准确性,过高的温度会导致 AI”自由发挥”,生成语法正确但逻辑错误的代码。调试或做架构设计时可以适当提高温度,获取更创新的思路。
七、上下文窗口——AI 的”工作记忆”
上下文窗口(Context Window)是模型一次能处理的最大 Token 数。不同模型差异很大:
| 模型 | 上下文窗口 | 能容纳的内容 |
|---|---|---|
| GPT-4 | 128K | 约 200 页文档 |
| Claude 4 | 200K | 约 300 页,或一个中型项目 |
| DeepSeek-V3 | 128K | 约 200 页 |
| MiniMax-M2.7 | 256K | 约 400 页,最大之一 |
| Gemini 2.0 | 1M | 约 1500 页 |
上下文窗口越大不代表越好——窗口越大,模型在长距离依赖上的表现可能下降。对于 AI 编程来说,关键是只把相关的代码放入上下文,而不是把所有代码都塞进去。
八、大模型的能力边界与编程场景
了解大模型的能力边界,能帮你判断何时依赖 AI、何时自己动手:
| AI 擅长 | AI 不擅长 | 应对策略 |
|---|---|---|
| 代码生成(模式化) | 代码生成(高度创新的) | 标准 CRUD 交给 AI,架构设计自己把控 |
| 错误分析(常见错误) | 错误分析(罕见或环境相关的) | 常见错误相信 AI,奇怪错误自己排查 |
| 代码解释(标准语法) | 代码解释(领域特定的 DSL) | 标准语言问 AI,DSL 看官方文档 |
| 单元测试生成 | 集成测试/E2E 测试 | 单元测试交给 AI,E2E 自己写 |
| 重构(模式化) | 重构(需要深入理解业务) | 机械重构用 AI,业务重构自己来 |
九、从原理到实践:一个例子
结合原理来看一个具体场景:
1 | 你写了一条 Prompt:"用 C# 写一个二分查找" |
了解这些能帮你理解:为什么写清楚语言技术栈和算法名称至关重要。
十、国产模型的技术突破
国产大模型在编程场景中的技术优势值得关注:
| 模型 | 技术特点 | 编程场景优势 |
|---|---|---|
| DeepSeek-V3 | MoE 架构,671B 参数仅激活 37B | 推理快,成本低 |
| DeepSeek-R1 | 思维链推理,长 CoT 训练 | 复杂逻辑任务表现优异 |
| Qwen2.5-Coder | 专为代码优化,在代码数据上持续训练 | 代码补全质量高 |
| Yi-Lightning | 超低延迟推理架构 | 响应速度快 |
这些模型的共同趋势:推理能力越来越强、价格越来越低、中文理解越来越好。对 AI 编程用户来说,这是个好消息——可以用更低的成本获得更好的编程辅助。
十一、付之一炬?还是为己所用
了解 LLM 的原理,不是为了成为 AI 专家,而是为了更好地使用 AI 工具。就像你不需要懂汽车发动机的原理才能开车,但懂一点能让你的驾驶更高效、更安全。
本系列后续所有内容,都建立在这三篇文章(01 范式变革、02 LLM 原理、03 Prompt 工程)的基础上。理解得越深,后面的实践就越得心应手。
十二、为什么有些问题 AI 答不好
结合原理,AI 在以下场景表现不佳的原因也就清楚了:
1 | 1. "当前上海时间几点?" |
理解这些局限不是贬低 AI,而是让你知道什么时候该用什么工具、什么问题应该怎么问。
十三、理解原理对编程实践的帮助
了解 LLM 的工作原理不只是理论知识,对日常 AI 编程有直接帮助:
- Token 意识:写 Prompt 时知道中文比英文费 Token,自然会精简表达
- 注意力机制:理解 AI 更关注开头和结尾,会把关键信息放在 Prompt 首尾
- 涌现能力:知道大模型和小模型的能力差距不只是”量”的差异,选模型时更理性
- 采样参数:理解 temperature 的作用,写代码用低温,头脑风暴用高温
- 上下文窗口:知道窗口有限,不会把所有代码都塞进一个 Prompt
本章小结
- Token 是模型处理文字的基本单位,理解 Token 有助于优化 Prompt 和节省成本
- Transformer 的核心是注意力机制,让模型能关注长距离依赖关系
- 大模型通过海量预训练学习语言规律,通过微调对齐人类指令
- 代码能力来自于训练数据中的大量开源代码
- 国产模型(DeepSeek、Qwen)在中文编程场景中性价比出色
- 涌现能力是规模增长带来的质变,让小模型无法通过”微调”获得
- 温度参数控制创造力,编程场景用低温(0.2~0.4),创意场景用高温
- 上下文窗口越大不等于越好,关键在于内容的精准度
- 理解模型原理有助于你更好地利用 AI 编程工具——知其然也知其所以然
下一篇我们将深入 Prompt Engineering,学习如何让 AI 准确理解你的编程需求。