前言

本书的读者对象

本书面向正在修读智能体机器学习系统课程的计算机科学与计算机工程专业本科高年级学生和研究生新生,也面向构建、运行或评估智能体的工程从业者。本书所服务的工程师,曾见证智能体演示取得成功,如今却必须交付一个系统,使其日复一日地将受委派的工作推进至通过验收的结果,同时避免误删目录、循环执行直至预算耗尽,或对从未完成的任务宣称成功。

读者应了解神经网络的训练与服务方式,并熟悉计算机系统的核心概念。本书不要求读者事先阅读本系列的其他卷册。每一个智能体概念,以及智能体工程师所需的每一个服务或系统概念,都会在首次使用时从基本原理出发加以阐述。

为什么需要一本智能体系统教材

面对当前这一波智能体演示,理性的工程师可能会提出一个质疑:智能体机器学习究竟是一门具有持久原则的系统学科,还是一堆明年就会被重写的框架封装、提示词模板和 API 胶水代码?

这种质疑合情合理。许多关于智能体的论述关注的是表层选择,例如框架的抽象、系统提示词中的角色设定,或一个在演示中令人印象深刻、却在真实工作负载下失效的十行循环。这些选择每隔几个月就会变化。其背后的工程问题却始终不变。

单次模型调用读取上下文并返回一项提议。它不会在调用之间保留任何信息,不会采取任何行动,其表现由阅读答案的人来评判。智能体则将这次调用置于循环之中。这个循环持续运行多个轮次,将状态从一轮传递到下一轮,并将模型的提议转化为会改变外部世界的编辑、命令、查询和消息。这些偏离单次调用的特征,每一项都会引入单次调用所没有的风险敞口,也各有其失效方式。长循环会累积小错误,也可能持续运行却毫无进展。跨轮次保留的状态可能超出上下文容量、变得陈旧,或自相矛盾。行动可能泄露数据,可能在超时导致无法确认是否已执行时被重复执行,也可能无法撤销。模型自身无法消除这些风险敞口,因为它不掌握任何权限,也不能被信任来评判自身的结果。必须由围绕模型构建的机器来闭合这些风险敞口。

本书讲解如何设计、度量和改进这台机器。其核心问题是:对于一项受委派的任务,需要在基础模型周围构建多大规模的机器,才能使结果值得信任,以及如何构建、度量、改进和扩展这台机器。读者读完本书后,应能够判断何时固定工作流已足够,何时由模型主导的循环值得付出额外成本;这个循环需要什么样的记忆、工具和运行时;如何证明它有效;以及何时更换模型或增加智能体值得付出相应代价。

轨迹及其风险敞口

本书的工程单元是轨迹,即一项受委派任务执行过程的有序记录。它记录模型在每一轮看到了什么、提出了什么提议、运行时如何处理该提议,以及返回了什么。单次调用的准确率并不是衡量智能体系统的标准。衡量标准是轨迹是否达成了能够通过独立检查的结果,以及为此付出了多少轮次、词元、秒数和美元。

三类风险敞口描述了一项任务偏离单次模型调用的程度,本书将其称为 H·S·A。

  • 时域指轨迹运行的轮次数,因此也决定了错误有多长时间持续累积,以及从开始到得出结果之间可能出现多少问题。
  • 状态指任务从一轮带入下一轮的内容,其范围从不携带任何内容,到上下文窗口和沙箱工作区,再到会话结束后仍然存在或在会话之外共享的持久状态。
  • 权限指任务通过工具可以对外部世界执行哪些操作,其范围从仍可能造成信息泄露的读取权限,到付款或生产环境迁移等不可逆的外部操作。

闭合不是第四种风险暴露,而是运行时对这三种风险暴露的回应。不变量闭合原则指出,智能体系统所提供的保证来自模型之下的机械性检查,例如模式、预算、沙箱、日志和审批关卡,以及模型无法修改的完成证据。针对模型本身采取的措施,例如指令、微调或评判模型,可以降低不良结果发生的概率,却不能为其划定界限。风险暴露越高,就越需要充分的闭合。引言将阐述这些风险暴露、这一原则,以及能够支撑任务已完成这一主张的各级证据。

本书涵盖的内容

本书按照依赖关系所要求的顺序构建智能体系统,即模型、记忆、工具、运行时、度量、学习、扩展。每一部分都回应前一部分揭示的一种失效,并且各自闭合一种风险暴露,或登上干预阶梯的一级。干预阶梯所要求的纪律是:对于已测得的失效,先用能够解决它的、成本最低的改动加以修复,再考虑成本更高的改动。

