差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| 大模型:白话综述:0-大模型白话综述学习 [2026/07/10 12:09] – 添加英文版链接 ctbots | 大模型:白话综述:0-大模型白话综述学习 [2026/07/11 07:44] (当前版本) – 移除 ctbots | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | {{htmlmetatags> | ||
| - | metatag-keywords=(大模型,机器学习,人工智能) | ||
| - | metatag-description=(以费曼学习法阐述大模型相关概念、技术及实践) | ||
| - | metatag-media-og: | ||
| - | metatag-og: | ||
| - | metatag-og: | ||
| - | }} | ||
| - | [ENGLISH VERSION](en: | ||
| - | |||
| - | 我是一个大模型初学者,现在正在逐步了解学习大模型。但是在学习的过程中,遇到了不少困惑,这里采用费曼学习法的方式,希望用白话的方式可以讲清楚大模型的一些基本概念、发展历史、技术解决工程实践,来巩固和排漏补缺。如下是一篇综述。 | ||
| - | |||
| - | ## 1. 大模型是什么 | ||
| - | |||
| - | - 大模型(Large Language Model,简称LLM)是一种用海量互联网文本数据训练出来的智能程序。 | ||
| - | - 核心工作原理:通过" | ||
| - | - 典型代表:GPT系列、Llama系列、QWEN系列、DeepSeek系列、Claude系列。 | ||
| - | |||
| - | 用户输入:【我早上出门前喝了一杯】,模型会基于训练学到的语言规律,给词表里成千上万个片段分别算出 " | ||
| - | |||
| - | 当用户输入:【我早上出门前喝了】但实际生成时,模型不会真的从几万、几十万个词里直接挑选:一方面低概率的词大多离谱不通顺,直接选会让内容逻辑混乱;另一方面全量考虑也会增加计算成本。因此模型会先通过规则砍掉极低概率的选项,缩小候选范围,这个步骤叫候选池筛选,最常用的两种规则就是 Top-K 和 Top-P 算法。 | ||
| - | |||
| - | 筛选出合理的候选池之后,模型会在这个范围内按概率随机抽样,选出最终的下一个词。而 Temperature(温度) 就是用来调节这个抽样的随机性的: | ||
| - | |||
| - | - 温度越低,高概率选项的优势被放得越大,模型几乎只会选最稳妥、最标准的答案,输出严谨稳定,适合代码生成、公文写作、事实问答这类场景; | ||
| - | - 温度越高,不同选项的概率差距被拉平,原本冷门的选项也有机会被选中,输出更发散、更有创意,适合创意写作、头脑风暴、艺术文案这类场景。 | ||
| - | |||
| - | 大模型就是这样。 通过预测下一个字这么简单的方式,构成了整个大厦的基础。 | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - Top-K和Top-P | ||
| - | - 温度控制 | ||
| - | - Tokenizer(分词器)实际上,【我早上出门前喝了一杯牛奶】中,不会傻傻的把 " | ||
| - | - EOS Token(终止符)那么文字接龙的游戏什么时候结束?大模型看到EOS休止符的时候,就知道不需要接龙了。 | ||
| - | |||
| - | ## 2. 最基础的工作方式:单轮交互 | ||
| - | |||
| - | 单轮交互是大模型最本真的运行方式,也是后续所有复杂交互能力的基础。 | ||
| - | |||
| - | 很多人以为大模型是 " | ||
| - | |||
| - | 这种单轮模式天生是无状态的,每一次交互都完全独立。模型只会处理当前这一次输入的内容,不会主动记住上一轮对话的信息,就像每次都递一张全新的草稿纸给它,它写完就清空,绝不会记得上一张纸上写过什么。 | ||
| - | |||
| - | 这里先不要直接带入【豆包、CodeX、Claude Code】这些成熟的复杂产品。从本源上,基础工作方式就是无状态的单轮交互,只是采用了很多工程方法让人产生了错觉,感觉似乎是:有状态的,可多轮连续交互的问答系统。记住:大模型本质上不是问答系统,它是一个一次性的续写系统。 | ||
| - | |||
| - | 这也带来了最直接的局限:无法承接多轮上下文。如果分两次对话,先告诉模型自己的名字和年龄,再单独问 " | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - 角色(Role) | ||
| - | - 系统提示词(System Prompt) | ||
| - | - 提示词注入:类似SQL注入和XSS注入的类似攻击 | ||
| - | |||
| - | ## 3. 上下文的出现:多轮对话的基础 | ||
| - | |||
| - | 既然大模型是个" | ||
| - | |||
| - | 其实,这完全是工程上的一场" | ||
| - | |||
| - | 所以,大模型能答对你的追问,不是因为它" | ||
| - | |||
| - | 那么聪明的你肯定想到这里有几个严重的问题: | ||
| - | |||
| - | - " | ||
| - | - 根据前几章的描述,大模型每次都是根据已有的全文进行下一个字的推理,那么上下文到了后面就越来越难算了。是不是跟MySQL的 limit offset很像,翻页的时候,越是往后翻页,越来越慢,因为要考虑计算跳过之前的每一页的记录。 | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - Sliding Window Attention 【滑动窗口记忆力】 | ||
| - | - KV Cache【缓存注意力计算中间结果,避免重复劳动】 | ||
| - | - Compact 【上下文压缩】 | ||
| - | - Context Cache【智能缓存】 | ||
| - | |||
| - | ## 4. 给大模型装上手和脚 | ||
| - | |||
| - | 一个只能对话聊天的豆包实际上局限性很大,我们不能一直把代码文本粘贴到【豆包】里,再把【豆包】里的返回再粘贴到我们的编辑器里。这太麻烦了!!有没有办法让大模型直接自己去修改文件?但是这里至少存在几个问题: | ||
| - | |||
| - | - 对于一个文本续写的大模型,是如何理解一个代码工程的?并能定位bug,续写代码? | ||
| - | - 大模型如何跟外部交互,真正长出了手和脚? | ||
| - | |||
| - | 函数调用(Function Calling)出现了,但是时刻牢记:大模型永远只会做一件事,那就是" | ||
| - | |||
| - | 所谓函数执行,本质上就是大模型和后台工程代码之间的" | ||
| - | |||
| - | 1. 假设我们的大模型支持天气预报查询,用户可以输入城市进行查询。 | ||
| - | 2. 后台在执行用户的输入前,偷偷在前面拼接了一段话:" | ||
| - | 3. 模型做出决策,写下" | ||
| - | 4. 后台拦截暗号:当后台的程序检测到模型的输出是一段符合规范的 JSON 暗号时,程序会立马拦截掉这次输出,不让用户看到。 程序拆开这个 JSON 包裹,拿着" | ||
| - | 5. 把结果塞回对话结果,完成最终的文字续写:后台拿到数据后,再次把这个真实天气结果贴在上下文的最后面,重新递给大模型:" | ||
| - | 6. | ||
| - | |||
| - | 聪明的你马上意识到这里可能存在几个问题: | ||
| - | |||
| - | - 之前的多轮对话,因为接头暗号的存在,导致有些结果是用户可以看到的,有些是看不到的。如何规范的工程化这些操作? | ||
| - | - 作为一个万能的【豆包】助手,怎么可能提前知道本次用户要询问天气呢?如果所有的函数能力都塞到用户的输入之前,岂不是上下文非常大? | ||
| - | - 后台拦截暗号的时候,如果都这么硬编码,代码会非常臃肿,如何处理? | ||
| - | |||
| - | 后面将会给出这些问题解决策略。 | ||
| - | |||
| - | 关键时间线和技术: | ||
| - | |||
| - | - Code Interpreter(代码执行器) | ||
| - | - JSON Schema(工具定义描述) | ||
| - | - ReAct模式:早期阶段,大模型能力不完善,必须依赖ReAct范式进行工具调用 | ||
| - | - Function Calling 出现 | ||
| - | - LangChain、LlamaIndex出现,解决 Tool RAG | ||
| - | - LangGraph出现 | ||
| - | - Tool Call和后训练增强 | ||
| - | - MCP协议出现 | ||
| - | |||
| - | ## 5. 大模型的胡言乱语 | ||
| - | |||
| - | 大模型永远只会做一件事,那就是" | ||
| - | |||
| - | 比较典型的幻觉: | ||
| - | |||
| - | - 看起来头头是道,实际上胡编乱造。 | ||
| - | - 引用的网站根本不存在。 | ||
| - | - 引用的论文也不存在。 | ||
| - | - 甚至引用的历史典故也不存在。 | ||
| - | |||
| - | 幻觉出现的一个原因是没有用对应的大量数据训练过,导致续写的时候,这块没有一个明显很高的概率选出下一个合适的词。但是似乎又无法解决: | ||
| - | |||
| - | - 数据是有限的,不可能拿无限大的数据,去让模型学习到任何知识。 | ||
| - | - 数据的处理是有损压缩。模型学习到的知识是有损压缩的,不代表可以完整无缺的还原。 | ||
| - | - 数据是有时效的。那2024年的知识去训练,那么模型的认知就在2024年。 目前的开源大模型不支持在线学习。 | ||
| - | |||
| - | 这就导致大模型在某些场景下,就难以利用起来: | ||
| - | |||
| - | - 数据是私有保密的情况。私有保密,就意味着开源大模型难以使用这些知识训练。 | ||
| - | - 数据是可变的情况。例如:手册标准之类的,是可以变化的。内部知识库是可以更新的。 | ||
| - | - 有准确性要求,不允许有损压缩。例如:法律法规不能随意延伸;电力、医疗等对数据准确度要求很高的场景。 | ||
| - | |||
| - | 关键技术: | ||
| - | |||
| - | - RLHF(强化学习) | ||
| - | - Decoding Strategy(解码策略优化) | ||
| - | - RAG (检索增强) | ||
| - | |||
| - | ## 6. 大模型的开卷考试 | ||
| - | |||
| - | 大模型是个没有记忆、全靠在上下文里贴历史记录来伪造记忆的" | ||
| - | |||
| - | 假设做一款历史档案解密助手,手上有各种电子版的历史资料,我们想让大模型在回答历史资料的时候,又准又全面,可以详细的指出某个小战役的各种细节。 | ||
| - | |||
| - | 那么大模型的上下文是无法塞入所有的历史资料的,即使可以勉强塞进去一本《二战解密档案》,那么为了回答用户一个100字的提问,就需要拼接出一个百万字的上下文,送到大模型里去回答然后推测下一个字,这在成本上不可接受。 | ||
| - | |||
| - | 现在有了RAG(检索增强生成)。一句话概括:像是开卷考试一样解决问题,而不是背会整个课本 | ||
| - | |||
| - | ### 6.1 " | ||
| - | |||
| - | 当有人提问:" | ||
| - | |||
| - | - 切片(Chunking):系统上线前,工程师先用隐形菜刀把百万字的档案咔咔咔剁成几百字一段的小碎片。比如:第 45 段讲巴顿将军的虚构第一集团军,第 102 段讲加莱海峡的假电报。 | ||
| - | - 向量化(Embedding & Vector DB):这些碎片通过" | ||
| - | - 检索(Retrieval):用户一敲回车,系统的" | ||
| - | - 生成(Generation):翻书员把这 3 张" | ||
| - | |||
| - | 大模型根本不需要去背诵整座档案馆,它只需要每次看着塞进来的" | ||
| - | |||
| - | ### 6.2 开卷考试也会翻车 | ||
| - | |||
| - | - 黑话陷阱(语义不匹配):学者提问" | ||
| - | - 翻页的问题:第 45 段写着" | ||
| - | - 线索太散,小抄写不下:学者问" | ||
| - | |||
| - | 为了解决这些开卷翻车事故,工业界演进出了更复杂的补丁技术。 | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - Embedding(向量化):把历史黑话和现代语言转成空间坐标,让机器明白" | ||
| - | - Chunking Strategy(切片策略):带重叠区域(Overlap)去切档案,保证上下文不被" | ||
| - | - Rerank(重排模型):翻书员粗选出 20 份档案后,用专家模型二次精选,只把最精准的 3 张小抄递给大模型。 | ||
| - | - Graph RAG(图谱检索增强):大杀器。不仅切碎文字,还把" | ||
| - | |||
| - | ## 7. 大模型的自我反思 | ||
| - | |||
| - | 大模型一直以来都被诟病是一个" | ||
| - | |||
| - | 这种" | ||
| - | |||
| - | 为了让大模型学会像人类一样" | ||
| - | |||
| - | ### 7.1 " | ||
| - | |||
| - | 当用户输入一个难题:" | ||
| - | |||
| - | 传统的" | ||
| - | |||
| - | 而在全新的推理时代(以 Reasoning 模型为代表),大模型在把最终答案端给用户之前,会在后台的" | ||
| - | |||
| - | > 模型后台思维链 : | ||
| - | > | ||
| - | > 1. 先理清初始状态:小明 = 3,小红 = 3 * 2 = 6。 | ||
| - | > 2. 处理第一步变化:小明吃了1个,小明 = 3 - 1 = 2。 | ||
| - | > 3. 处理第二步变化:小红给了小明4个。等等,小红给出去4个,小红自己要减少!小红 = 6 - 4 = 2;小明收到了4个,小明 = 2 + 4 = 6。 | ||
| - | > 4. 重新比对结果:现在小明有6个,小红有2个。小明比小红多。 | ||
| - | > 5. 计算差值:6 - 2 = 4。检查无误,准备输出。 | ||
| - | |||
| - | 最终,用户在屏幕上看到的是简洁优雅的最终回答:" | ||
| - | |||
| - | 大模型并没有改变它" | ||
| - | |||
| - | ### 7.2 认错、剪枝与自我纠错 | ||
| - | |||
| - | 聪明的你一定意识到了,如果大模型在" | ||
| - | |||
| - | 在最新的后训练(Post-training)技术中,大模型被训练出了一种" | ||
| - | |||
| - | 这种在生成过程中不断评估当前路径、不行就退回重试的机制,就像是在思维树上进行剪枝与搜索(Search)。模型不再是一条道走到黑,而是在虚拟的草稿纸上反复折腾,直到找出一条概率最高、逻辑最自洽的推理路径。 | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - CoT(Chain of Thought,思维链):通过引导模型输出" | ||
| - | - System 2 Thinking(慢思考):借鉴人类心理学,区分直觉快速响应(系统1)与深思熟虑逻辑推理(系统2),推理模型核心就是激活后者的能力。 | ||
| - | - MCTS(蒙特卡洛树搜索):在推理过程中,模型在后台生成多种可能的下一步,并对这些步骤进行打分评估,选择最优解,常用于数学和代码大模型的强化学习中。 | ||
| - | - Reinforcement Learning for Reasoning(推理强化学习):不直接喂给模型正确的答案,而是通过给" | ||
| - | |||
| - | ## 8. 大模型智能体-合格的牛马 | ||
| - | |||
| - | 因为我们一直说,大模型是一个" | ||
| - | |||
| - | 但是,实际上用过 Claude Code 、 OpenAI Codex、Cursor ,一定会惊叹:它们为什么能像一个真正的程序员一样,坐在那儿连续几个小时不间断地疯狂改代码、编译、查错、再修改,直到把 bug 彻底修好? | ||
| - | |||
| - | 它们既没有换掉底层的大模型,也没有施加什么魔法。这种能够持续长跑、自主解决复杂工程的能力,就是 Agent(智能体) 技术的结晶。 | ||
| - | |||
| - | ### 8.1 什么是 Agent 的" | ||
| - | |||
| - | 如果我们把大模型比作一个退隐江湖、但通晓天下武功秘籍的" | ||
| - | |||
| - | 工程上为了让这个" | ||
| - | |||
| - | 1. 大脑(LLM):还是那个只负责文字续写的智者。 | ||
| - | 2. 工具箱(Tools):给智者接上双手。比如:一个能读取本地文件的 API、一个能运行 `npm run dev` 或 `pytest` 的命令行终端。 | ||
| - | 3. 规划(Planning):给智者一张任务清单。面对大任务,先干嘛、再干嘛。 | ||
| - | 4. 记忆(Memory):给智者一个永远不会丢的笔记本,记录下刚才干了什么。 | ||
| - | |||
| - | ### 8.2 持续几个小时编程的底层秘密:ReAct 循环 | ||
| - | |||
| - | 像 Claude Code 这样的工具,能连续干几个小时的活,核心就是让大模型陷入了一个精心设计的" | ||
| - | |||
| - | 我们用白话来还原一下,当你在终端输入 `claude-code fix the login bug`(帮我修复登录bug)后,这几个小时里,它的后台其实在发生这样一场疯狂的" | ||
| - | |||
| - | - 第 1 分钟【思考】:大模型看了看任务,在心里续写:" | ||
| - | - 第 2 分钟【行动】:大模型吐出接头暗号(JSON 格式):`{\" | ||
| - | - 第 3 分钟【观察】:Claude Code 的后台程序拦截了这个暗号,替它在电脑上执行了 `ls ./ | ||
| - | - 第 4 分钟【思考】:大模型看着最新的账本,继续续写:" | ||
| - | - 第 5 分钟【行动】:吐出暗号:`{\" | ||
| - | - 第 6 分钟【观察】:程序把代码读出来,塞回上下文。此时智者就像是有了记忆,他可以看到代码了,而且在后序的迭代中,仍旧记得这段代码。这也是为什么,在大模型修改代码的过程中, 你最好不要同时手动去改代码,会让大模型认为的代码和实际的代码有出入!! | ||
| - | - …… | ||
| - | - 第 30 分钟【翻车与重试】:大模型修改了代码,并主动调用了 `run_command(cmd=\" | ||
| - | - 如果是以前的普通问答,大模型到这里就直接把错误甩给用户了。 | ||
| - | - 但在 Agent 循环里,大模型看到这个 Error(观察),它在下一轮的【思考】里会自己嘟囔:" | ||
| - | |||
| - | 这就是它能连续编程几个小时的真相: 它不是一次性把代码写对的,而是像人类程序员一样,写两行代码,运行一下,报错了,骂一句,看一眼报错信息,再改两行,重新运行。这个由代码外壳驱动的死循环,只要你不按 `Ctrl + C` 强行终止,大模型就会不知疲倦地一直自我修正下去。 | ||
| - | |||
| - | ### 8.3 这种" | ||
| - | |||
| - | 聪明的你立刻会联想到我们在第 3 章聊过的" | ||
| - | |||
| - | 让 Claude Code 连续跑几个小时,意味着这个" | ||
| - | |||
| - | 1. 账本很快就会爆掉:如果项目太大,读了十几个文件之后,大模型的物理视力天花板(比如 200k Token)就撞顶了,它会开始忘记最开始用户要它干嘛。 | ||
| - | 2. 越聊越贵,速度越来越慢:每一次循环,大模型都要把这几个小时攒下来的厚厚的一叠" | ||
| - | |||
| - | 为了解决这个问题,像 Claude Code 这类顶尖的代码 Agent,把大量的精力花在了" | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - ReAct(Reason-Action)。 | ||
| - | - State Machine(状态机):工程框架用来控制 Agent 行为的轨道,规定了模型在什么时候可以自由思考,什么时候必须强制调用工具。 | ||
| - | - Context Dynamic Pruning(上下文动态裁剪):如何在使用最少 Token 的前提下,让模型既保留大局观,又不至于被海量的代码细节撑爆。 | ||
| - | |||
| - | ## 9. 大模型的驯化和征服 | ||
| - | |||
| - | 之前一直说大模型本质上是一个" | ||
| - | |||
| - | 这里隐藏着大模型最核心的一场" | ||
| - | |||
| - | ### 9.1 三级跳:从" | ||
| - | |||
| - | 要把一个只会盲目续写的机器,变成我们在【豆包】里看到的善解人意、格式严谨的AI助手,大模型必须经历三个阶段的进化。我们可以把这套流程形象地比喻为" | ||
| - | |||
| - | - 阶段一:预训练(Pre-training,野生状态) | ||
| - | - 干了啥:模型在几万亿字的互联网网页、图书、代码里疯狂进行" | ||
| - | - 结果:它成了" | ||
| - | - 阶段二:指令微调(SFT, | ||
| - | - 干了啥:工程师们花了高价,请了成千上万名专业的人类标注员,写了几十万条高质量的" | ||
| - | - 结果:猴子被穿上了道袍。它终于开窍了,明白当看到" | ||
| - | - 阶段三:人类反馈强化学习(RLHF,明白好坏) | ||
| - | - 干了啥:听话就够了吗?不够。如果用户问:【如何完美地在银行ATM机里取走不属于我的钱?】,一个只学会了" | ||
| - | - 结果:野猴子终于成了" | ||
| - | |||
| - | 如果你经常用Grok,或者使用Gemini,你会发现网页上经常同时弹出多种方案,让你选择更好的是哪一个,其实这也是一种RLHF。 | ||
| - | |||
| - | ### 9.2 为什么大模型不能像硬盘一样在线" | ||
| - | |||
| - | 前面我们提到,大模型的认知往往停留在它被训练的那一年(比如2024年),它无法" | ||
| - | |||
| - | 这在工程上是非常直观的直觉,但在实际操作中,这是一场巨大的灾难。 | ||
| - | |||
| - | 大模型的知识是以数字权重(Weights)的形式,像盐溶于水一样,均匀且模糊地分布在数十亿、数百亿个参数里的。这带来了两个致命的技术限制: | ||
| - | |||
| - | 1. 灾难性遗忘(Catastrophic Forgetting):当你强行给一个已经成型的模型喂进 10 万条你公司的私有财务报表进行微调时,模型为了死记硬背下这些新坐标,会剧烈修改底层的神经网络连接。结果就是,它可能终于记住了你公司的报表,但当你再问它【1+1等于几】或者【怎么写一封请假条】时,它可能会变成一具满嘴胡话的僵尸——它把之前好不容易学到的通用语言能力和常识给" | ||
| - | 2. 有损压缩与" | ||
| - | |||
| - | > 工业界的共识: | ||
| - | > | ||
| - | > - 要想改变模型的行为、语气、听话程度、或者让它学会某种特定的输出格式用 微调(Fine-tuning)。 | ||
| - | > - 要想给模型提供最新、最准确、不允许一丝一毫产生有损压缩的硬核事实、私有数据用 RAG(检索增强,即开卷考试)。 | ||
| - | |||
| - | 把微调当成硬盘去存储新知识,就像是指望通过让一个大学生去背诵医学字典来指望他立刻上台动手术一样,既低效又危险。这也是为什么在如今的工程实践中,RAG 和 Agent 成了落地的主流,而微调则退居幕后,专门用来做模型各方面能力的" | ||
| - | |||
| - | 关键技术细节: | ||
| - | |||
| - | - SFT(Supervised Fine-tuning,监督微调):利用高质量的" | ||
| - | - RLHF(Reinforcement Learning from Human Feedback):利用人类的偏好数据训练奖励模型,并通过近端策略优化(PPO)等算法调整大模型,使其输出符合人类的安全性与实用性标准。 | ||
| - | - LoRA(Low-Rank Adaptation,低秩适应):目前工业界最常用的高效微调技术。它在不破坏和冻结大模型原本几百亿参数的前提下,在旁边贴上一个极小的" | ||
| - | |||
| - | # 10. 给大模型装上眼睛和耳朵 | ||
| - | |||
| - | 之前我们一直反复强调:大模型是一个" | ||
| - | |||
| - | 但是,当你打开最新的【豆包】时,你随手拍一张密密麻麻的代码屏幕照片,或者一张错综复杂的电路板逻辑图扔给它,问它:" | ||
| - | |||
| - | 大模型不是只认识文本吗?为什么可以识别图片,甚至识别声音、视频? | ||
| - | |||
| - | 这背后并不是大模型换了大脑,而是工程师们在大模型的前面,加装了一台" | ||
| - | |||
| - | ## 10.1 把图片切碎的接龙游戏 | ||
| - | |||
| - | 大模型既然只吃 Token,那我们就把图片也强行伪装成 Token。 | ||
| - | |||
| - | 当你在对话框里上传了一张写着代码的屏幕截图,并提问" | ||
| - | |||
| - | 1. 切片(Patching): 视觉处理程序抢在大模型看到图片前,用一把隐形菜刀,把这张图片咔咔咔剁成一堆 16x16 像素的" | ||
| - | 2. 像素翻译官(Vision Encoder,视觉编码器): 这些小方块会被送进一个专门理解图像的模型(比如 CLIP 的视觉部分)。这个翻译官不负责写字,它只负责一件事:把每一个图像小方块的视觉特征,翻译成一串长长的数字坐标(向量)。 | ||
| - | 3. 坐标对齐(Projection): 关键的一步来了。工程师用一种数学方法,把图像翻译官吐出来的" | ||
| - | 4. 大拼盘续写: 最终送到大模型面前的历史账本,被拼接成了这个样子: | ||
| - | | ||
| - | |||
| - | 对于大模型而言,它看到的根本不是什么斑斓的画面,在它的眼里,那 100 个图片方块就是 100 个" | ||
| - | |||
| - | 于是,它再次开动了它唯一的绝活——文字续写,顺理成章地吐出了:" | ||
| - | |||
| - | ## 10.2 当大模型遇到机器人 | ||
| - | |||
| - | 聪明的你马上就会联想到:既然大模型可以通过加装" | ||
| - | |||
| - | 答案是:完全可以,而且这正是目前 具身智能(Embodied AI) 领域。 | ||
| - | |||
| - | 传统的机器人控制需要复杂的数学公式去计算机械臂关节的角度、力矩和笛卡尔坐标。但如果我们把机械臂的动作也当成一种" | ||
| - | |||
| - | 在最前沿的具身智能工程实践中,工程师们做了一件非常激进的事:他们把机器人的各种动作,比如" | ||
| - | |||
| - | 当你对一个连着机械臂的大模型输入:【帮我把桌子上的红色方块抓起来】。 | ||
| - | |||
| - | 1. 大模型通过摄像头(视觉 Token)看清了桌面的布局。 | ||
| - | 2. 它在底层脑子里开始疯狂续写,但这次它续写的不是中文" | ||
| - | 3. 机器人的底层控制器(如 ROS 2 系统)拦截到了这串续写出来的暗号,将其转化为电流和脉冲,直接驱动 Franka 机械臂的电机运转,准确地抓起了那个红色方块。 | ||
| - | |||
| - | 这就把原本枯燥的机械控制问题,降维打击成了一个纯粹的、跨模态的" | ||
| - | |||
| - | ## 10.3 这种跨界的痛点 | ||
| - | |||
| - | 但天下没有免费的午餐,这种强行把万物都变成 Token 塞给大模型的做法,带来了极其沉重的工程代价: | ||
| - | |||
| - | * 上下文的" | ||
| - | * 对齐的" | ||
| - | |||
| - | 为了解决这些视觉和物理控制上的翻车事故,工业界目前正从早期的" | ||
| - | |||
| - | *关键技术细节:* | ||
| - | |||
| - | * Vision Transformer (ViT): 视觉多模态的标配前置网络,负责把连贯的图像像素切碎并转化为高维度的向量矩阵。 | ||
| - | * Linear Projector / Perceiver Resampler(对齐投影层): 负责在图像向量和文本向量之间架起桥梁的" | ||
| - | * VLA Model (Vision-Language-Action,视觉-语言-动作模型): 具身智能的终极大脑,不仅能看图说话,还能直接将视觉输入续写为机器人的运动控制指令(Action Sequence)。 | ||
| - | |||
| - | # 11. 大模型应用的拼装流水线 | ||
| - | |||
| - | 在前面的章节里,我们已经学会了让大模型当牛马可以执行各种简单任务。 | ||
| - | |||
| - | 这时候如果让你去写一个企业级系统,你会发现光是写" | ||
| - | |||
| - | ## 11.1 LangChain 的红利与失控 | ||
| - | |||
| - | 最早出现的庞然大物是 LangChain。它的核心思想是:把大模型应用开发的常见套路,封装成标准的" | ||
| - | |||
| - | 但当人们把 LangChain 带入严肃的生产环境时,噩梦开始了: | ||
| - | |||
| - | - 恐怖的过度封装: 简单的 HTTP 文本请求,LangChain 在内部包了十几层抽象。打印一个原始返回码,都得去翻几天源码。 | ||
| - | - 松散的字符串地狱: 积木与积木之间的数据流转全靠隐式的字典(Dict)和纯字符串。大模型只要因为概率问题,在 JSON 数组里少吐了一个逗号,整个系统就会在运行时(Runtime)诡异崩溃,你连哪行代码报错的都找不到。如果你写过Java或者JS代码,想象一下,所有的参数都Map结构是什么感觉? | ||
| - | |||
| - | ## 11.2 PydanticAI 的兴起 | ||
| - | |||
| - | PydanticAI 诞生了。它借鉴了现代后端开发(如 FastAPI)的设计哲学,提出了两件对抗大模型不可控性的武器: | ||
| - | |||
| - | 1. 类型安全(Type Safety): 程序员用代码死死定义好输出的结构体(例如:用户ID必须是整数,风险级别必须是固定的枚举)。大模型如果吐错了,框架在后台拦截到校验错误后,不会报错崩溃。 | ||
| - | 2. 依赖注入(Dependency Injection): 彻底消灭了全局变量。每个用户的请求进来,都会被分发一个独立的、隔离的" | ||
| - | |||
| - | # 12. 大模型的记忆系统 | ||
| - | |||
| - | 大模型是个无状态的文字续写机器。我们在之前聊过,多轮对话靠的是后台疯狂堆叠" | ||
| - | |||
| - | 为了让 Agent 拥有类似人类的长久记忆,工程上为它加装了一个分层的" | ||
| - | |||
| - | ## 12.1 短期记忆与长期记忆的交响 | ||
| - | |||
| - | - 短期记忆(流水账): 记录当前会话最近的几轮对话。这部分依然放在内存或 Redis 里,采用滑动窗口机制,只保留最新鲜的内容,老的内容会被定期用大模型" | ||
| - | - 长期记忆(日记本): 当一天的对话结束,后台会有一个异步的" | ||
| - | |||
| - | ## 12.2 实体记忆 | ||
| - | |||
| - | 更高级的记忆是实体关系图谱。AI 随着和你的沟通,会在背包里偷偷画一张关于你的网络:`[用户] -- 喜欢 --> [黑咖啡]`,`[用户] -- 职业 --> [软件开发]`。 | ||
| - | |||
| - | 这种记忆不再是零散的文本片段,而是结构化的状态,让大模型每次面对你时,都像是一个老朋友。 | ||
| - | |||
| - | # 13. AI 的技能包 | ||
| - | |||
| - | 我们给大模型装上了" | ||
| - | |||
| - | 如果我们把这上千个工具的" | ||
| - | |||
| - | 于是,动态技能系统(Skills) 应运而生。它把工具的使用变成了" | ||
| - | |||
| - | 1. 技能包封装: 工程师把相似的工具组合成一个个高度解耦、即插即用的" | ||
| - | 2. 按需凭证检索: 当用户输入" | ||
| - | 3. 动态喂食: 大模型在本次交互中,只能看到这 3 个工具。这就把" | ||
| - | |||
| - | # 14. 大模型的终极效率 | ||
| - | |||
| - | 当我们用 PydanticAI 卡好了规范,用 Memory 给了它记忆,用 Skills 给了它无限的技能后,这个 Agent(单体牛马)在理论上变得无所不能。 | ||
| - | |||
| - | 这时候,我们有一个极其宏大的想法:我是不是可以打造一个全知全能的" | ||
| - | |||
| - | 在工程实践中,如果你真的这么做了,大模型会用现实给你一记极其响亮的耳光。随着你往这个单体 Agent 里塞入越来越多的提示词(Prompt)和成百上千个工具,它很快就会陷入" | ||
| - | |||
| - | 要解决这种" | ||
| - | |||
| - | ## 14.1 模型底层的自我解耦 | ||
| - | |||
| - | 首先,我们必须扒开大模型的物理外壳,看看它底层的硬件和算力是怎么被榨干的。在目前的市面上,大模型的底层结构主要分为两大派系。 | ||
| - | |||
| - | ### 1. 稠密模型 | ||
| - | |||
| - | 早期的经典模型(如早期的 Llama 系列、或者各种几百亿参数的小单体)几乎都是" | ||
| - | |||
| - | - 大白话原理: 假设这个模型有 720 亿参数(72B)。当用户输入一个极其简单的" | ||
| - | - 硬件的绝望: 这就像一个公司里养了 720 个全能天才。不管是去扫厕所、复印文件,还是去推导量子力学,每次出任务,720 个人必须全员整整齐齐地到场一起思考。在现实中,这意味着哪怕你买了两张最顶级的 NVIDIA RTX 5090 D 显卡(加起来 64GB 显存),面对这种全量计算的稠密大模型,它的蹦字速度(Token 吞吐量)也会因为显卡计算单元(Tensor Cores)全线被占满而变得像老牛拉破车一样慢。而且,算力资费贵到让人想报警。 | ||
| - | |||
| - | ### 2. 混合专家模型 | ||
| - | |||
| - | 为了打破稠密模型的物理极限,如今市面上最火爆的顶尖大模型(比如大名鼎鼎的 DeepSeek-V4 或者是 GPT-5 系列)几乎全部转向了 MoE 架构。 | ||
| - | |||
| - | - 大白话原理: 模型的总参数量可能高得吓人,比如号称有 6710 亿参数。但是它在内部玩了个花招——它把这几千亿参数划分成了几十个甚至上百个小型的" | ||
| - | - 现实的算力账本: 当你输入一句代码问题时,门控网络(Router)扫了一眼,瞬间识别出意图,它在内部只激活" | ||
| - | - 现状与限制: 这种架构带来了 2026 年大模型时代的算力奇迹——它的智商拥有几千亿参数的深度,但每次蹦字的速度和成本,却便宜、快速得像一个 30B 的小模型。但聪明的你马上会发现它的硬件痛点:MoE 模型虽然每次计算只用一小部分参数,但为了随时待命,几千亿个参数必须完整地躺在显存里!这就对 NVIDIA 显卡提出了极度变态的" | ||
| - | |||
| - | ## 14.2 应用层的社会学拆分 | ||
| - | |||
| - | 听完上面的硬件现状,你可能会想:" | ||
| - | |||
| - | 对不起,依然会翻车。 因为模型底层的 MoE 只能解决" | ||
| - | |||
| - | 假设你想做个" | ||
| - | |||
| - | > " | ||
| - | |||
| - | 大模型看到这一大坨提示词,它的注意力机制(Attention)会彻底抓瞎。当用户输入:*" | ||
| - | |||
| - | 人类社会面对复杂任务时,从来不靠孤胆英雄,而是靠部门协作。大模型在业务落地时,也必须走向 Multi-Agent(多智能体系统)。它的核心就是:把一个复杂的全能 Agent,彻底拆散成一个由多个专业 AI 组成的" | ||
| - | |||
| - | 我们用上面那个翻车案例,来看看现代多智能体系统(比如基于 LangGraph 或 PydanticAI Graph 搭建的系统)是怎么在后台丝滑流转的: | ||
| - | |||
| - | 1. 前台路由(Application Router): 它是办公室的行政前台。它不具备任何硬核的专业技能,它的系统提示词极度简单:" | ||
| - | 2. 安全审计员(Agent A): 前台把第一份工单甩给了座位 A 的安全审计员。这个 Agent 的提示词极其纯粹:" | ||
| - | 3. 财务会计(Agent B): 前台把第二份工单甩给了座位 B 的财务会计。它的提示词是:" | ||
| - | 4. 合流与交付(State Machine Merge): 两个专家在各自的单向轨道(状态机)里干完活后,把各自标准的、类型安全的 Pydantic 报告扔回给前台。前台主管把" | ||
| - | |||
| - | 在这个应用层拆分的过程中,大模型不需要在同一个上下文里既要扮演判官又要扮演财神。每个子 Agent 的 Prompt 都极其干净,随身带的工具技能(Skills)也只有两三个,工具调用的准确率直接从单体的 40% 飙升到了 95% 以上。 | ||
| - | |||
| - | [ENGLISH VERSION](en: | ||