Day 10 / 共 68 天 · 阶段 2 大模型基础

大模型是什么(直觉版)

阶段 1 你打完了工程地基(会调 API、懂异步、能开服务)。今天进入阶段 2,掀开主角的盖头——大模型到底是什么。搞懂它只是在"预测下一个词",你就能理解它为什么强、为什么会胡说,也才知道明天(Day 11)调它的 API 时每个参数在干嘛。今天不写业务代码,重在建立正确直觉

📍 你在 68 天里的位置(阶段 2:大模型基础 · Day 10-15)
D10 大模型是什么 D11 调 LLM API D12 流式输出 D13 参数/成本 D14 结构化输出 D15 多模型
💡 先用一个类比兜住今天(今天世界观:一个超级"接话高手") 把大模型想成一个读遍了全网文字、记忆力惊人的接话高手——你说半句,它总能接出最顺、最像人会说的下半句。它像你手机输入法的联想,只是强了亿万倍:不是猜下一个词,而是能一路接出整段话、代码、方案。今天所有概念都能塞进这个"接话"画面:接话的最小单位=token、它一次能看多长的上文=上下文窗口、它脑子里的"语感"厚度=参数量、它为了"接得顺"有时把不存在的事也编得很顺=幻觉。记住"它在接话,不是在查资料",今天全通。
L01

先破一个误解:它不是搜索引擎

🤔 痛点很多人第一次用 ChatGPT,会下意识把它当成"更聪明的百度"——以为它在一个大数据库里查答案。这个误解会让你后面处处踩坑。
💡 本质不查数据库、不联网翻资料(除非另外接了工具)。它做的事只有一件:根据你给的文字,一个词一个词地"接下去",每次都挑"最可能出现的下一个词"。它的所有"知识"都被压缩进了模型内部的参数里,是一种"语感",而不是一张可查的表格。
 搜索引擎大模型
在干嘛从已有网页里出来根据语感生成/接出来
给你的链接,让你自己看直接一段新写的话
会不会编不会(顶多找不到)会(接得很顺但可能是假的)
👶 一句话它不是"查到答案给你",而是"根据你说的,接出一段最像样的话给你"。这决定了它强在哪、坑在哪。
L02

本质:预测下一个 token

💡 本质大模型的核心动作只有一个:给定前面的所有文字,算出"下一个词是各种词的概率",挑一个最合适的接上;然后把它也当作输入,再算下一个……如此循环,直到把话说完。就是"疯狂加强版的输入法联想"。

比如你输入"今天天气真",模型内部会算出一张概率表,然后挑高分的接上:

输入:“今天天气真” → 下一个词的概率(示意):
62%
不错
20%
糟糕
9%
5%
香蕉
<1%
图注:模型给每个候选词打概率分,通常挑高分的(这里"好")接上,再把"今天天气真好"当输入算下一个词。
📝 例子:一次生成的循环 输入"中国的首都是" → 挑出"北" → 现在输入是"中国的首都是北" → 挑出"京" → "中国的首都是北京" → 挑出"。" → 结束。你看到的每一句话,都是这样一个词一个词滚出来的(这也是明天 Day 12 "流式输出"能一个字一个字往外蹦的原因)。
关键领悟:它优化的目标是"接得顺不顺、像不像",不是"对不对、真不真"。顺 ≠ 真——这一句话记牢,L06 的幻觉就全通了。
L03

token:接话的最小积木

🤔 痛点上面一直说"下一个词",但模型其实不是按"字"也不是按"单词"处理的。那到底按什么?这直接关系到你明天要付多少钱。
💡 本质模型把文字切成一块块 token(词元)——它是介于"字"和"词"之间的文字碎片。模型读进 token、吐出 token,API 也按 token 计费(Day 13 细讲)。

粗略的换算感觉(不同模型略有差异,记个量级即可):

  • 英文:大约 1 个 token ≈ 4 个字符 ≈ 0.75 个单词
  • 中文:大约 1 个汉字 ≈ 1~2 个 token
  • 一段 700 字左右的中文短文,大概 1000~1400 token
📝 例子:一句话被切成 token(示意) "我爱学习 Agent" 可能被切成 ["我","爱","学习"," Ag","ent"] 这样 5 个 token——注意 "Agent" 这种词可能被拆成好几块,而空格也常跟着后面的词。你不用精确算,只要知道"字越多、token 越多、越费钱"就够了。

👶 小白:为什么不干脆按"字"算,非要搞个 token?

👨‍🏫 老师:因为按字太碎、按整词又太多种,token 是个折中——它把常见的片段(像 "ing"、"学习")打包成一块,让模型用更少的单位覆盖更多语言,效率更高。你只需记住三件事:① 模型的"下一个词"其实是"下一个 token";② 输入输出都按 token 计费;③ 想省钱就少啰嗦。

L04

上下文窗口:它一次能看多长

🤔 痛点能不能把一整本书、几百页聊天记录一次全塞给它?为什么有时它"忘了"你前面说过的话?
💡 本质因为模型一次能"看进眼里"的 token 有上限,这个上限叫 上下文窗口(context window)。它就是模型的工作台大小——桌子就这么大,摆不下的资料只能拿走。输入 + 输出加起来都得挤在这张桌子上。

