SmaugBrain
← 返回新闻
news 焦点文章

如何在 AI 智能体中选择和执行工具:完整实现指南

2026年8月4日 smaugbrain 12 分钟阅读 WordPress 文章

如何在 AI 智能体中选择和执行工具:完整实现指南

AI 智能体只有能够超越自身推理能力并与外部世界交互时,才具有实用价值。工具就是这座桥梁——API、脚本、数据库、文件系统和浏览器自动化,让智能体能够执行真实操作,而不仅仅是生成文本。但选择正确的工具并可靠地执行它们,正是大多数实现方案失败的地方。

一个偶尔能工作的智能体与一个始终能工作的智能体之间的区别,在于工具设计、执行纪律和错误处理。本指南涵盖了决定你的 AI 智能体是成功实现自动化还是产生需要人工干预的错误的关键实用决策。

AI 智能体语境中的工具含义

AI agent tool calling architecture showing connected tools and services
AI 智能体工具架构:将智能体连接到外部系统和服务

工具是智能体可以调用的任何外部能力。这包括 REST API、命令行程序、数据库查询、文件操作、邮件发送、日历管理和网页浏览。每个工具都暴露一个定义好的接口——通常是输入参数和输出格式——智能体通过结构化的函数调用来使用它。

智能体从语言模型接收工具调用请求,通过平台运行时执行它,然后返回结果。结果成为对话上下文的一部分,使智能体能够根据所学内容做出后续决策。这个循环——决策、行动、观察、再次决策——持续进行,直到任务完成或智能体判断无法继续。

工具调用将智能体从被动响应者转变为主动操作者。没有工具,智能体只能生成文本。有了工具,它可以查询数据库、修改文件、触发工作流,并代表你与外部系统交互。

为你的智能体选择合适的工具

Sequential versus parallel tool execution comparison diagram
AI 智能体工具的顺序执行与并行执行模式对比

并非所有能力都应该作为工具暴露。工具选择需要在有用性与风险、复杂性和可靠性之间取得平衡。以下框架有助于评估哪些工具值得纳入你的智能体配置。

只读操作与写入操作

首先按工具对外部系统的影响进行分类。只读工具——数据库查询、文件读取、API GET 请求——风险最小。智能体可以自信地执行它们,失败通常只是信息性的。写入操作——数据库插入、文件修改、API POST 请求——需要更严格的控制,因为它们会改变状态。

一个好的默认做法:允许智能体无需人工审批即可使用只读工具。对写入操作要求审批,尤其是影响生产系统、财务数据或客户信息的操作。这种区分降低了安全操作的成本,同时保持了对高风险操作的控制。

确定性结果与概率性结果

某些工具产生可预测的结果。数据库查询返回特定行。文件读取返回文件内容。智能体可以通过检查结果是否符合预期来验证成功。其他工具涉及具有不确定行为的外部系统——第三方 API 可能对相同的输入返回不同的结果,网页爬虫可能因页面布局变化而失败,邮件发送者可能因收件人问题而退信。

对于概率性工具,构建验证步骤。在智能体调用工具后,检查结果是否表明成功。如果工具返回错误代码、缺失数据或意外格式,智能体应调整参数后重试,或报告失败,而不是基于错误假设继续执行。

成本与延迟考量

每次工具调用都有成本。外部 API 调用消耗带宽并可能产生按次计费。数据库查询消耗计算资源。文件操作消耗 I/O。当智能体频繁或在循环中调用工具时,这些成本会迅速累积。

尽可能设计批量操作的工具。与其为五条记录分别调用五次 API,不如设计一个接受标识符数组并返回所有结果的单个工具。与其读取一个文件、处理一行、再读取下一个文件,不如考虑操作整个目录或数据集的工具。

工具执行模式

智能体如何执行工具与使用哪些工具同样重要。执行模式决定了可靠性、可观测性以及在出现问题时的可恢复性。

顺序执行

最简单的模式:智能体调用一个工具,接收结果,决定下一步操作,调用下一个工具,然后重复。这对于线性工作流非常有效,其中每一步都依赖于前一步的结果。从源提取数据、转换数据、加载到目标的数据管道自然遵循这种模式。

顺序执行易于调试。当某处失败时,你可以追踪导致失败的精确工具调用序列。每个工具结果都可见于对话历史中,使识别假设何处失效变得简单直接。

并行执行

当多个工具调用相互独立——没有任何一个依赖于另一个的结果——并行执行可以显著降低总延迟。需要查询三个独立数据库、检查三个不同 API 或读取三个独立文件的智能体可以同时发出所有请求,并在结果到达时进行处理。

并行执行需要谨慎的错误处理。如果一个工具失败而其他工具成功,智能体必须决定是否继续使用部分结果、重试失败的工具,或中止整个操作。明确定义此策略,而不是将其留给偶然性。

条件执行

某些工具仅在满足特定条件时才应执行。文件上传工具可能仅在文件存在且低于大小限制时才运行。数据库更新工具可能仅在智能体已验证记录存在且更改有效时才运行。条件执行可防止无效调用并降低错误率。

