工具使用与环境Tool Use & Environment
代理如何超越自身。
本书中有 51 种模式。 · 已更新
何时使用每种模式
01. Tool Use 让LLM对外部工具包进行类型化调用,而不是生成周围系统需要解析的自由文本。 最佳适用: 模型必须影响外部状态或查询权威系统。 权衡: 工具调色板设计成为瓶颈;不良工具会传播到每个调用点。 注意事项: 交付物是自由文本;将其结构化为工具调用会增加开销。
02. Model Context Protocol 标准化代理如何发现和调用工具,以便一次编写的工具可以被任何符合标准的代理使用。 最佳适用: 工具调色板需要在多个主机应用程序之间可移植。 权衡: 增加了一个过程边界;延迟和操作面增加。 注意事项: 单一主机,单一语言,没有可移植性要求;本地函数调用更简单。
03. Code Execution 让模型生成代码,在沙箱中运行,并将运行结果视为答案,而不是信任模型在其头脑中计算。 最佳适用: 任务涉及计算、解析或转换,而 LLM 可能会产生幻觉。 权衡: 沙盒安全性是一个独立的工程问题。 注意事项: 任务是纯语言,没有计算,无法从运行代码中受益。
04. Code-as-Action Agent 让代理在每一步中发出代码片段作为其动作,在受限的解释器中执行,而不是发出 JSON 工具调用;工具组合变成函数嵌套和代码片段内部的控制流。 最佳适用: 在代码中工具组合是自然的(过滤、映射、条件链),而作为JSON工具调用则显得笨拙。 权衡: 沙箱的正确性是负载支撑;弱沙箱意味着任意代码执行。 注意事项: 部署无法托管或信任沙箱解释器。
05. Computer Use 让模型通过屏幕截图和虚拟鼠标/键盘工具调用驱动桌面端到端,而不是为每个应用程序定制API。 最佳适用: 目标软件没有干净的API,代理必须以视觉方式驱动真实桌面。 权衡: 在动态用户界面上缓慢且脆弱。 注意事项: 存在干净的API,并且比视觉控制更快、更便宜和更可靠。
本书中的所有模式
Tool Use
×136让LLM对外部工具包进行类型化调用,而不是生成周围系统需要解析的自由文本。
Model Context Protocol
×66标准化代理如何发现和调用工具,以便一次编写的工具可以被任何符合标准的代理使用。
Code Execution
×34让模型生成代码,在沙箱中运行,并将运行结果视为答案,而不是信任模型在其头脑中计算。
Code-as-Action Agent
×32让代理在每一步中发出代码片段作为其动作,在受限的解释器中执行,而不是发出 JSON 工具调用;工具组合变成函数嵌套和代码片段内部的控制流。
Computer Use
×24让模型通过屏幕截图和虚拟鼠标/键盘工具调用驱动桌面端到端,而不是为每个应用程序定制API。
Browser Agent
×21通过结构化的DOM/可访问性树和一个小的动作词汇表,将网站暴露给代理,位于原始HTML和像素级计算机使用之间。
Sandbox Isolation
×20在一个受限的环境中运行代理生成的代码或操作,限制文件系统、网络和进程权限。
Agent-Computer Interface
×20专门为LLM代理设计工具界面,其功能与面向人类的CLI不同。
Multilingual Voice Agent Stack
×17构建一个语音代理,作为一个紧密协作的管道,包括语音转文本、语言感知的LLM推理和文本转语音,其中一个供应商拥有所有三个组件,以便语言和方言在各个阶段之间干净地传播。
Agent Skills
×12打包代理按需加载的特定任务类型的作者时间程序(markdown + 可选资源)。
Skill Library
×8让代理通过编写可重用的技能来扩展自己的工具包,以便后续运行可以调用。
Prompt Caching
×5对提示进行排序,以便提供者可以缓存不变的前缀,从而降低每次调用的成本和延迟。
Async Tool Handle
×5让一个慢速工具立即返回一个作业句柄,并暴露一个单独的轮询工具以获取结果,从而使代理循环在工具调用超时后不会阻塞。
MCP Bidirectional Bridge
×5作为MCP客户端(将外部MCP服务器作为工具使用)和MCP服务器(将自己的代理、工具和工作流发布回MCP)同时运行一个框架,以便能力在协议边界两方向流动。
Tool Loadout
×4根据请求选择一小部分与任务相关的可用工具,而不是将完整的注册表暴露给模型。
Agent-Initiated Payment
×4给代理一个有限的钱包,以便它可以在请求中途结算支付以解锁资源——用可验证的证明来回答支付要求的挑战——而不是将每笔购买都通过人工进行路由。
Shadow Workspace
×4将工作区镜像到一个隔离的、版本控制的影子中,代理在其中进行编辑和撤销,展示差异以供审查,并仅将接受的更改提升到真实树中。
Tool Result Caching
×3缓存由其参数键控的昂贵确定性工具调用的结果,以便在会话内的重复调用立即返回。
Canonical-Entity Grounding
×3要求代理通过对记录系统的权威查找来解析其使用的每个业务标识符 — SKU、账户、供应商、客户 — 而不是从模型的参数记忆中发出标识符。
Dual-System GUI Agent
×3将 GUI 代理分为一个决策模型,用于规划和从错误中恢复,以及一个基础模型,用于观察像素并发出精确的动作;将每个子问题路由到更适合的模型。
Tool Discovery
×3让代理在运行时发现可用工具,而不是在代理构建时硬编码工具列表。
Tool/Agent Registry
×3维护一个可查询的单一目录,包含可用工具和可用代理的元数据(能力、成本、延迟、质量),以便代理可以为任务选择合适的工具。
Agent-Readable Commerce Surface
×2通过机器可读的产品信息流和代理发起的结账API向代理买家提供服务,而不是通过人工点击漏斗,以便代理可以根据目标发现、比较和购买。
Direct API Wrapper
×2通过将每个操作一对一映射到工具,将现有 API 作为 MCP 工具公开,从而使稳定的 API 以最小的包装逻辑变得可被代理调用。
MCP-as-Code-API
×2将MCP服务器具体化为一个类型化代码包装器的目录,以便代理编写代码导入它们,并且大型工具输出在沙箱内的调用之间流动,而不进入模型的上下文窗口。
Mobile UI Agent
×2通过一个小的、触摸原生的动作词汇(点击、长按、滑动、输入、返回、主页)在截图上端到端地驱动智能手机,作为与桌面计算机使用和网页浏览器代理不同的交互界面。
Semantic-Layer Query Guardrail
×2通过一个经过策划的语义层路由自然语言数据问题,以便模型选择和参数化经过审查的指标和维度,而不是对生产数据自由编写原始SQL。
MCP Server-Side Sampling
×2让 MCP 服务器在工具调用中间,通过 createMessage 将提示发送回主机,并使用主机的模型,以便服务器在不持有自己的模型或密钥的情况下进行语言工作。
Agent Adapter
×1一个接口层,将代理的工具调用协议连接到异构外部工具,将它们的模式标准化为代理所期望的模式。
Augmented LLM
×1构建一个基础代理模块,作为一个增强了检索、工具和记忆的 LLM,模型主动选择使用这些功能,而不是简单的模型调用。
Crawler Dispatcher
×1通过中央调度器将每个传入的URL路由到特定域的爬虫,映射URL模式到注册的爬虫类。
Translation Layer
×1在代理的干净领域模型和混乱或遗留的外部 API 之间插入一个类型边界。
Composite Service
×1暴露一个 MCP 工具,将多个底层 API 调用编排成一个单一的高级操作,以便代理调用任务级能力,而不是链接多个低级端点。
Forkable Agent Sandbox
×1将代理的整个执行环境,包括文件系统、内存和正在运行的进程,转变为一个可以快照、分叉到隔离分支、回滚和选择性提交的版本化对象。
Foveated Perception Escalation
×1将观察的清晰度视为代理分配的预算:粗略感知整个表面,让推理命名决定答案的区域,然后仅以全分辨率重新观察该区域。
Full-Desktop Computer Use
×1给代理提供一个完整的容器化操作系统桌面,带有本地应用程序、持久文件系统和桌面凭证存储,以便它可以完成浏览器仅表面无法完成的多应用程序工作流程。
Tool Search Lazy Loading
×1在搜索步骤显示需要工具时,推迟将工具模式加载到上下文窗口中。
Tool-Result Eviction
×1一旦工具的原始输出被消耗,在实时上下文窗口中用一个简短的标记替换它,回收令牌而不失去调用发生的记录。
Affordance Grounding Before Action
×1让视觉-语言模型根据当前场景为每个候选动作提供基础,并预测其可供性,以便在任何动作到达控制器之前,丢弃环境无法物理支持的动作。
App Exploration Phase
×1在对一个不透明的应用程序部署代理之前,让它探索(或观察人类演示)该应用程序,生成每个元素的文档知识库;在部署时,检索元素文档以支持行动。
Large Action Models (LAMs)
×1在工作负载主要由在真实系统中可靠地完成行动(工具调用、用户界面导航、工作流程步骤)时,使用专门为行动执行训练的模型类,而不是文本生成。
Tool Transition Fusion
×1挖掘工具调用遥测以获取高概率的X-然后-Y过渡,并将这些对融合为一个复合工具,从而减少规划者的步骤计数。
Hierarchical Tool Selection
将工具组织成一个类别树,以便代理首先选择一个分支,然后在其中选择一个特定工具。
Machine-Checkable Tool Contract
以机器可读的模式表达工具对其调用者施加的每个约束,而不是用散文描述,并将失败作为调用者可以分支的类型字段返回。
Mirrored Tool Environment
在代理训练和基准测试期间,用一个经过微调的模型替换实时外部工具,该模型以该工具的形状发出响应,从而使运行保持低成本、可重复和可控的难度。
Policy-Localizer-Validator
将一个GUI代理分成三个专业模型——一个规划的Policy,一个将元素定位到像素的Localizer,以及一个判断完成的Validator——以便每个角色使用最小的足够模型。
Solver-Ready Formulation Handoff
让代理发出一个声明性的优化模型——决策变量、目标、硬约束——以与求解器无关的表示形式,并让一个精确的求解器生成带有可行性或最优性证书的决策。
On-Demand Tool Synthesis
当没有可用工具适合子任务时,让代理即时编写、验证并注册一个新工具,将工具创建角色与工具使用角色分开。
Synthetic Filesystem Overlay
将异构企业数据源投影到通过文件系统原语暴露的单一类Unix树中,以便代理重用它已经知道的路径语义,而不是为每个源学习一个定制的API。
WebAssembly Skill Runtime
将每个代理技能打包为一个具有能力清单的WebAssembly模块,并在一个强制执行这些能力的Wasm运行时中运行,以便不受信任的技能无法削弱主机的沙箱。
Toolformer
训练模型学习何时以及如何通过自我监督数据调用工具,而无需人工标注。