不同模型窗口差别很大,从几千 token 到上百万 token 不等。窗口越大越能塞长文档,但也越贵、有时越慢,而且塞太满模型还容易"顾此失彼"(这个现象叫"lost in the middle",阶段 3 的 Day 18 会专门讲)。

上下文窗口 = 一张固定大小的工作台 系统提示+历史 你这次的输入 留给输出的位置 输入 + 输出都得挤进这一张桌子;超了就要裁剪历史 桌子越大越能装,但更贵、可能更慢
图注:系统提示、对话历史、你的输入、模型的输出,全都共享这一张"桌子"。
对 Agent 的意义:Agent 常常要带一大堆历史和检索到的资料,很容易把桌子塞爆——所以后面才有"上下文工程"(Day 18)和 RAG(阶段 4),专门研究"只把最相关的东西摆上桌"。
L05

参数量:脑子里的"语感"厚度

💡 本质你常听到"70 亿参数""上千亿参数"。参数就是模型内部的一堆可调的数字旋钮,训练就是不断微调这些旋钮,让它"接话"越来越准。参数量约等于这个接话高手"语感"的厚度和脑容量。

粗略的直觉(不是硬规则,只帮你建立量级感):

  • 参数越多,通常越"博学、会推理",但也越慢、越贵、越吃显卡
  • 参数越少(小模型),跑得快又便宜,适合简单、高频的活;
  • 这正是后面 Day 15 "模型路由"的由头:贵活派大模型、便宜活派小模型,别拿牛刀杀鸡。
📝 例子:别被参数量迷惑 一个几百亿参数的强模型,和一个几十亿参数的小模型,让它们都做"把这句话翻译成英文"——结果可能差不多,但强模型贵好几倍、慢好几倍。简单任务用小模型,是省钱的第一课。(也别只看参数量,训练数据和方法同样关键,这里只求直觉。)
L06

幻觉:为什么它会一本正经地胡说

🤔 痛点你问它一本不存在的书的作者,它却言之凿凿给你编一个名字、还配上出版年份。这不是 bug 吗?为什么这么"自信地错"?
💡 本质回到 L02 那句话:模型优化的是"接得顺不顺",不是"对不对"。当它没有相关"语感"时,它不会说"我不知道",而是继续挑"最像答案的词"接下去——于是就编出一段读起来天衣无缝、其实纯属虚构的内容。这就是幻觉(hallucination)

理解了这点,你就明白幻觉不是偶发故障,而是"预测下一个词"这套机制的自然副产物。所以整条学习路线后面才有那么多"防幻觉"的功夫:

  • 给它真资料:RAG(阶段 4)——先检索真实文档再让它基于文档回答;
  • 让它调工具查:Function Calling(阶段 5)——算数/查库交给真程序;
  • 加审查:Critic 防幻觉(阶段 10,深潜 gov-agents)——专门挑"编造"的刺;
  • 做评测:faithfulness 等指标(阶段 9)——量化"它有没有忠于事实"。

👶 小白:那它是不是很不靠谱,不能用?

👨‍🏫 老师:恰恰相反——正因为你懂了它的脾气,才能把它用好。它极擅长"改写、总结、生成、按格式整理"这类"顺"就够的活;对"必须准确"的事实/计算,就别让它硬答,而是喂真资料、给工具、加校验"知道它会编,所以给它护栏"——这正是你未来作为 Agent 工程师的核心价值,也是面试高频考点。

L07

今日小结 + 动手 10 分钟

🧠 今天你应该能回答

  • 大模型和搜索引擎的根本区别?(一个查、一个"接话生成";它不查库,靠语感生成)
  • 它的核心动作是什么?(给定上文,一个 token 一个 token 地预测"下一个最可能的")
  • token 是什么?为什么重要?(文字碎片,模型读写的单位,也是计费单位)
  • 上下文窗口是什么?(一次能处理的 token 上限,输入+输出共享这张"桌子")
  • 幻觉为什么会发生?怎么治?(它只求"顺"不保证"真";用 RAG/工具/审查/评测来防)

✋ 动手:直观感受"文字→token"(无需 API Key)

大厂大多提供在线的"Tokenizer"网页,你可以搜 "OpenAI tokenizer" 或 "tokenizer 可视化",把下面几句话粘进去,观察它被切成几个 token、每块长什么样:

# 分别粘进 tokenizer 网页,比较 token 数:
# 1) Hello, how are you?
# 2) 你好,最近怎么样?
# 3) Agent工程师转行学习路线

# 观察:中文 vs 英文,谁更“费 token”?“Agent”这种词被切成了几块?

想在本地用代码数 token,也可以(可选,需联网装库):

# pip install tiktoken   # OpenAI 的分词工具,可离线数 token
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")   # 一种常见编码
text = "你好,我在学 Agent 开发"
tokens = enc.encode(text)                    # 把文字切成 token 的 id 列表
print("token 数:", len(tokens))             # 打印这句话占几个 token
print("大致费用感:字越多,token 越多,越贵")
明天预告 · Day 11 调 LLM API:懂了原理,明天就真正上手——用官方 SDK(openai / anthropic)写出你的第一段和大模型的对话代码。你会认识 messages 的三种角色 system/user/assistant(分别是"设定人设、你说话、模型回话"),并把今天的 token、上下文窗口在真实调用里对上号。
← Day 09 FastAPI Day 11 · 调 LLM API →