在两个级别实现条件检查。首先,在调用工具前验证输入。其次,在工具返回后验证输出。如果任一检查失败,在处理下一个工具调用之前先处理错误。

错误处理与恢复

工具失败是不可避免的。网络超时、API 速率限制、数据缺失、权限错误和意外响应格式在生产环境中都会发生。你的智能体如何处理这些失败,决定了它是优雅恢复还是为用户产生令人困惑的错误。

分类失败类型

并非所有失败都值得相同的响应。瞬态失败——临时网络问题、速率限制、短暂服务中断——通常可以通过重试恢复。永久失败——无效参数、缺失资源、权限拒绝——需要不同的处理方式,因为重试不会有帮助。

为你的工具集构建失败分类体系。将每种可能的错误分类为瞬态或永久,然后配置适当的处理策略:瞬态错误使用带退避的重试,永久错误使用清晰的错误消息,智能体无法独立解决的错误使用升级路径。

实现带指数退避的重试

对于瞬态失败,实现带指数退避和抖动的重试。等待一秒,然后两秒,然后四秒,并加入随机变化以避免大量智能体同时重试时产生的雷群效应。设置最大重试次数——通常为三到五次——超过此次数后智能体报告失败,而不是无限期继续重试。

记录每次重试尝试的上下文:调用了哪个工具、发生了何种错误、这是第几次尝试、智能体等待了多长时间。此日志支持失败后分析,并有助于识别工具可靠性模式。

对写入操作使用幂等性

当工具修改外部状态时,尽可能确保它们是幂等的。幂等操作无论执行多少次都产生相同的结果。读取文件是幂等的。查询数据库是幂等的。使用唯一标识符创建记录,如果防止了重复创建,也是幂等的。

非幂等操作——发送邮件、创建支付、更新时间戳——需要特殊处理。使用幂等键或预检查来防止重复副作用。在执行非幂等工具之前,检查期望的结果是否已存在。如果已存在,返回现有结果而不是创建重复项。

安全与访问控制

工具赋予智能体对系统和数据的访问权限。这种访问必须遵循适用于任何特权操作的安全原则:最小权限、明确授权和可审计性。

应用最小权限原则

每个工具应仅暴露智能体完成任务所需的能力。读取数据库记录的智能体不应具有对这些记录的写入权限。发送通知的智能体不应具有修改用户账户的权限。细粒度的权限在智能体被入侵或行为异常时减少了影响范围。

在工具定义级别实施权限控制,而不仅仅在执行级别。定义每个工具可以访问什么、谁可以调用它以及在什么条件下。在工具执行之前验证这些约束,而不是在执行之后。

清理工具输入

工具输入来源于智能体的推理,而推理又来源于用户提示、对话历史或检索到的数据。如果攻击者向这些来源中的任何一个注入恶意内容,智能体可能会将该内容作为工具参数传递。如果未验证输入,SQL 注入、命令注入和路径遍历攻击都是可能的。

在输入到达工具之前验证并清理所有输入。对数据库访问使用参数化查询。转义命令行参数中的特殊字符。将文件路径限制为允许的目录。在所有工具调用中一致地应用输入验证规则。

监控与可观测性

如果没有对工具执行的可见性,调试智能体失败就变成了猜测。监控每次工具调用——输入、输出、延迟、错误状态——提供了诊断问题和优化性能所需的证据。

记录工具调用元数据

对于每次工具调用,记录:工具名称、输入参数、执行时间戳、持续时间、输出或错误,以及智能体会话上下文。此元数据支持重建智能体的决策路径,并识别瓶颈或失败模式。

不要记录敏感数据——工具输入或输出中出现的 API 密钥、个人信息或凭据。在记录之前过滤或脱敏此类数据。目标是在不损害安全性的前提下实现可观测性。

跟踪工具可靠性指标

测量每个工具的成功率、平均延迟和错误分布。高失败率或过高延迟的工具成为替换、优化或移除的候选对象。始终快速可靠的工具成为其他工具可以依赖的基础能力。

为失败率超过可接受阈值的工具设置警报。一个 99% 成功的工具如果调用频繁且失败是静默的,仍可能导致问题。对退化的早期检测可防止智能体工作流中的级联失败。

工具设计最佳实践

设计良好的工具更容易被智能体正确使用,也更难被误用。以下设计原则提高了智能体-工具交互的可靠性。

使用清晰、自描述的参数

每个工具参数应使用描述其期望内容的名称,而非实现所需的名称。user_iduid 更清晰。date_range_startfrom 更清晰。清晰的参数名称帮助智能体构建正确的调用,而无需猜测。

提供丰富的错误消息

当工具失败时,错误消息应解释出了什么问题以及如何修复。通用的 execution failed 消息毫无用处。而 database connection timeout after 30 seconds—check that the host is reachable and credentials are valid 这样的消息为智能体提供了可操作的 retry 信息或向用户报告的依据。

保持工具聚焦

每个工具应做好一件事。一个同时查询数据库和发送电子邮件通知的工具,比两个单独的工具——一个用于查询,一个用于发送——更难被智能体正确使用。聚焦的工具产生可预测的输出,更易于测试、调试和替换。

实现检查清单

