# 工具调用&终止

> 在 FastGPT 工作流中配置工具调用与终止节点，让大模型自主编排工作流工具、系统插件与 MCP 工具。

Source: https://doc.fastgpt.cn/zh-CN/guide/build/workflow/nodes/tool

![工具调用&终止：界面示例](/imgs/optimized/current/node-tool-call.png.webp)

## 什么是工具

工具可以是一个系统模块（例如：AI 对话、知识库搜索、HTTP 模块等），也可以是一个插件。

工具调用让大语言模型根据上下文动态决策调用链路，代价是 Token 消耗更高。

## 工具的组成

1. 工具介绍。通常是模块的介绍或插件的介绍，这个介绍会告诉 LLM，这个工具的作用是什么。
2. 工具参数。对于系统模块来说，工具参数已经是固定的，无需额外配置。对于插件来说，工具参数是一个可配置项。

## 工具是如何运行的

要了解工具如何运行的，首先需要知道它的运行条件。

1. 需要工具的介绍（或者叫描述）。这个介绍会告诉 LLM，这个工具的作用是什么，LLM 会根据上下文语义，决定是否需要调用这个工具。
2. 工具的参数。有些工具调用时，可能需要一些特殊的参数。参数中有 2 个关键的值：`参数介绍` 和 `是否必须`。

结合工具的介绍、参数介绍和参数是否必须，LLM 会决定是否调用这个工具。有以下几种情况：

1. 无参数的工具：直接根据工具介绍，决定是否需要执行。例如：获取当前时间。
2. 有参数的工具：
   1. 无必须的参数：尽管上下文中，没有适合的参数，也可以调用该工具。但有时候，LLM 会自己伪造一个参数。
   2. 有必须的参数：如果没有适合的参数，LLM 可能不会调用该工具。可以通过提示词，引导用户提供参数。

### 工具调用逻辑

支持 `函数调用` 的模型可在一轮返回多个工具调用，ToolCall 节点按顺序逐个执行。模型文字与工具调用可以在同一轮出现：

![ToolCall 节点执行循环](/imgs/diagrams/tool-call-loop.zh-CN.light.svg)

循环最多执行 50 轮，普通工具错误作为结果反馈给模型。交互请求会暂停执行；工具终止信号、用户停止或模型请求错误会结束循环。执行期间，客户端持续接收工具状态。

## 怎么用

将工具调用节点底部的菱形连接到工具顶部的菱形。详细的连线类型、工具入口归属及流程边界规则，请参考[工作流编排规则校验](/zh-CN/guide/build/workflow/rules)。下图将【自定义工具变量】作为工具接入，再把生成的 `service` 传给【指定回复】，最后连接【工具调用终止】。

![工具连接与终止流程](/imgs/optimized/current/tool-connections.png.webp)

为工具填写清晰的介绍，并定义必填参数。本例让模型根据用户意图将 `service` 参数填写为 `技术支持` 或 `销售咨询`（配图中标识为 `support` 或 `sales`）；调试时检查实际生成的参数，再逐步增加工具。

### 用途

工具调用节点通常会将工具运行结果返回给模型，继续生成最终回答。在工具分支末尾连接【工具调用终止】，可以在该分支完成后结束调用。

本例实测输入 `请联系技术支持`（对应配图中的 `Please call support.`），通过【指定回复】输出所选服务标识后，由【工具调用终止】直接结束本轮工具调用。

## 附加节点

当您使用了工具调用节点，同时就会出现工具调用终止节点和自定义工具变量节点，能够进一步提升工具调用的使用体验。

### 工具调用终止

工具调用终止可用于结束本次调用，即可以接在某个工具后面，当工作流执行到这个节点时，便会强制结束本次工具调用，不再调用其他工具，也不会再调用 AI 针对工具调用结果回答问题。

![工具调用终止：界面示例](/imgs/optimized/current/tool-stop.png.webp)

### 自定义工具变量

自定义工具变量可以扩展工具的变量输入，即对于一些未被视作工具参数或无法工具调用的节点，可以自定义工具变量，填上对应的参数描述，那么工具调用便会相对应的调用这个节点，进而调用其之后的工作流。

![自定义工具变量：界面示例](/imgs/optimized/current/tool-variables.png.webp)

## 输入、输出与使用边界

配置模型、提示词、历史记录、文件链接和用户问题。模型需要支持工具调用（在 AI 配置弹窗选择模型后，确认显示**工具调用：支持**；若所选模型无工具调用能力，节点无法发起工具调用或会返回调用报错），执行身份需要有工具和所引用资源的权限。通过工具连接点挂接工具，并检查工具描述、必填参数及固定输入。需要自主规划与 Skill 的节点配置见[Agent 节点](/zh-CN/guide/build/workflow/nodes/agent)。

主要输出是字符串类型的 AI 回复内容，错误信息用于节点错误处理。工具调用终止节点发出停止当前工具调用循环的信号；需要展示固定结果时，可在终止前连接指定回复。

## 示例：按需检索制度

1. 将开始节点连接到工具调用，用户问题引用开始节点输入，在 AI 配置弹窗选择显示**工具调用：支持**的模型。
2. 在工具连接点接入知识库搜索，选择已处理的差旅制度知识库。工具描述说明它用于查报销期限及材料。
3. 提示词要求回答差旅制度问题前先检索。输入“出差回来后多久提交报销？”。
4. 在运行详情检查工具调用参数与引用，确认返回“15 个自然日”，最终答复保留 15 个自然日期限。

样本资料见[首个知识库问答](/zh-CN/guide/getting-started/knowledge-qa)。工具选择和参数由模型产生，调试时检查真实调用；涉及外部写操作时先设计业务确认流程。失败时区分模型错误、参数错误、资源权限和外部服务错误。
