GEO

工具使用

工具使用是一种让 LLM 在响应过程中调用外部函数、API、数据库或服务的能力,可用于获取最新数据、执行计算或在现实世界中采取行动。借助工具使用,模型不再被锁定在训练数据中,而是能够在任务需要时触及自身之外的资源。

工具使用是一种让 LLM 在响应过程中调用外部函数、API、数据库或服务的能力,可用于获取最新数据、执行计算或在现实世界中采取行动。借助工具使用,模型不再被锁定在训练数据中,而是能够在任务需要时触及自身之外的资源。

为什么重要

裸 LLM 有三个硬性限制:固定的知识截止日期、无法访问私有数据,以及无法采取行动。工具使用消除了这三者。借助工具,同一个模型可以回答"当前的 MRR 是多少?",可以发送电子邮件、预订航班、查询数据库或执行代码。工具使用是每一个现代 AI 智能体、每一个"副驾驶(copilot)"以及几乎所有聊天机器人层级之上的生产级 LLM 应用的基础。

工作原理

1. 工具定义:调用方向模型提供一份可用工具列表,每个工具都带有名称、描述和参数模式(schema)。

2. 模型决定调用:当用户的请求需要某个工具时,模型会输出一个结构化的工具调用(符合该模式的 JSON),而不是普通文本。

3. 运行时执行工具:你的代码接收到工具调用,运行实际的函数,并返回结果。

4. 结果返回给模型:模型将结果作为上下文的一部分接收,并继续生成响应,要么回答用户,要么调用另一个工具。

5. 循环直至完成:多工具任务会不断串联工具调用,直到模型产生最终的文本响应。

工具使用与函数调用

这两个术语大体上可以互换,只有细微的差别:

  • 函数调用:最初的说法,模型为单个具名函数输出 JSON 参数。
  • 工具使用:更宽泛的说法,工具可以是函数、API、计算机操作或 MCP 服务器,模型会按顺序编排调用多个工具。

Anthropic 使用"工具使用"一词,OpenAI 过去使用"函数调用",现在则称为"工具(tools)"。两者描述的是同一种底层能力。

工具的种类

检索:获取文档、搜索网络、查询数据库、查找记录。

计算:运行 Python、做数学运算、转换单位、解析文件。

操作:发送电子邮件、创建日历事件、发布到 Slack、更新 CRM。

代码执行:模型可以在其中编写并运行代码的沙箱化解释器。

计算机使用:点击、输入和读取屏幕,这是最通用的工具。

模型间调用:委托给另一个专门的模型(例如图像生成)。

设计良好的工具模式

清晰、简短的描述:描述是模型决定何时调用的依据。务必让它含义明确。

收窄参数类型:相比自由文本,优先使用枚举和受约束的字符串,可减少虚构的参数。

尽可能保证幂等性:如果模型可能重试,第二次调用不应该把邮件重复发送一次。

返回结构化结果:给模型返回 JSON,而不是自由文本,它对结构的推理能力更强。

错误响应应告诉模型该怎么做:"错误:未找到城市,请尝试不同的拼写"比"500"更有用。

常见错误

工具太多:超过约 20 到 30 个工具后,模型会开始挑错工具。把相关工具分组,或通过更小的范围进行路由。

描述含糊:"实用工具"无法告诉模型何时调用它。要具体。

没有错误处理:工具失败会中断循环。始终返回模型可以据此反应的结构化错误。

忽视延迟:每次工具调用都会增加一次往返。并行处理相互独立的调用,能批处理的就批处理。

跳过护栏:执行操作的工具(发送邮件、转账)需要人工介入或严格的范围限制。

Sources: