← 术语图鉴

工具调用

Tool Use · 也叫 Function Calling / 函数调用 / 工具

模型不直接动手,而是说"我要调用某某工具、参数是这些",由你的程序去执行,再把结果交还给它。

你可能会说:

  • “AI 是怎么"查数据库""读文件"的?它不是只会说话吗?”
  • “怎么防止 Agent 执行危险的操作?”

它是什么

你先向模型声明有哪些工具、各自需要什么参数。模型在回答过程中决定要用哪个工具,你的程序真正去执行,然后把结果喂回给模型,它再继续往下写。

因为执行权在你的程序手里,这里就是加限制的地方:只开放必需的工具;每次调用前检查工具名和参数,比如读文件只允许读某个目录;危险操作一律拒绝。

拦截要放在代码里,不能只靠提示词。提示词里写"不要读其他目录"只是请求,工具调用前的检查才是限制。

打个比方

像老板打电话吩咐秘书:"帮我查一下张三的电话。"老板不碰通讯录,查不查、能查哪本,由秘书那边决定。

在这个网站里

兄弟项目 E2E Review 的导师只开放了读取、搜索和查词条之类的工具,执行命令、写文件、上网都被禁止;每次调用前,一个钩子函数会再核对一遍工具名。页面上的"正在查词条"提示,就是收到工具调用事件时显示的(第 18 课)。

容易搞混的地方

常见误解

在提示词里说清楚"不要做什么",模型就不会做

正确理解

提示词只是请求。真正的限制,要在工具执行之前用代码检查并拒绝。

你可以这样告诉 AI

复制下面这段,贴给你的 AI

列出这个 Agent 能调用的每个工具:做什么、参数是什么、能访问的范围、会不会写数据。哪些调用在执行前会被代码拦下来?给我一个测试,证明越界的调用确实被拒绝了。

先知道

  • 智能体——一个会自己决定下一步做什么的程序:大模型负责思考,工具负责动手,循环往复直到完成任务。

接着看

  • MCP——一套给 AI 接工具的通用约定:按它的格式把工具包装好,支持它的 AI 程序就都能调用。
  • 钩子——在 Agent 的某个动作之前或之后自动执行的一段代码;插在工具调用之前,就能拦下不该做的事。

在这些课里出现

相关的真实事故