Skip to main content

Command Palette

Search for a command to run...

AI 基础入门

工具调用

现在你已经了解上下文的工作原理,接下来让我们探索 AI 模型如何不只是生成文本。它们还能通过工具调用执行操作,并动态获取信息。

还记得我们将 AI 模型比作 API 端点吗?工具调用就像让这些模型能够自行调用其他 API,仿佛 AI 模型学会了新技能。

让我打个比方。想象一下,你正在通过电话指导朋友做晚餐。你可以根据已知信息给他们建议,但实际上看不到冰箱里有什么,也无法品尝他们正在做的食物。

现在,想象朋友给你发来冰箱里食材的照片,或者告诉你烤箱的准确温度。这样一来,你就能提供更好的建议,因为你能获取实时信息。这正是工具调用为 AI 模型带来的能力。

工具调用的工作原理

开发者构建 AI 应用时,可以定义 AI 模型可使用的特定“工具”。这些工具就像特殊技能,能扩展模型的能力,使其不只会思考和通过文本回复。

你可能已经在不知不觉中使用过工具调用!当你让 ChatGPT 生成图像、搜索网页或运行代码时,它就在后台调用工具。

其工作流程如下:

  1. AI 模型接收你的请求,并识别到需要额外能力
  2. 它会以 JSON (一种结构化数据格式) 生成特殊响应,指定要使用的工具及传递的参数
  3. 应用运行该工具并返回结果
  4. AI 模型将这些结果纳入上下文,并继续对话

工具为何对编程至关重要

在软件开发中,工具功能强大,能让 AI 模型:

  • 读取和写入代码库中的文件
  • 搜索代码,查找相关函数或模式
  • 运行 shell 命令,测试代码或安装软件包
  • 访问文档,或搜索网页以获取最新信息
  • 运行 linter 或测试,检查错误

没有工具,AI 模型只能使用您在上下文中明确提供的信息。有了工具,它就能主动探索并与您的代码库交互。

工具调用包含哪些内容?

每个工具都包含三个主要部分:

  1. 名称,例如 read_filesearch_web
  2. 描述,说明模型应在何时以及如何使用该工具
  3. 参数,即工具运行所需的输入

以下是一个工具定义示例:

{  "name": "read_file",  "description": "Read the contents of a file from the codebase",  "parameters": {    "filepath": "The path to the file to read"  }}

当 AI 模型要使用此工具时,会生成类似以下内容的响应:

{  "tool": "read_file",  "parameters": {    "filepath": "src/components/Button.tsx"  }}

应用随后读取该文件,并将其内容添加到对话上下文中,让模型能够理解你的 Button 组件并建议相关更改。

工具定义的核心组成部分有哪些?

Select all that apply

工具的成本

还记得我们讨论过 token 和定价吗?工具调用会从两方面消耗 token:

  1. 工具定义会包含在输入上下文中 (通常每个工具占用几百个 token)
  2. 工具结果会添加到输出上下文中 (具体取决于工具返回的内容)

这意味着,频繁使用工具的对话会更快占满上下文窗口,成本也更高。不过,这种权衡通常是值得的,因为接入实时信息能让 AI 提供更大帮助。

发生工具调用时,AI 模型会重新评估直到该工具调用为止的上下文。在 Cursor 等工具中,这意味着你会看到更多缓存输入 token 用量,因为我们会将上下文重新发送给模型。

工具调用会通过哪两种方式影响 token 用量?

Select all that apply

不止于内置工具

最近,出现了一项名为 MCP (模型上下文协议) 的新标准。你可以将它视为一种通用方式,让 AI 模型能够在不同应用中使用和集成工具。

正如 USB 成为了连接设备与计算机的标准,MCP 旨在成为连接工具与 AI 模型的标准。这意味着开发者只需构建一次工具,就能让它们在许多不同的 AI 应用中运行。

例如,你可以使用 MCP 连接 Figma 来访问设计文件,连接 Linear 来查看和管理问题,甚至连接数据库来直接查询数据。你还可以创建自己的 MCP 服务器,以集成内部工具和 API。

现在你已经了解了工具调用,接下来看看让 AI 模型按顺序使用多个工具时会发生什么。这正是 智能体 大显身手的地方。

你已完成本节