为了真正提升 LLM 代理的能力,使其超越其固有的语言处理技能,为其配备工具是必不可少的。您可以将工具看作是专门的扩展,让代理能够与外部环境互动、执行精确计算或获取特定、最新的信息。就像木匠有一个装有不同工具的工具箱以应对各种任务一样,LLM 代理也能够使用一系列数字工具。了解这些工具的常见类别将帮助您确定您的代理可能需要哪些工具来达成其目标。我们可以根据主要功能将这些工具分为几大类别。尽管界限有时会模糊,并且某些工具可能属于多个类别,但这种分类提供了一种有益的方式来思考如何扩展您的代理的能力。digraph G { rankdir=TB; graph [fontname="Arial", fontsize=12, bgcolor="transparent"]; node [shape=box, style="rounded,filled", fontname="Arial", fontsize=10, width=2.2, height=0.9]; edge [fontname="Arial", fontsize=9]; Agent [label="LLM 代理\n(推理核心)", fillcolor="#74c0fc", shape=ellipse, style="filled,bold", width=2.5, height=1]; Info [label="信息获取\n工具", fillcolor="#99e9f2"]; Compute [label="数据与计算\n工具", fillcolor="#96f2d7"]; Action [label="动作执行\n工具", fillcolor="#ffc9c9"]; Communicate [label="人机交互\n工具", fillcolor="#eebefa"]; Agent -> Info [label=" 获取数据 (例如,网络搜索)"]; Agent -> Compute [label=" 处理/计算 (例如,计算器)"]; Agent -> Action [label=" 与系统互动 (例如,邮件 API)"]; Agent -> Communicate [label=" 与用户澄清 (例如,请求输入)"]; }LLM 代理会使用不同类别的工具来执行各种任务。让我们更详细地了解这些类别。信息获取工具LLM 在数据集上训练,但这些知识有其局限性。它通常不是实时更新的,并且可能不包含非常具体、专有或小众的信息。信息获取工具通过让代理能够获取外部数据来弥补这一不足。目的: 访问并获取 LLM 内部知识以外的信息来源。需要它们的原因:获取当前信息(例如,今日新闻、股票价格、天气预报)。访问专业知识库(例如,科学论文、公司内部维基)。查找可能不在 LLM 训练数据中的特定事实。常见例子:网络搜索工具: 这些工具让代理能够通过其 API 在搜索引擎(如 Google、Bing 或 DuckDuckGo)上执行查询。这对于需要最新信息或广泛知识收集的任务非常必要。例如,一个负责总结某个方面最新进展的代理会大量依赖网络搜索工具。数据库查询工具: 如果代理需要与存储在数据库中的结构化数据(例如,客户记录、产品库存)交互,那么能够执行 SQL 查询或与数据库 API 交互的工具是必需的。这让代理能够获取,有时还能更新特定记录。文档阅读器/解析器: 代理可能需要从特定文件(如 PDF、Word 文档或文本文件)中提取信息。能够解析这些格式的工具使代理可以访问其内容。例如,代理可以使用 PDF 阅读器工具在用户手册中查找信息。知识库连接器: 这些工具与专业知识库或图数据库连接,使代理能够查询高度结构化和特定于某个方面的信息。数据处理与计算工具虽然 LLM 擅长处理语言,但它们主要不是设计用来作为计算器或数据处理器。对于需要精确数学计算、逻辑操作或复杂数据转换的任务,专用工具更可靠、效率更高。目的: 执行计算、运行代码或精确地操作数据。需要它们的原因:LLM 有时会在算术或复杂逻辑推理中出错。专用工具在这些任务中提供更高的准确性和效率。执行更自然地通过代码表达的算法或数据转换。常见例子:计算器: 正如您将在本章后面的例子中看到的那样,一个简单的计算器工具就是一个典型例子。它确保基本算术(加、减、乘、除)的准确性,并且可以扩展以执行更复杂的数学函数(例如,平方根、三角函数)。代码解释器: 代码解释器是一种功能强大的工具,通常用于像 Python 这样的语言。这让代理能够编写和执行小脚本,以执行复杂计算、分析数据(例如,使用 Pandas 或 NumPy 等库)、生成可视化,甚至通过编程方式与其它系统互动。例如,代理可以编写 Python 代码从数据集中计算统计量。数据格式转换器: 能够将数据在不同格式之间转换(例如,JSON 到 CSV,XML 到 JSON)的工具在代理处理来自多个来源的信息或需要以特定结构输出数据时非常有用。电子表格工具: 对于涉及表格数据的任务,能够读取和写入电子表格文件(如 Excel 或 Google Sheets)的工具让代理能够以熟悉的方式管理和分析数据。动作执行工具要使代理不仅仅是信息提供者,它还需要能够在数字甚至物理(通过连接系统)环境中“做”事情。动作执行工具使代理能够与外部系统互动并进行修改。目的: 执行改变外部系统或服务状态的动作。需要它们的原因:自动化任务,如发送电子邮件、安排会议或管理文件。通过其 API 控制其他软件应用或服务。让代理完成涉及外部交互的多步骤流程。常见例子:邮件和消息工具: 与邮件服务(例如,Gmail API、Outlook API)或消息平台(例如,Slack API)集成的工具,让代理能够发送消息、读取收到的通信或管理通知。日历管理工具: 通过连接到日历 API(如 Google Calendar 或 Outlook Calendar),代理可以创建、更新或删除日历事件,帮助安排日程和提醒。文件系统工具: 这些工具为代理提供了在本地或远程文件系统上读取、写入、创建或删除文件和目录的能力。这对于保存生成的报告、读取配置文件或管理用户数据等任务是基础的。通用 API 调用器: 许多软件服务提供 API(应用程序编程接口)用于编程交互。通用 API 调用工具让代理能够向这些 API 发出请求(例如,GET、POST、PUT、DELETE),有效地使其能够控制或使用各种第三方服务。例如,代理可以使用此类工具更新 CRM 系统中的客户记录。智能家居设备控制器: 对于与物联网环境交互的代理,可以构建工具来控制智能灯、恒温器或其他连接设备。人机交互工具有时,代理需要更直接地与人类用户接触,以澄清指令、询问缺失的信息,或在采取重大动作前请求批准。目的: 促进代理与人类用户之间的直接沟通,以进行澄清、输入或确认。需要它们的原因:处理用户请求中的歧义。获取代理无法自行找到的必要信息。在执行不可逆动作前确保用户同意。常见例子:用户输入提示器: 一种工具,让代理能够暂停其操作并向用户提出特定问题,然后等待响应再继续。例如,如果用户请求预订航班但未指定日期,代理可以使用此工具询问日期。确认请求工具: 在执行重大动作(例如,删除文件、发送重要电子邮件)之前,代理可以使用工具向用户请求明确确认(例如,“您确定要删除‘report.docx’吗?[是/否]”)。通知工具: 虽然也是一种动作形式,但向用户发送通知(例如,系统警报、进度更新)的工具对于让用户了解代理的活动很重要。了解这些工具类别有助于设计和构建更具能力和多功能的 LLM 代理。随着您的学习,您会发现许多代理的实际用途都包含对这些类别中多种工具的深思熟虑的组合,所有这些都由 LLM 的推理能力进行协调,以达成特定目标。接下来的部分将讨论代理如何决定使用哪些工具以及如何将它们集成到其工作流程中。