我们通常认为大型语言模型(LLM)是强大的文本生成器,擅长对话和写作。但如果它们能做的远不止于此呢?如果它们能够采取行动、查询数据、完成任务呢?“工具使用”(Tool Use)正是解锁这一能力的关键
「吴恩达Agentic AI 模块3」关于AI如何使用“工具”:五个真相
我们通常认为大型语言模型(LLM)是强大的文本生成器,擅长对话和写作。但如果它们能做的远不止于此呢?如果它们能够采取行动、查询数据、完成任务呢?“工具使用”(Tool Use)正是解锁这一能力的关键,而其工作原理可能比大多数人想象的要更令人惊讶。本文将揭示关于AI工具使用的五个最具影响力的真相。
真相一:LLM实际上不“调用”工具,而是“请求”执行
这是最核心且违反直觉的一个机制:作为一个纯粹的文本生成器,LLM本身无法直接执行任何代码或调用一个外部函数。它完全依赖于开发者编写的应用程序代码来完成整个流程。
实际的工作流是一个由开发者精心设计的、多步骤的协作过程:
- 生成意图:当LLM判断需要使用工具时,它会生成一段特殊格式的文本,比如
FUNCTION: getCurrentTime
。这串文本仅仅是表达了它想要使用工具的意图。 - 应用检测:开发者编写的应用程序代码会持续监控LLM的输出,并检测到这个特殊格式的文本请求。
- 应用执行:检测到意图后,应用程序会代替LLM去执行真正的函数(例如,调用Python的
getCurrentTime()
函数)。 - 结果反馈:函数执行后返回的结果(比如 “下午3:20”)会被应用程序捕获,并作为新的信息添加回与LLM的对话历史中。
- 最终回答:LLM读取包含新结果的对话历史,然后生成最终给用户的、通顺自然的回答(例如,“现在是下午3:20”)。
因此,这并非模型自身的直接行动,而是模型与外部应用程序之间的一场精心编排的“合作舞蹈”,LLM在其中扮演的是“请求者”的角色,而真正的“执行者”是开发者构建的系统。
真相二:LLM自己决定何时使用工具
现代的工具使用方法之所以强大,在于其“智能代理”(Agentic)的特性。开发者只需向LLM提供一系列可用的工具,而由LLM根据用户的具体问题自主决定是否以及何时使用它们。
这与“硬编码”的逻辑截然不同。在硬编码中,开发者会强制规定在某个步骤必须调用某个函数。但在智能代理模式下:
- 当你给LLM一个
getCurrentTime
工具并提问“现在几点了?”,它会判断出需要使用这个工具来获取实时信息。 - 但如果你问的是“绿茶里有多少咖啡因?”,它会正确地判断出
getCurrentTime
工具对此问题毫无帮助,于是直接利用其内部知识库进行回答。
这种基于上下文的决策能力,使得系统能够灵活地适应千变万化的用户需求,是其强大功能的根源。
真相三:代码执行是LLM的“超级工具”
与其为LLM创建大量功能单一的特定工具,不如给它一个更强大、更通用的“超级工具”:代码解释器。
想象一下计算器:我们不需要为加、减、乘、除、开方、求幂等每一个运算都创建一个单独的工具。我们可以只提供一个工具——一个Python代码执行环境。
工作流程如下:LLM被指示编写一小段代码来解决问题。应用程序提取并执行这段代码,然后将代码的运行结果反馈给LLM。
例如,对于问题“2的平方根是多少?”,LLM不需要一个专门的 square_root
工具,它可以直接生成并请求执行代码:
import math;
print(math.sqrt(2))
正如吴恩达(Andrew Ng)在分享个人经验时所说:
“有好几次,在我参与的一些智能代理应用项目中,它为了帮我完成各种任务而生成的代码解决方案,其巧妙程度都让我感到非常惊喜和高兴。”
真相四:这个“超级工具”也伴随着真实的风险
允许LLM生成并运行任意代码,无疑是一把双刃剑。第三节中提到的那种能让模型巧妙解决复杂问题的灵活性,也正是其潜在风险的来源——它们是同一枚硬币的两面。
一个令人印象深刻的真实案例是:一个开发团队使用的智能编程代理在执行任务时,错误地生成并执行了命令 remove star.py,这导致项目目录中一个关键的Python文件被删除了。事后,那个代理还“道歉”说:“我犯了个蠢到家的错误。”
为了防范此类风险,最佳实践至关重要:必须在安全的沙箱环境(Sandbox Environment)中运行LLM生成的代码。像Docker或E2B这样的沙箱可以将代码的执行限制在一个隔离的容器内,即使代码出现问题或具有恶意,其造成的任何损害也会被限制在沙箱内部,无法影响到更广泛的系统。
真相五:AI社区正在联手解决“重复造轮子”的问题
在过去,每个开发团队如果想让自己的AI应用连接到Slack、GitHub或Google Drive等常用服务,都必须自己编写一套专属的封装代码和函数。如果社区中有 M 个应用和 N 个工具,开发者总共需要完成 M x N 次的集成工作,这造成了巨大的重复劳动。
为了解决这个“重复造轮子”的痛点,模型上下文协议(Model Context Protocol, MCP)应运而生。MCP最初由Anthropic公司提出,现已被许多其他公司和开发者广泛采用,旨在为工具和数据源创建一个通用的标准接口。
这一标准带来的好处是显而易见的:有了MCP,一个服务(如GitHub)只需要提供一个符合MCP标准的服务器,之后任何遵循MCP标准的客户端(即AI应用)都可以直接使用它的工具。这使得整个社区的工作量从 M * N 锐减到 M + N。
这种标准化的趋势标志着AI生态系统正日趋成熟,让开发者能够更轻松、更高效地构建功能强大的、支持工具的应用程序。
结论
工具使用将大型语言模型从一个被动的信息检索者,提升为了一个能够执行任务、与外部世界交互的主动智能代理。这不仅仅是技术上的进步,更是一种范式的转变。
既然AI已经学会了使用工具,那么在我们的工作和生活中,有哪些曾经不可能完成的任务,现在已经触手可及了呢?