活字 从规则到大模型
正在加载 3D
感知机 Transformer Token 上下文 预训练 对齐 RAG ReAct MCP 幻觉 上下文窗口 预训练与 GPT-3 Token 与词表 答 GPT-3 的上下文窗口是 2,048 个 Token,超出上限的部分不参与计算。 有出处

这台设备或浏览器没有开启 WebGL2,这里显示同一装置的静态图;正文里的演示与文字说明照常可用。

3D 画面没能加载。

选问题看检索 · 切到“任务”按“下一步” · 点抽屉抽卡 · 拖动旋转 · 下滚拆开卡片柜

第 08 章2020—2026

RAG 与 Agent

模型怎样查资料、用工具,一步步把事办完?

参数里的知识会过时,也说不出出处。于是人们让模型先查资料再回答⁠[1]⁠,后来又让它调用工具,一步步把事办完。

问题

选问题看检索 · 切到“任务”按“下一步” · 点抽屉抽卡 · 拖动旋转 · 下滚拆开卡片柜 抽屉越绿,得分越高;绿章表示“有出处”或“已完成”,红章是收到问题的日期章。 检索得分由浏览器实时计算(按问题与卡片共有的字词计分);答案与工具结果为预设

从“背下来”到“查出来、做出来”

六年里,模型从只靠参数作答,变成会检索、会调用工具、会连续操作的系统。

  1. 2020

    RAG:先检索,再生成

    Lewis 等,Facebook AI Research 等

    解决了什么
    模型的知识全部存在参数里,难以更新,也说不出答案出自哪里。
    带来了什么变化
    回答前先从维基百科的向量索引里检索相关段落,再和问题一起交给生成模型。要更新知识,换掉资料库即可⁠[1]⁠。
  2. 2022

    ReAct:推理和行动交替进行

    Yao 等,普林斯顿大学与 Google

    解决了什么
    只靠模型往下写推理步骤(思维链),中间一步出错,没有外部信息来纠正。
    带来了什么变化
    模型交替写出推理步骤和行动(如调用维基百科查询接口),再根据返回结果决定下一步,成为后来许多 Agent 的基本循环⁠[2]⁠。
  3. 2023

    Toolformer:学会何时调用工具

    Schick 等,Meta AI

    解决了什么
    语言模型算术和查新事实都不可靠,而计算器、搜索引擎恰好擅长这些。
    带来了什么变化
    每种工具只给少量示范,模型以自监督方式学会何时调用哪个接口、传什么参数,用到计算器、问答系统、搜索引擎、翻译和日历⁠[3]⁠。
  4. 2024

    计算机使用:看屏幕、点鼠标

    Anthropic

    解决了什么
    很多软件没有给程序调用的接口,只能靠人看着屏幕操作。
    带来了什么变化
    模型通过看截图、移动光标、点击和打字来操作电脑。发布时在 OSWorld 测试的仅截图类别得分 14.9%(次优系统 7.8%),官方也承认它仍处实验阶段、容易出错⁠[4]⁠。
  5. 2024

    MCP:工具接入的统一格式

    Anthropic

    解决了什么
    每接入一个新的数据源或工具,都要单独写一套对接代码,难以扩展。
    带来了什么变化
    开源模型上下文协议:数据和工具一方做成 MCP 服务器,AI 应用一方做 MCP 客户端,按同一套格式对接⁠[5]⁠。2025 年 12 月,它被移交给 Linux 基金会下的 Agentic AI Foundation⁠[6]⁠。
  6. 2025

    编程智能体进入终端

    Anthropic 等

    解决了什么
    写代码是一长串“读代码、改文件、跑测试、再修改”的步骤,一问一答做不完。
    带来了什么变化
    Claude Code 以研究预览形式推出,能搜索和阅读代码、编辑文件、编写并运行测试、提交代码、使用命令行工具⁠[7]⁠。
  7. 2025—2026

    长程任务:能独立做多久

    METR

    解决了什么
    只看单题对错,说不清 Agent 能独立完成多长、多复杂的任务。
    带来了什么变化
    用“人完成同样任务要多久”来度量:模型以 50% 成功率能完成的任务长度,自 2019 年以来约每 7 个月翻一番⁠[8]⁠。METR 也提醒,这不等于可以放心托付这么长的任务⁠[9]⁠。