《智能体系统基础》是本书的开篇。它定义智能体系统和轨迹,指出那些发生故障后仍会给出貌似合理结果、因而使智能体难以获得信任的故障类型,阐明不变量闭合原则,将任务转化为一份契约,由其时域、状态和权限确定所需运行时机制的程度,并决定采用固定工作流还是由模型主导的循环。它用一张完整的系统图呈现整个系统,随后便不再依赖这一类比。

  • 第一部分:模型通过一次调用,研究每个智能体赖以构建的核心组件。基座模型明确一次调用读取什么、返回什么、成本是多少,以及为什么其输出是一项必须由运行时检查的提议,而不是结果。测试时计算探讨何时通过更长的推理、更多候选方案或多轮检查与修订,在一次决策上投入更多推理计算,能够增强支撑该决策的证据。
  • 第二部分:智能体记忆闭合状态风险暴露。上下文工程决定在固定预算下每次调用可以看到什么,KV 缓存管理核算在模型服务系统中保留这些上下文的成本,长期记忆则管理哪些内容会跨会话持久保存,并且只能通过检索重新引入。
  • 第三部分:工具使用闭合权限风险暴露。工具调用将模型的工具调用转化为经过验证和授权、且恰好发生一次的实际效果,智能体沙箱则将该调用背后的代码限制在由模型之下的机制强制执行的边界内。
  • 第四部分:智能体运行时闭合时域风险暴露。智能体运行框架在预算和审批约束下运行循环,持久执行使轨迹能够在崩溃后继续执行,故障恢复则修复或撤销不良操作。本部分以@sec-vol3-evaluation结束,它对整个单智能体系统进行度量,因为任何系统都应在证明能够正常工作之后,才进行训练或扩展。
  • 第五部分:从轨迹中学习改变模型本身,这是单智能体干预阶梯的最后一级,也是成本最高的一级。它不改变任何一种风险暴露。轨迹整理选择经过评估验证的轨迹,轨迹微调训练模型模仿这些轨迹,可验证奖励强化学习则依据模型无法篡改的验证器来优化模型。
  • 第六部分:大规模智能体系统成倍增加全部三种风险暴露。多智能体协同仅在协同带来的收益足以抵偿其成本时,才将任务分配给多个智能体,智能体经济学则按每个验收通过的任务核算智能体成本并配置智能体资源。
  • 第七部分:综合在@sec-vol3-conclusion中让一条轨迹贯穿各个部分,并最终抵达规格边界:编写定义成功的检查,以及为结果负责,仍由工程师承担。

参考附录汇集了为各章提供支持而不打断正文的材料:参考架构、工具设计模式、故障分类体系、本书模型服务成本估算所依据的推理成本推导、数学背景和术语表。

如何阅读本书

本书按顺序阅读的方式编写。每章仅使用此前章节已介绍或在出现时加以定义的概念,并明确负责讲解各自的概念,因此每种机制只讲解一次,之后通过引用加以援引。每章开篇提出其要解决的智能体问题,随后引入相应机制作为解决方案,最后以总结和对下一章的引导收尾。预写日志、补偿事务、幂等性键和权能等经典系统概念,会在实际工程需要它们的地方出现,作为修复智能体故障的方法引入,而非作为独立的知识专题讲授。

承担特定角色的读者可以在读完引言后调整阅读侧重点。构建服务与执行基础设施的工程师可重点阅读有关模型、KV 缓存、沙箱、持久执行和经济性的章节。构建智能体平台的工程师可重点阅读有关上下文工程、工具调用、智能体运行框架、故障恢复、评估和多智能体协同的章节。研究人员和后训练团队可重点阅读有关模型、测试时计算、评估的章节,以及第五部分的全部内容。引言会更详细地介绍这些阅读路径。每条路径都从 《智能体系统基础》 开始,以 结语 结束。

本书不涵盖的内容

本书不是提示工程指南。提示很重要,但本书将其视为运行时组装的输入之一;凡是能够通过机械化检查验证的地方,都不会依赖给模型的一条指令。本书不是任何智能体框架、协议实现或模型提供商的使用教程,也不会对当年的模型或基准测试进行排名。产品和基准测试仅作为某种技术或某类评估的示例出现,并附有引用。本书也不讨论加速器的内部机制。对于智能体工程师需要了解的少量模型服务事实,例如为什么输出词元的成本远高于输入词元,以及为什么跨轮次复用共享前缀能带来最大的成本节省,本书只讲解一次,并将相关推导集中收录于附录。最后,本书讨论的是通过工具在数字系统上执行操作的软件智能体。在物理世界中执行操作的智能体会面临其特有的问题,不在本书的范围之内。

关于内容持久价值的说明

框架、协议和模型权重都会变化,其中一些甚至会在本书付印之前发生变化。因此,本书着重阐述能够经受这些变化的思想,例如将轨迹作为工作单元、三类暴露及针对它们的闭合机制、提出方案的模型与作出决策的运行时之间的分离,以及在作出任何改动之前先进行测量的原则。书中会不断借助当前的协议和系统使这些思想具体化,但这些原则并不依赖任何供应商或工具。对于仍未解决的问题,例如如何最好地评估执行操作的系统,或如何组织智能体的长期记忆,本书会明确指出,并将其作为开放问题呈现,而非视为已有定论的方法。

预备知识

读者应熟悉以下内容:

  • 机器学习基础,包括 Transformer 模型如何训练以及如何生成文本;
  • 计算机系统基础,包括进程、内存、文件系统和网络;
  • 分布式系统基本概念,包括远程调用、故障和一致性;
  • 本科水平的概率论;以及
  • 使用 Python 或其他现代编程语言编程。

熟悉操作系统、数据库或计算机安全会有所帮助,但本书会逐一阐述所需的概念。希望进一步了解机器学习系统如何构建和提供服务的读者,可以参阅《机器学习系统导论》;本书不要求读者预先阅读该书。

回到顶部
← 三卷书架