第1章 大模型基础速览
你已经知道 Transformer 是怎么工作的,也写过 Python。这一章把"会用"所需的大模型背景一次性补齐:一个 API 调用背后是什么、模型能做什么不能做什么、怎么把话说明白(Prompt)、Token 怎么算钱、模型怎么选、框架怎么用。读完这一章,下一章你就可以直接写代码了。
1.1 一个 API 调用背后是什么
你现在的认知里,大模型可能是"调一下 API 就能聊天"的黑盒子。打开盒子,里面其实是三步训练的产物:预训练(pre-training)让模型在海量文本上学会"下一个词"的规律 - 语言、语法、常识和大量知识在这一步沉淀;指令微调(instruction tuning)用海量的"问题—标准答案"对,教模型把知识"翻译"成回答问题的方式;RLHF 对齐(基于人类反馈的强化学习)再用人类对回答的偏好打分做强化学习,让模型学会"讨人喜欢" - 回答更翔实、更有帮助、更少冒犯。三步叠加,一个"会说话又听话"的模型才诞生(原理细节见《人工智能理论与实践》第 5、7 章)。
但训练是造模型的人做的事,和你几乎无关。你每天打交道的是模型的推理(inference):把训练好的模型部署成一台 HTTP 服务,你的代码发一个请求过去,它做一次前向计算,把生成的文本返回给你。一次训练动辄耗费数百万 GPU 小时,而一次推理只要几百毫秒、几分钱 - API 调用,就是花推理的钱,用训练的成果。
把这条流水线对应到代码,就是下面这几行 - 它已经是一个能跑的"最小大模型应用":
# 一次最小的大模型 API 调用(OpenAI 兼容接口,各家通用)
import openai
client = openai.OpenAI(api_key="sk-你的Key") # 换成你的 API Key
resp = client.chat.completions.create(
model="deepseek-chat", # 或 gpt-4o-mini / qwen-plus 等
messages=[
{"role": "system", "content": "你是一个乐于助人的助手。"},
{"role": "user", "content": "用一句话解释什么是 RAG。"},
],
)
print(resp.choices[0].message.content) # 模型的回答
类比:训练像培养专家,推理像专家坐诊
预训练是"读万卷书",指令微调是"岗前培训",RLHF 是"师傅带教做人"。培养一个专家要花很多年(训练),但专家培养好后,每次咨询只要几分钟(推理)。API 调用,就是"每次咨询按分钟付费"。
记住这个区分
训练(training)改权重、费钱费时;推理(inference)用权重、快而便宜;微调(第 4 章)本质是在别人训练好的权重上做"二次小训练"。三者成本量级完全不同,后面谈成本时会反复用到。
1.2 大模型的能力与边界
先说能力。今天的通用大模型在几件事上已经接近"专业水准":写作(文案、邮件、报告初稿)、编程(写函数、解释代码、生成测试)、翻译与改写(跨语言、换风格、调篇幅)、总结与推理(长文摘要、信息抽取、多步逻辑推理)。这些能力来自预训练阶段的"海量阅读",不需要你额外教 - 你只需要学会正确地"问"。
但边界同样清晰,而且工程上更重要。模型本质是在预测下一个词,不是查数据库,所以它:会幻觉 - 一本正经地编造不存在的"事实";数学不可靠 - 三位数加减都可能算错,更别说精确计算;知识有截止日期 - 训练数据之外的新鲜事它不知道;给不了精确值 - 问它"某公司 2023 年营收精确到元",它只能猜。一句话:模型是"博学但不牢靠的实习生",不是"可靠的百科全书"。
| 维度 | 能 ✅ | 不能 ❌ |
|---|---|---|
| 写作 | 文案、邮件、报告初稿,风格可指定 | 保证事实准确、绝不编造数据 |
| 编程 | 写函数、解释代码、生成测试与文档 | 保证代码一定可运行、无逻辑漏洞 |
| 翻译/改写 | 多语言互译、换语气、改篇幅 | 专业术语始终精确(医疗、法律等) |
| 总结/推理 | 长文摘要、信息抽取、多步推理 | 精确计算(三位数加减都可能错) |
| 知识 | 训练数据覆盖范围内的常识与知识 | 训练截止日期之后的新鲜事实 |
| 可靠性 | 流畅、自信、内容完整地输出 | 区分"它知道的"与"它编的"(幻觉) |
1.3 Prompt 工程:和模型对话的正确姿势
模型能力固定之后,你唯一能大幅影响输出质量的,就是你的 Prompt。一个好 Prompt 有四个要素:角色(你是谁 - 给模型一个身份定位)、任务(要做什么 - 动作明确、目标清晰)、上下文(背景材料 - 模型不知道你的业务,你得喂给它)、格式(怎么输出 - 要点列表、JSON、字数上限)。四要素齐全,输出质量立刻上一个台阶。
两个进阶技巧值得现在就记住。一是少样本(few-shot):与其描述"要什么风格",不如直接给 1–3 个示例,模型会照着示例的样子学;二是思维链(chain-of-thought):让模型"一步步想"再给结论,多步推理的准确率会显著提升 - 相当于让实习生把草稿纸摊开给你看。下面是同一个模型对"差 / 好"两种 Prompt 的典型反应:
把少样本和思维链写进 Prompt,就是一个标准的"带示例的思考模板":
# 少样本 + 思维链:给示例、要求先一步步思考再回答
prompt = """你是一位严谨的数学老师。
规则:先列出计算过程,再给最终结论。
示例:
问:一支笔 5 元,买 3 支共多少钱?
答:5 × 3 = 15 元。结论:15 元。
现在请回答:
问:一件商品原价 120 元,打八折后多少钱?"""
resp = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": prompt}],
)
print(resp.choices[0].message.content)
Prompt 是软规则,不是硬约束
Prompt 再精心,模型也可能不遵守 - 它不是程序。要"绝对结构化"的输出(比如必须返回合法 JSON),需要第 2 章的结构化输出与函数调用 - 那是工程手段,不是语言技巧。
1.4 Token 与上下文窗口
Token(词元)是模型处理文本的最小单位,也是计费和窗口的"字数单位"。中文里大约 1 个汉字 ≈ 1~2 个 token,英文大约 4 个字符 ≈ 1 个 token,标点和空格都算。模型读到的不是"字",而是一串被分词器(tokenizer)切碎的 token 序列:
上下文窗口(context window)是模型一次能"同时看到"的最大 token 数,常见从 8K 到 200K 不等。它决定了三件事:能喂多少背景材料、能输出多长的回答、多轮对话能聊多久。超过窗口的内容会被截断或忽略 - 不是"记不住",而是"根本没看见"。工程上,长文档问答(第 3 章)的核心思路之一,就是"窗口装不下,就先检索再拼装"。
计费同样按 token:输入 token 和输出 token 分开计价,通常输出更贵;每次请求都是"输入 + 输出"一起算。省钱三板斧:Prompt 精简(少喂无关上下文)、结果缓存(同样的问法别问两次)、小模型打底(简单任务用便宜模型)。
类比:上下文窗口是工作台面
窗口有多大,模型一次能摊开的材料就有多少;台面摆不下,材料就在地上 - 它不会自己去捡。所以"把材料摆上台面"(写好 Prompt、做好检索),才是工程的重点。
1.5 模型选择:闭源、开源与量化
选模型是第一个"工程决策"。三条路线:闭源 API(GPT、Claude、DeepSeek、Gemini、通义等) - 权重不公开,按量付费、即开即用,效果通常最好,代价是数据要出域、成本随量增长;开源权重(Llama、Qwen、DeepSeek、GLM 等) - 权重可下载,可私有部署、可微调,隐私可控,但要自己准备 GPU 与运维;量化(Q4、INT8) - 把权重压缩到原来的 1/3~1/4,显存需求大降、推理更快,精度略降但小模型"够用"。注意:闭源 / 开源看的是权重开不开放,开源模型同样有官方 API,也可以自部署成 OpenAI 兼容服务(第 2 章会讲)。
决策时问自己三个问题:数据能不能出域?要不要定制行为?有没有 GPU 预算?另外,开源生态还有一个特点:同一家族往往有多个尺寸(如 Qwen 从 0.5B 到 72B),显存越多选越大、效果越好。把场景对照到下表:
| 你的场景 | 推荐路线 | 典型选择 | 理由 |
|---|---|---|---|
| 快速做原型 / 上线,数据不敏感 | 闭源 API | DeepSeek / GPT / Claude 等 | 即开即用、效果最好、按量付费 |
| 数据不能出域(企业内网、隐私) | 开源权重自部署 | Qwen / Llama / DeepSeek 权重 | 数据不出机器,私有可控 |
| 需要深度定制领域能力 | 开源 + 微调(第 4 章) | Qwen / Llama 权重 + LoRA | 闭源 API 通常不允许微调 |
| 本机 / 边缘跑,显存紧张 | 量化部署 | Qwen 7B / Llama 8B 的 Q4 版 | 显存降到 1/3~1/4,精度够用 |
| 成本敏感、调用量大 | 小模型 + 缓存 | mini 档 API 或量化小模型 | 简单任务不必用大模型 |
一条实用经验
新手期建议从"闭源 API + 最便宜的小模型"开始跑通逻辑;等需求明确(要私有化?要定制?要省成本?)再切换到开源或量化。模型迭代很快,别在选型上过度纠结 - 先跑起来。
1.6 常用开发框架速览
你会在书里反复见到四个名字,先弄清楚它们各自管哪一段:OpenAI SDK 是最底层的"打电话工具" - 发请求、收响应,几乎所有国产模型都提供 OpenAI 兼容接口,学会它就等于学会了所有家的调用方式;Transformers(HuggingFace)是开源模型的"驾驶舱" - 加载权重、跑推理、做微调都靠它;LangChain 是"拼装乐高" - 把模型、工具、记忆、Agent 拼成应用流程,抽象多、方便也绕;LlamaIndex 专攻 RAG 的"数据侧" - 文档加载、切分、索引、检索一条龙。
| 框架 | 定位 | 管哪一段 | 本书哪里用 |
|---|---|---|---|
| OpenAI SDK | 最底层的调用工具 | 发请求、收响应(各家 OpenAI 兼容接口通用) | 第 2 章裸调用主力 |
| Transformers(HuggingFace) | 开源模型的驾驶舱 | 加载权重、跑推理、做微调 | 第 4 章微调主力 |
| LangChain | 应用编排框架 | 链、Agent、工具、记忆的拼装 | 第 5 章 Agent 参考 |
| LlamaIndex | RAG 数据框架 | 文档加载、切分、索引、检索一条龙 | 第 3 章 RAG 参考 |
本书的态度很明确:先学会裸调用,再用框架。裸调用(第 2 章)让你看清一次请求到底发生了什么 - 输入什么、返回什么、怎么解析;框架只是把这些重复动作封装起来。先懂原理再上框架,出问题时你才知道该查哪里;直接上框架,报错时会像在迷宫里找门。
类比:SDK 是发动机,框架是整车
OpenAI SDK 像发动机,LangChain / LlamaIndex 像装好的整车。先拆开看发动机怎么转(裸调用),再上车开(框架),你就既会开车、又会修车。
本章要点
- 大模型 = 预训练 + 指令微调 + RLHF 对齐三步训练的产物;你的 API 调用只是"推理",快而便宜。
- 能力:写作、编程、翻译、总结、推理;边界:幻觉、数学不可靠、知识截止、算不了精确值。
- Prompt 四要素:角色、任务、上下文、格式;复杂问题加少样本示例与思维链("一步步想")。
- Token 是计费与窗口的单位:中文约 1 字 ≈ 1~2 token,1000 汉字 ≈ 1500 token。
- 上下文窗口有限,超出即"看不见";长内容要靠检索拼装。
- 选模型看场景:快速上线用闭源 API,私有化 / 定制用开源权重,显存紧张用量化。
- 框架是封装,先学会裸调用,再上 LangChain / LlamaIndex。