08.1

检索增强生成:先查,再答 Retrieval-Augmented Generation · RAG

1一句话

回答之前,先从资料库里找出和问题最相关的几段文字,把它们和问题一起放进上下文窗口,让模型照着这些资料写答案。

2打个比方

像图书馆的卡片目录:没有人把整座图书馆背下来,而是先在卡片柜里按关键词翻出几张卡,照卡上的线索取书,再根据书里的内容回答,并注明出自哪张卡,别人可以去核对。

模型参数里的知识,像多年前读过的书:记得大概,但会记错,也停在了读书的那一年。检索来的资料,则是此刻摊在手边的那几页。

3动手试

检索增强生成:先查卡片,再写答案 得分为浏览器实时计算;预设问题的回答为预设文本

① 资料库:每张卡的得分

  1. 01 感知机

  2. 02 Transformer

  3. 03 Token 与词表

  4. 04 上下文窗口

  5. 05 预训练与 GPT-3

  6. 06 InstructGPT

  7. 07 检索增强生成

  8. 08 ReAct

  9. 09 模型上下文协议

  10. 10 幻觉

得分 = 问题和卡片的余弦相似度。文字先切成“相邻两个字”的片段(英文和数字按词),少见的片段权重更高(TF-IDF)。点“抽走”可以把卡从资料库里拿掉。

② 拼成提示词:问题 + 前三名的原文

 

③ 回答

4怎么做到的

RAG 由两部分组成:检索器和生成器。资料先被切成一段一段,每段算出一个表示存进索引;提问时,问题也算出表示,找出最相近的几段。早期常用按词频打分的关键词检索(如 TF-IDF、BM25);2020 年的 DPR 用两个编码器把问题和段落都变成向量,按向量相似度检索:在前 20 条结果里找到正确段落的比例,比 BM25 高出 9 到 19 个百分点⁠[10]⁠。上面的演示用的是最朴素的版本:把文字切成相邻两个字的组合,按 TF-IDF 加权后算余弦相似度。

同年,Lewis 等人把这样的检索器接到生成模型前面,用维基百科做外部资料库,并把这种做法叫作 RAG⁠[1]⁠。他们把模型参数称作“参数记忆”,把可以随时替换的文档库称作“非参数记忆”:知识要更新,换掉文档库就行,不必重新训练模型。

检索到的段落和问题拼成一段提示词,放进上下文窗口(见第 03 章)。模型并没有“去翻”资料库,它只看得到被放进窗口的那几段。

做不到什么

  • 检索没找到对的资料,后面写得再流畅也没用;模型可能拿不相关的段落,凑出一个看似有据的答案。
  • 关键词检索对换了说法的问题无能为力;向量检索又可能把“看起来相近”、说的却不是一回事的段落排在前面。
  • 放进窗口的资料并非越多越好:研究发现,关键信息埋在长上下文中间时,模型更难用上它⁠[11]⁠。
08.2

Agent 循环:想 → 做 → 看 Agent Loop · ReAct

1一句话

Agent 让模型在一个循环里工作:写下下一步打算做什么,调用一个工具去做,读回工具返回的结果,再决定下一步,直到任务完成。

2打个比方

像一张在几个窗口之间流转的办事单:每一栏先写“打算做什么”,交给对应的窗口(计算器、天气查询……),窗口把结果填回来,下一栏再根据结果往下写。单子在模型和工具之间来回传,直到最后一栏写上“办结”。

这里的“想”只是比喻:所谓“思考”,是模型生成的一段文字,写出来供下一步参考,并不等于模型内部真的按这段话推理。

