mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-30 02:12:38 +00:00
4.7 doc update (#1068)
* fix: plugin update * feat: get current time plugin * fix: ts * perf: select app ux * fix: ts * perf: max w * move code * perf: inform tip * fix: inform * doc * fix: tool handle * perf: tmp file store * doc * fix: message file selector * feat: doc * perf: switch trigger * doc * fix: openapi import * rount the number * parse openapi schema * fix empty line after variables (#64) * doc image * image size * doc * doc * catch error --------- Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
This commit is contained in:
@@ -9,7 +9,7 @@ weight: 351
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加(复杂编排时防止线太乱,可以更美观)
|
||||
- 可重复添加
|
||||
- 有外部输入
|
||||
- 有静态配置
|
||||
- 触发执行
|
||||
@@ -19,53 +19,18 @@ weight: 351
|
||||
|
||||
## 参数说明
|
||||
|
||||
### 对话模型
|
||||
## AI模型
|
||||
|
||||
可以通过 [config.json](/docs/development/configuration/) 配置可选的对话模型,通过 [one-api](/docs/development/one-api/) 来实现多模型接入。
|
||||
|
||||
### 温度 & 回复上限
|
||||
点击AI模型后,可以配置模型的相关参数。
|
||||
|
||||
+ **温度**:越低回答越严谨,少废话(实测下来,感觉差别不大)
|
||||
+ **回复上限**:最大回复 token 数量(只有 OpenAI 模型有效)。注意,是回复!不是总 tokens。
|
||||

|
||||
|
||||
### 系统提示词(可被外部输入覆盖)
|
||||

|
||||
|
||||
被放置在上下文数组的最前面,role 为 system,用于引导模型。具体用法参考各搜索引擎的教程~
|
||||
|
||||
### 限定词(可被外部输入覆盖)
|
||||
|
||||
与系统提示词类似,role 也是 system 类型,只不过位置会被放置在问题前,拥有更强的引导作用。
|
||||
|
||||
### 引用内容
|
||||
|
||||
接收一个外部输入的数组,主要是由【知识库搜索】模块生成,也可以由 HTTP 模块从外部引入。数据结构示例如下:
|
||||
|
||||
```ts
|
||||
type DataType = {
|
||||
dataset_id?: string;
|
||||
id?: string;
|
||||
q: string;
|
||||
a: string;
|
||||
source?: string;
|
||||
};
|
||||
// 如果是外部引入的内容,尽量不要携带 dataset_id 和 id
|
||||
const quoteList: DataType[] = [
|
||||
{ dataset_id: '11', id: '222', q: '你还', a: '哈哈', source: '' },
|
||||
{ dataset_id: '11', id: '333', q: '你还', a: '哈哈', source: '' },
|
||||
{ dataset_id: '11', id: '444', q: '你还', a: '哈哈', source: '' }
|
||||
];
|
||||
```
|
||||
|
||||
## 完整上下文组成
|
||||
|
||||
最终发送给 LLM 大模型的数据是一个数组,内容和顺序如下:
|
||||
|
||||
```bash
|
||||
[
|
||||
系统提示词
|
||||
引用内容
|
||||
聊天记录
|
||||
限定词
|
||||
问题
|
||||
]
|
||||
```
|
||||
{{% alert icon="🍅" context="success" %}}
|
||||
具体配置参数介绍可以参考: [AI参数配置说明](/docs/course/ai_settings)
|
||||
{{% /alert %}}
|
@@ -21,11 +21,11 @@ weight: 364
|
||||
|
||||
在搜索的过程中,尤其是连续对话的搜索,我们通常会发现后续的问题难以搜索到合适的内容,其中一个原因是知识库搜索只会使用“当前”的问题去执行。看下面的例子:
|
||||
|
||||

|
||||

|
||||
|
||||
用户在提问“第二点是什么”的时候,只会去知识库里查找“第二点是什么”,压根查不到内容。实际上需要查询的是“QA结构是什么”。因此我们需要引入一个【问题优化】模块,来对用户当前的问题进行补全,从而使得知识库搜索能够搜索到合适的内容。使用补全后效果如下:
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 功能
|
||||
|
@@ -17,7 +17,7 @@ weight: 357
|
||||
- 触发执行
|
||||
- 核心模块
|
||||
|
||||

|
||||

|
||||
|
||||
## 参数说明
|
||||
|
||||
@@ -25,15 +25,9 @@ weight: 357
|
||||
|
||||
可以选择一个或多个**相同向量模型**的知识库,用于向量搜索。
|
||||
|
||||
### 输入 - 相似度
|
||||
### 输入 - 搜索参数
|
||||
|
||||
学名称为距离,两个向量之间距离,可以认为是两个向量的相似度,又可以映射成文本之间的相似度。
|
||||
|
||||
需要注意的是,不同的向量模型之间的相似度是不能比较的,因为他们的距离值计算出来差距很大。例如,openai 的 embedding 模型,通常 0.8 以上的才是较为准确的内容,而 M3E 模型则是 0.35。
|
||||
|
||||
### 输入 - 单次搜索上限
|
||||
|
||||
每次触发搜索模块时,最多取 n 条作为最终引用,又称 topN。需要注意的是,取了 n 条引用不代表对话模型都可以使用,还会受对话模型最大 Tokens 的影响。
|
||||
[点击查看参数介绍](/docs/course/data_search/#搜索参数)
|
||||
|
||||
### 输出 - 搜索结果
|
||||
|
||||
|
@@ -1,71 +0,0 @@
|
||||
---
|
||||
title: "用户引导"
|
||||
description: "FastGPT 用户引导模块介绍"
|
||||
icon: "psychology"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 353
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 仅可添加 1 个
|
||||
- 无外部输入
|
||||
- 不参与实际调度
|
||||
|
||||
## 作用
|
||||
|
||||
可以配置欢迎语、全局变量、语言播报等,类似于系统设置,不参与工作流的运行。
|
||||
|
||||

|
||||
|
||||
### 欢迎语
|
||||
|
||||
会在对话开始前发送一个欢迎语。该功能只在网页生效,API是无效的,并且该欢迎语不会被加入 AI 的对话记录中。
|
||||
|
||||
可以通过特殊的 Markdown 语法,来实现快速提问。 如图中的:
|
||||
|
||||
```
|
||||
[剧情介绍]
|
||||
[导演是谁]
|
||||
```
|
||||
|
||||
### 全局变量
|
||||
|
||||
| | |
|
||||
| ----- | ----- |
|
||||
|  |  |
|
||||
|
||||
如上图中,我们配置了一个名为`测试`, key为`test`的变量,类型为`文本`的全局变量。并在对话中,通过`{{test}}`来引用该变量。
|
||||
|
||||
|
||||
| | |
|
||||
| ----- | ----- |
|
||||
|  |  |
|
||||
|
||||
从上图中,可以看出,实际的提示词从:`这是一个变量测试: {{test}}` 变成了: `这是一个变量测试: 变量测试`,因为`{{test}}` 被变量替换了。
|
||||
|
||||
变量在工作流中大部分的`文本输入框`都生效,例如:HTTP模块的URL和参数、各种功能块的提示词。
|
||||
|
||||
有一个特殊类型的变量,交`外部传入`。这种变量不需要用户填写,而是直接在调用时实时传入。目前支持从分享链接的Query和API调用的`variables`对象中获取。
|
||||
|
||||

|
||||
|
||||
|
||||
------
|
||||
|
||||
除了自定义的全局变量外,还有一些系统参数可以选择:
|
||||
|
||||
+ **cTime**: 当前时间,字符串格式,例如:2023/3/3 20:22
|
||||
|
||||
### 语音播报
|
||||
|
||||
| | |
|
||||
| ----- | ----- |
|
||||
|  |  |
|
||||
|
||||
### 猜你想问
|
||||
|
||||
开启后,每次对话结束,会发送最近的6条对话记录给AI,AI会根据这些对话记录,给出 3 个可能的问题。
|
||||
|
||||

|
@@ -19,12 +19,13 @@ weight: 355
|
||||
|
||||
## 介绍
|
||||
|
||||
HTTP 模块会向对应的地址发送一个 `POST/GET` 请求,携带部分`系统参数`及`自定义参数`,并接收一个 JSON 响应值,字段也是自定义。
|
||||
HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Postman 和 ApiFox 这类直流工具使用差不多。
|
||||
|
||||
- Params 为路径请求参数,GET请求中用的居多。
|
||||
- Body 为请求体,POST请求中用的居多。
|
||||
- Body 为请求体,POST/PUT请求中用的居多。
|
||||
- Headers 为请求头,用于传递一些特殊的信息。
|
||||
- 3 种数据中均可以通过 `{{}}` 来引用变量。
|
||||
- url 也可以通过 `{{}}` 来引用变量。
|
||||
- 变量来自于`全局变量`、`系统变量`、`局部传入`
|
||||
|
||||
## 参数结构
|
||||
@@ -42,7 +43,7 @@ HTTP 模块会向对应的地址发送一个 `POST/GET` 请求,携带部分`
|
||||
|
||||
### Params, Headers
|
||||
|
||||
不多描述,使用方法和Postman, ApiFox 基本一致,目前 Params 和 Headers 未提供语法提示,后续会加入。
|
||||
不多描述,使用方法和Postman, ApiFox 基本一致。
|
||||
|
||||
可通过 {{key}} 来引入变量。例如:
|
||||
|
||||
@@ -53,7 +54,7 @@ HTTP 模块会向对应的地址发送一个 `POST/GET` 请求,携带部分`
|
||||
|
||||
### Body
|
||||
|
||||
只有`POST`模式下会生效。
|
||||
只有特定请求类型下会生效。
|
||||
|
||||
可以写一个`自定义的 Json`,并通过 {{key}} 来引入变量。例如:
|
||||
|
||||
@@ -182,17 +183,15 @@ HTTP 模块会向对应的地址发送一个 `POST/GET` 请求,携带部分`
|
||||
|
||||
FastGPT v4.6.8 后,加入了出参格式化功能,主要以`json`格式化成`字符串`为主。如果你的输出类型选择了`字符串`,则会将`HTTP`对应`key`的值,转成`json`字符串进行输出。因此,未来你可以直接从`HTTP`接口输出内容至`文本加工`中,然后拼接适当的提示词,最终输入给`AI对话`。
|
||||
|
||||
### 动态外部数据
|
||||
|
||||
在插件中的`HTTP模块`有一个属性叫`动态外部数据`,这个属性是与`插件输入`中,数据类型为`动态外部数据`的值搭配使用。
|
||||
{{% alert context="warning" %}}
|
||||
HTTP模块非常强大,你可以对接一些公开的API,来提高编排的功能。
|
||||
|
||||
类似于文本加工模块,会有一个不确定长度,不确定key的用户输入,因此这部分数据会被`动态外部数据`接收,它们是一个对象。在 HTTP 模块中,你可以在`Body`中接收到一个`key`为`DYNAMIC_INPUT_KEY`的对象。
|
||||
如果你不想额外部署服务,可以使用 [Laf](https://laf.dev/) 来快速开发上线接口,即写即发,无需部署。
|
||||
{{% /alert %}}
|
||||
|
||||
## laf 对接 HTTP 示例
|
||||
|
||||
{{% alert context="warning" %}}
|
||||
如果你不想额外部署服务,可以使用 [Laf](https://laf.dev/) 来快速开发上线接口,即写即发,无需部署。
|
||||
{{% /alert %}}
|
||||
|
||||
下面是在 Laf 编写的 POST 请求示例:
|
||||
|
||||
@@ -250,4 +249,5 @@ export default async function (ctx: FunctionContext) {
|
||||
## 相关示例
|
||||
|
||||
- [谷歌搜索](/docs/workflow/examples/google_search/)
|
||||
- [发送飞书webhook](/docs/workflow/examples/feishu_webhook/)
|
||||
- [实验室预约(操作数据库)](/docs/workflow/examples/lab_appointment/)
|
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "用户问题"
|
||||
description: "FastGPT 用户问题模块介绍"
|
||||
title: "对话入口"
|
||||
description: "FastGPT 对话入口模块介绍"
|
||||
icon: "input"
|
||||
draft: false
|
||||
toc: true
|
||||
|
59
docSite/content/docs/workflow/modules/tool.md
Normal file
59
docSite/content/docs/workflow/modules/tool.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: "工具调用"
|
||||
description: "FastGPT 工具调用模块介绍"
|
||||
icon: "build"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 356
|
||||
---
|
||||
|
||||

|
||||
|
||||
## 什么是工具
|
||||
|
||||
工具可以是一个系统模块,例如:AI对话、知识库搜索、HTTP模块等。也可以是一个插件。
|
||||
|
||||
工具调用可以让 LLM 更动态的决策流程,而不都是固定的流程。(当然,缺点就是费tokens)
|
||||
|
||||
## 工具的组成
|
||||
|
||||
1. 工具介绍。通常是模块的介绍或插件的介绍,这个介绍会告诉LLM,这个工具的作用是什么。
|
||||
2. 工具参数。对于系统模块来说,工具参数已经是固定的,无需额外配置。对于插件来说,工具参数是一个可配置项。
|
||||
|
||||
## 工具是如何运行的
|
||||
|
||||
要了解工具如何允许,首先需要知道它的运行条件。
|
||||
|
||||
1. 需要工具的介绍(或者叫描述)。这个介绍会告诉LLM,这个工具的作用是什么,LLM会根据上下文语义,决定是否需要调用这个工具。
|
||||
2. 工具的参数。有些工具调用时,可能需要一些特殊的参数。参数中有2个关键的值:`参数介绍`和`是否必须`。
|
||||
|
||||
结合工具的介绍、参数介绍和参数是否必须,LLM会决定是否调用这个工具。有以下几种情况:
|
||||
|
||||
|
||||
1. 无参数的工具:直接根据工具介绍,决定是否需要执行。例如:获取当前时间。
|
||||
2. 有参数的工具:
|
||||
1. 无必须的参数:尽管上下文中,没有适合的参数,也可以调用该工具。但有时候,LLM会自己伪造一个参数。
|
||||
2. 有必须的参数:如果没有适合的参数,LLM可能不会调用该工具。可以通过提示词,引导用户提供参数。
|
||||
|
||||
### 工具调用逻辑
|
||||
|
||||
在支持`函数调用`的模型中,可以一次性调用多个工具,调用逻辑如下:
|
||||
|
||||

|
||||
|
||||
## 怎么用
|
||||
|
||||
| 有工具调用模块 | 无工具调用模块 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
高级编排中,一旦有了工具调用模块,可用的工具头部会出现一个菱形,可以将它与工具调用模块底部的菱形相连接。
|
||||
|
||||
被连接的工具,会自动分离工具输入与普通的输入,并且可以编辑`介绍`,可以通过调整介绍,使得该工具调用时机更加精确。
|
||||
|
||||
关于工具调用,如何调试仍然是一个玄学,所以建议,不要一次性增加太多工具,选择少量工具调优后再进一步尝试。
|
||||
|
||||
## 相关示例
|
||||
|
||||
- [谷歌搜索](/docs/workflow/examples/google_search/)
|
||||
- [发送飞书webhook](/docs/workflow/examples/feishu_webhook/)
|
Reference in New Issue
Block a user