Files
FastGPT/docSite/content/zh-cn/docs/workflow/modules/tool.md
Archer 7c38d1da9a 4.8.11 test (#2843)
* feat: app version test

* update doc

* fix: paging num error

* fix: doc api domain

* rename variable

* perf: memment node min size
2024-09-30 17:28:03 +08:00

3.4 KiB
Raw Blame History

title, description, icon, draft, toc, weight
title description icon draft toc weight
工具调用 FastGPT 工具调用模块介绍 build false true 356

什么是工具

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

工具调用可以让 LLM 更动态的决策流程而不都是固定的流程。当然缺点就是费tokens

工具的组成

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

工具是如何运行的

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

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

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

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

在支持函数调用的模型中,可以一次性调用多个工具,调用逻辑如下:

怎么用

有工具调用模块 无工具调用模块

高级编排中,托动工具调用的连接点,可用的工具头部会出现一个菱形,可以将它与工具调用模块底部的菱形相连接。

被连接的工具,会自动分离工具输入与普通的输入,并且可以编辑描述,可以通过调整介绍,使得该工具调用时机更加精确。对于一些内置的节点,务必修改描述才能让模型正常调用。

关于工具调用,如何调试仍然是一个玄学,所以建议,不要一次性增加太多工具,选择少量工具调优后再进一步尝试。

组合节点

工具调用终止

工具调用默认会把子流程运行的结果作为工具结果,返回给模型进行回答。有时候,你可能不希望模型做回答,你可以给对应子流程的末尾增加上一个工具调用终止节点,这样,子流程的结果就不会被返回给模型。

alt text

自定义工具变量

工具调用的子流程运行,有时候会依赖AI生成的一些变量,为了简化交互流程,我们给系统内置的节点都指定了工具变量。然而,有些时候,你需要的变量不仅是目标流程的首个节点的变量,而是需要更复杂的变量,此时你可以使用自定义工具变量。它允许你完全自定义该工具流程的变量。

alt text

相关示例