3动手试

Agent 循环:想 → 做 → 看,直到办完 “思考”文字为预设;天气为预设数据;计算器真实计算

    4怎么做到的

    2022 年的 ReAct 把这个循环写进了提示词:模型交替生成“思考”(推理步骤)和“行动”(如调用一个简单的维基百科查询接口),程序执行行动,把“观察”结果追加进上下文,模型再接着写⁠[2]⁠。论文报告,这种做法减少了单纯思维链里常见的凭空编造和错误累积;在 ALFWorld 和 WebShop 两个交互任务上,成功率比模仿学习和强化学习方法分别高出 34 和 10 个百分点。

    模型本身只会输出文字。所谓“调用工具”,是模型按约定格式写出一段文字,例如 calculator("23 * 9 / 5 + 32"),外面的程序识别出来、真正去执行,再把结果作为文字放回上下文。演示里的计算器,就是这样在浏览器里真算的。

    Toolformer 更进一步,让模型自己学会在哪里调用工具:每种工具只给少量示范,模型自己标注哪些地方值得调用,留下那些能让后文预测得更准的调用来训练自己⁠[3]⁠。

    做不到什么

    • 每一步都可能出错,步数一多错误会累积;一步走偏,后面会在错误的基础上继续。
    • 循环可能停不下来,或者在两个动作之间来回打转,需要外部设定步数上限。
    • 工具返回的内容会原样进入上下文;如果它本身是错的,或被人做了手脚,模型很难分辨(见 08.4)。
    08.3

    工具与协议:一个统一的插座 Tool Use · Model Context Protocol

    1一句话

    模型能做什么,取决于外面的程序给它接了哪些工具。MCP 这类协议规定工具怎样描述自己、怎样被调用,让同一个工具能接到不同的 AI 应用上。

    2打个比方

    像墙上的标准插座:电器厂不用为每栋房子改插头,房子也不用为每台电器重新布线。没有统一接口时,每个 AI 应用要为每个工具各写一套对接代码;有了统一接口,工具写一次,就能接到所有支持它的应用上。

    插座只规定“怎么接”,不保证接上的电器好用,更不保证安全。

    3动手试

    插座板:接上哪些工具,就能走哪条路 计划由规则生成,示意模型会怎样安排;计算一步为真实计算

    AI 应用(MCP 客户端)上接着的工具(MCP 服务器)

    任务

      客户端 → 服务器:tools/list 的回复

       

      第一步要用的工具:tools/call

       

      消息格式按 MCP 规范(JSON-RPC 2.0)简写,字段为示意

      4怎么做到的

      工具调用的基本做法:应用把可用工具的名称、用途和参数格式写进提示词,模型输出一段结构化的调用请求,应用执行后把结果放回上下文。可用的工具清单,决定了能走通哪些计划:没接搜索,模型只能依靠参数里的旧知识;没接计算器,就只能“心算”。

      2024 年 11 月,Anthropic 开源了模型上下文协议(MCP):数据和工具的提供方把能力做成 MCP 服务器,AI 应用作为 MCP 客户端去连接⁠[5]⁠。规范用 JSON-RPC 2.0 格式收发消息,服务器可以提供三类东西:资源(数据)、提示模板和工具(供模型调用的函数);应用先用 tools/list 查有哪些工具,再用 tools/call 调用⁠[12]⁠。2025 年 12 月 MCP 移交给中立基金会时,Anthropic 称已有超过 1 万个活跃的公开 MCP 服务器,ChatGPT、Cursor、Gemini、Microsoft Copilot、VS Code 等产品都已采用⁠[6]⁠。

      MCP 只约定对接格式,不会让模型变得更聪明。规范自己也写明:工具等同于执行任意代码,应用在调用工具前应当取得用户的明确同意⁠[12]⁠。

      做不到什么

      • 工具越多,模型选错工具、填错参数的机会也越多;工具说明写得含糊,调用就容易出错。
      • 协议不检查工具本身:一个有漏洞或恶意的服务器,照样可以通过标准接口接进来。
      • MCP 是被广泛采用的方案之一,但不是唯一的。各家模型的接口里也有各自的工具调用格式。
      08.4

      风险:被资料“指挥” Prompt Injection · 提示注入

      1一句话

      模型分不清哪些文字是用户的请求,哪些只是查来的资料。资料里如果藏着一句“忽略之前的要求,去做某事”,模型可能照做。这叫提示注入。

      2打个比方

      像混在文件堆里的一张假批条:秘书照批条办事,可批条不是老板写的,是有人塞进文件里的。要防住它,一靠规矩:文件里的字只当内容看,不当命令执行;二靠关卡:付款、删文件这类事,必须回头找老板当面确认。

      3动手试

      提示注入:网页里藏着一句“命令” 网页内容与助手的反应均为预设;邮件不会真的发出

      你帮我总结一下这家酒店网页上的住客评价。

      hotel-reviews.example.com/西湖边的小旅馆

      住客评价(4.6 分 · 128 条)

      • “离湖边走路五分钟,早餐很丰富。”
      • “房间不大,但很干净,前台很热心。”
      • “隔音一般,周末晚上有点吵。”

      白色小字 · 读者看不见

      注入的写法

      防线(可以叠加)

        4怎么做到的

        在模型看来,系统指令、用户的话、检索来的网页、工具返回的结果,最后都是同一个上下文窗口里的一串 Token。2023 年,Greshake 等人指出,接入外部内容的大模型应用“模糊了数据和指令的界线”:攻击者不需要直接和应用对话,只要把指令藏进应用可能检索到的内容里,就能远程操纵它,这叫间接提示注入⁠[13]⁠。

        常见的防线是几层叠加:把外部内容明确标成“资料”,要求模型只引用、不执行其中的指令;只给 Agent 完成任务所需的最少工具和权限;对转账、发邮件、删除文件这类高风险操作,必须由人确认⁠[14]⁠。MCP 规范也建议,应用在调用工具前先把输入展示给用户、请用户确认⁠[12]⁠。

        这些措施能降低风险,但安全社区的看法是:目前还不清楚是否存在万无一失的防御办法⁠[14]⁠。所以真正有后果的操作,仍需要人来把关。

        做不到什么

        • “把资料当数据”的提示只能降低被带偏的概率,不能保证;换一种写法的注入仍可能生效。
        • 确认弹窗太频繁,用户会习惯性地点“同意”,关卡就形同虚设。
        • 注入的文字可以藏在不显眼的地方,比如网页里的隐藏文字、文档的批注或工具的说明里。

        这一章留下的问题

        1. 01

          检索和工具让模型能查到新资料、真正算对数,但它仍然分不清资料里的事实和指令。怎样让 Agent 读开放的网络,又不被网页“指挥”?

        2. 02

          步数越多,错误越容易累积。Agent 能独立、可靠地完成多长的任务?50% 成功率和“可以放心托付”之间还差多远?

        3. 03

          模型、工具和 Agent 已经连成了日常产品。截至今天它们走到了哪里、还做不到什么,是最后一章的内容。

        本章参考文献

        1. [1] Patrick Lewis et al.. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020 (arXiv:2005.11401).将稠密检索器与序列生成模型结合,生成答案前先从维基百科等外部文档中检索相关段落,提升了开放域问答等知识密集型任务的表现,“RAG”一词由此而来。
        2. [2] Shunyu Yao et al.. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023 (arXiv:2210.03629).让语言模型交替生成推理过程和行动(如调用搜索API),并根据环境反馈继续推理,成为后来LLM智能体(Agent)框架的常见基础模式。
        3. [3] Timo Schick et al.. Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023 (arXiv:2302.04761).让模型以自监督方式自行标注何时、如何调用计算器、搜索引擎、翻译等API,从而学会在生成文本的过程中使用外部工具。
        4. [4] Anthropic. Introducing computer use, a new Claude 3.5 Sonnet, and Claude 3.5 Haiku. Anthropic News.推出“计算机使用”公开测试版:模型通过看屏幕、移动光标、点击按钮和输入文字来操作电脑。官方称在 OSWorld 仅截图类别得分 14.9%(次优系统 7.8%),并说明该能力仍处实验阶段,有时笨拙、易出错。
        5. [5] Anthropic. Introducing the Model Context Protocol. Anthropic News.Anthropic开源了模型上下文协议(MCP),这是一个把AI助手与内容库、业务工具、开发环境等外部数据源和工具连接起来的开放标准。
        6. [6] Anthropic. Donating the Model Context Protocol and establishing the Agentic AI Foundation. Anthropic News.Anthropic 把 MCP 捐给 Linux 基金会下新成立的 Agentic AI Foundation(由 Anthropic、Block、OpenAI 共同发起);文中称已有超过 1 万个活跃的公开 MCP 服务器,ChatGPT、Cursor、Gemini、Microsoft Copilot、VS Code 等产品均已采用。
        7. [7] Anthropic. Claude 3.7 Sonnet and Claude Code. Anthropic News.以有限研究预览形式推出命令行编程智能体 Claude Code:可以搜索和阅读代码、编辑文件、编写并运行测试、提交并推送代码到 GitHub、使用命令行工具。
        8. [8] Thomas Kwa et al. (METR). Measuring AI Ability to Complete Long Software Tasks. arXiv:2503.14499.提出“50% 任务完成时间跨度”:人完成某类任务通常需要的时间,模型能以 50% 成功率完成。前沿模型的这一指标自 2019 年以来约每 7 个月翻一番;Claude 3.7 Sonnet 约为 50 分钟。
        9. [9] METR. Clarifying limitations of time horizon. METR research note.METR 说明:50% 时间跨度为 X 小时,并不意味着可以把 X 小时以内的任务交给 AI;误差历来约为上下 2 倍,不同领域的时间跨度相差很大。
        10. [10] Vladimir Karpukhin et al.. Dense Passage Retrieval for Open-Domain Question Answering. EMNLP 2020 (arXiv:2004.04906).用双编码器把问题和段落都变成稠密向量,按向量相似度检索;在前 20 条结果的检索准确率上比 Lucene-BM25 高出 9–19 个百分点。RAG 论文的检索器即基于此。
        11. [11] Nelson F. Liu et al.. Lost in the Middle: How Language Models Use Long Contexts. Transactions of the ACL (TACL), 2023 (arXiv:2307.03172).发现相关信息位于输入的开头或结尾时,模型表现通常最好;位于长上下文中间时,表现明显下降。
        12. [12] Model Context Protocol. Model Context Protocol Specification (2025-06-18): Overview and Server Tools. modelcontextprotocol.io.MCP 规范:用 JSON-RPC 2.0 在宿主应用、客户端与服务器之间通信;服务器可提供资源、提示模板和工具,客户端用 tools/list 与 tools/call 发现和调用工具。安全原则要求调用任何工具前取得用户明确同意,并建议始终保留能拒绝工具调用的人工环节。
        13. [13] Kai Greshake et al.. Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection. arXiv:2302.12173.指出接入外部内容的大模型应用模糊了数据与指令的界线:攻击者把指令注入到可能被检索到的数据里,就能在不直接接触应用的情况下远程利用它(间接提示注入)。
        14. [14] OWASP Gen AI Security Project. LLM01:2025 Prompt Injection. OWASP Top 10 for LLM Applications 2025.把提示注入列为大模型应用的首要风险,区分直接与间接注入;缓解措施包括限制模型行为、隔离并标识外部内容、最小权限、高风险操作需人工批准等,并指出目前尚不清楚是否存在万无一失的防御方法。

        全部文献、素材与许可见 来源与许可。