在部署具有工具访问权限的智能体之前,验证以下项目:

  • 工具清单完整 —— 所有预期工具均已定义,包含清晰的参数、返回类型和错误处理
  • 权限已配置 —— 每个工具都有与智能体最小权限要求相匹配的适当访问控制
  • 输入验证已就位 —— 所有工具输入在执行前均已清理和验证
  • 已实现重试逻辑 —— 瞬态失败触发带抖动和最大尝试次数限制的指数退避
  • 已验证幂等性 —— 写入操作要么是幂等的,要么使用幂等键防止重复
  • 已启用日志记录 —— 工具调用、输入、输出和错误均已记录,包含足够的调试上下文
  • 已配置监控 —— 已为工具失败、延迟尖峰和异常执行模式设置警报
  • 已完成安全审查 —— 已测试工具是否存在注入漏洞和数据暴露风险
  • 已配置人工审批 —— 高风险操作在执行前需要审批
  • 已定义回退行为 —— 智能体在工具失败且无法恢复时知道该做什么

真实世界示例

示例 1:数据库查询智能体

一个智能体需要查询客户数据库以回答支持问题。工具定义为 query_customers(search_criteria),包含搜索字段和过滤器的参数。工具验证输入,执行参数化 SQL 查询,并返回匹配记录。

实现细节:工具使用预准备语句来防止 SQL 注入。将结果限制为 50 条记录以防止输出过多。记录每次查询及其使用的搜索条件和返回的结果数量。如果数据库不可达,工具在报告连接错误之前会重试两次,使用指数退避。

示例 2:文件处理智能体

一个智能体通过读取、验证列、转换数据并将结果写入目标文件来处理上传的 CSV 文件。三个工具处理此工作流:read_file(path)validate_data(rows, schema)write_file(path, content)

实现细节:read_file 限制对允许目录和文件类型的访问。validate_data 根据模式定义检查行数、列名和数据类型。write_file 除非智能体具有写入确认权限,否则覆盖现有文件需要明确确认。每个工具记录其操作并返回结构化结果,智能体可据此做出下一步决策。

常见问题

如何决定智能体应该拥有哪些工具的访问权限?

从智能体的目的出发。列出智能体完成任务所需的所有操作。将它们分类为只读或写入。从只读工具开始,仅在验证后添加写入工具。移除任何不直接需要用于智能体核心功能的工具——多余的工具访问会增加风险而不会提升能力。

工具调用和函数调用有什么区别?

工具调用和函数调用描述的是同一个概念:智能体通过结构化接口调用外部函数或 API。不同平台使用不同的术语——OpenAI 称之为 “function calls”,SmaugBrain 称之为 “tools”,一些框架使用 “actions”。底层机制是相同的。

智能体应该有多少个工具?

没有固定的上限,但更多的工具会增加复杂性和攻击面。从智能体任务所需的最小集合开始。仅在新能力需要时才添加工具。设计良好的智能体通常使用五到二十个工具。超过这个数量,考虑是否应将智能体拆分为具有聚焦工具集的专用智能体。

工具可以并行调用吗?

可以,当工具调用相互独立——没有任何一个依赖于另一个的输出时。并行执行可以显著降低总延迟。智能体必须处理部分失败:如果一个工具失败而其他工具成功,决定是否继续使用部分结果、重试失败的工具或中止。在智能体配置中明确定义此策略。

如何防止智能体错误调用工具?

使用具有描述性名称和参数描述的清晰工具定义。实施输入验证,在执行前拒绝格式错误的调用。在文档中提供示例工具调用。使用包含正确工具使用示例的少样本提示。监控工具调用模式,标记表明智能体误解工具用途的异常。

我应该对所有工具调用使用审批工作流吗?

不。审批工作流会增加延迟和摩擦。选择性使用它们处理高风险操作:生产系统的写入操作、金融交易、数据删除和影响外部客户的操作。让智能体无需审批即可执行低风险读取操作和安全写入操作。明确定义你的风险阈值,并随着智能体能力的演进而定期审查。

SmaugBrain 如何处理工具执行?

SmaugBrain 提供了一个结构化的工具系统,其中每个工具都定义了参数、返回类型和执行上下文。工具可以是只读或写入操作,具有可配置的审批要求。平台自动处理重试逻辑、错误报告和执行日志。智能体可以顺序或并行调用工具,结果反馈到对话上下文中用于后续决策。

构建可靠的基于工具的智能体

工具是 AI 推理与现实世界行动之间的桥梁。正确选择工具意味着理解智能体需要做什么,并仅暴露关键能力。正确执行工具意味着优雅地处理失败、彻底验证输入,并对每个操作保持可见性。

在生产环境中成功的智能体具有共同特征:它们使用聚焦的工具集,以清晰的错误处理执行工具,调用前验证输入,记录所有内容以便调试,并将权限限制为最低必要。这些不是可选的附加项——它们是可靠自动化的基础。

如果你想构建能够可靠且安全地执行工具的 AI 智能体,SmaugBrain 提供了定义工具、控制访问、处理失败和监控性能的基础设施。探索 SmaugBrain,开始构建可在生产环境中运行的智能体。