mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 13:03:50 +00:00
Docs: fix zh-cn sitemap (#1631)
Signed-off-by: Carson Yang <yangchuansheng33@gmail.com>
This commit is contained in:
10
docSite/content/zh-cn/docs/workflow/modules/_index.md
Normal file
10
docSite/content/zh-cn/docs/workflow/modules/_index.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
weight: 350
|
||||
title: "模块介绍"
|
||||
description: "介绍 FastGPT 的常用模块"
|
||||
icon: "apps"
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
|
||||
<!-- 350 ~ 400 -->
|
34
docSite/content/zh-cn/docs/workflow/modules/ai_chat.md
Normal file
34
docSite/content/zh-cn/docs/workflow/modules/ai_chat.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: "AI 对话"
|
||||
description: "FastGPT AI 对话模块介绍"
|
||||
icon: "chat"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 351
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 触发执行
|
||||
- 核心模块
|
||||
|
||||

|
||||
|
||||
## 参数说明
|
||||
|
||||
## AI模型
|
||||
|
||||
可以通过 [config.json](/docs/development/configuration/) 配置可选的对话模型,通过 [one-api](/docs/development/one-api/) 来实现多模型接入。
|
||||
|
||||
点击AI模型后,可以配置模型的相关参数。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
{{% alert icon="🍅" context="success" %}}
|
||||
具体配置参数介绍可以参考: [AI参数配置说明](/docs/course/ai_settings)
|
||||
{{% /alert %}}
|
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: "内容提取"
|
||||
description: "FastGPT 内容提取模块介绍"
|
||||
icon: "content_paste_go"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 352
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 需要手动配置
|
||||
- 触发执行
|
||||
- function_call 模块
|
||||
- 核心模块
|
||||
|
||||

|
||||
|
||||
## 功能
|
||||
|
||||
从文本中提取结构化数据,通常是配合 HTTP 模块实现扩展。也可以做一些直接提取操作,例如:翻译。
|
||||
|
||||
## 参数说明
|
||||
|
||||
### 提取要求描述
|
||||
|
||||
顾名思义,给模型设置一个目标,需要提取哪些内容。
|
||||
|
||||
**示例 1**
|
||||
|
||||
> 你是实验室预约助手,从对话中提取出姓名,预约时间,实验室号。当前时间 {{cTime}}
|
||||
|
||||
**示例 2**
|
||||
|
||||
> 你是谷歌搜索助手,从对话中提取出搜索关键词
|
||||
|
||||
**示例 3**
|
||||
|
||||
> 将我的问题直接翻译成英文,不要回答问题
|
||||
|
||||
### 历史记录
|
||||
|
||||
通常需要一些历史记录,才能更完整的提取用户问题。例如上图中需要提供姓名、时间和实验室名,用户可能一开始只给了时间和实验室名,没有提供自己的姓名。再经过一轮缺失提示后,用户输入了姓名,此时需要结合上一次的记录才能完整的提取出 3 个内容。
|
||||
|
||||
### 目标字段
|
||||
|
||||
目标字段与提取的结果相对应,从上图可以看到,每增加一个字段,输出会增加一个对应的出口。
|
||||
|
||||
+ **key**: 字段的唯一标识,不可重复!
|
||||
+ **字段描述**:描述该字段是关于什么的,例如:姓名、时间、搜索词等等。
|
||||
+ **必须**:是否强制模型提取该字段,可能提取出来是空字符串。
|
||||
|
||||
## 输出介绍
|
||||
|
||||
- **完整提取结果**: 一个 JSON 字符串,包含所有字段的提取结果。
|
||||
- **目标字段提取结果**:类型均为字符串。
|
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "问题优化(已合并到知识库搜索)"
|
||||
description: "问题优化模块介绍和使用"
|
||||
icon: "input"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 364
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 有外部输入
|
||||
- 触发执行
|
||||
|
||||

|
||||
|
||||
## 背景
|
||||
|
||||
在 RAG 中,我们需要根据输入的问题去数据库里执行 embedding 搜索,查找相关的内容,从而查找到相似的内容(简称知识库搜索)。
|
||||
|
||||
在搜索的过程中,尤其是连续对话的搜索,我们通常会发现后续的问题难以搜索到合适的内容,其中一个原因是知识库搜索只会使用“当前”的问题去执行。看下面的例子:
|
||||
|
||||

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

|
||||
|
||||
|
||||
## 功能
|
||||
|
||||
调用 AI 去对用户当前的问题进行补全。目前主要是补全“指代”词,使得检索词更加的完善可靠,从而增强上下文连续对话的知识库搜索能力。
|
||||
|
||||
遇到最大的难题在于:模型对于【补全】的概念可能不清晰,且对于长上下文往往无法准确的知道应该如何补全。
|
||||
|
||||
## 示例
|
||||
|
||||
- [接入谷歌搜索](/docs/workflow/examples/google_search/)
|
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: "自定义反馈"
|
||||
description: "自定义反馈模块介绍"
|
||||
icon: "feedback"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 354
|
||||
---
|
||||
|
||||
该模块为临时模块,后续会针对该模块进行更全面的设计。
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 无外部输入
|
||||
- 自动执行
|
||||
|
||||
|
||||
| | |
|
||||
| --------------------- | --------------------- |
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
|
||||
## 介绍
|
||||
|
||||
自定义反馈模块,可以为你的对话增加一个反馈标记,从而方便在后台更好的分析对话的数据。
|
||||
|
||||
在调试模式下,不会记录反馈内容,而是直接提示: `自动反馈测试: 反馈内容`。
|
||||
|
||||
在对话模式(对话、分享窗口、带 chatId 的 API 调用)时,会将反馈内容记录到对话日志中。(会延迟60s记录)
|
||||
|
||||
## 作用
|
||||
|
||||
自定义反馈模块的功能类似于程序开发的`埋点`,便于你观测的对话中的数据。
|
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: '知识库搜索'
|
||||
description: 'FastGPT AI 知识库搜索模块介绍'
|
||||
icon: 'chat'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 357
|
||||
---
|
||||
|
||||
知识库搜索具体参数说明,以及内部逻辑请移步:[FastGPT知识库搜索方案](/docs/course/data_search/)
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加(复杂编排时防止线太乱,可以更美观)
|
||||
- 有外部输入
|
||||
- 有静态配置
|
||||
- 触发执行
|
||||
- 核心模块
|
||||
|
||||

|
||||
|
||||
## 参数说明
|
||||
|
||||
### 输入 - 关联的知识库
|
||||
|
||||
可以选择一个或多个**相同向量模型**的知识库,用于向量搜索。
|
||||
|
||||
### 输入 - 搜索参数
|
||||
|
||||
[点击查看参数介绍](/docs/course/data_search/#搜索参数)
|
||||
|
||||
### 输出 - 引用内容
|
||||
|
||||
以数组格式输出引用,长度可以为 0。意味着,即使没有搜索到内容,这个输出链路也会走通。
|
253
docSite/content/zh-cn/docs/workflow/modules/http.md
Normal file
253
docSite/content/zh-cn/docs/workflow/modules/http.md
Normal file
@@ -0,0 +1,253 @@
|
||||
---
|
||||
title: "HTTP 模块"
|
||||
description: "FastGPT HTTP 模块介绍"
|
||||
icon: "http"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 355
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 手动配置
|
||||
- 触发执行
|
||||
- 核中核模块
|
||||
|
||||

|
||||
|
||||
## 介绍
|
||||
|
||||
HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Postman 和 ApiFox 这类直流工具使用差不多。
|
||||
|
||||
- Params 为路径请求参数,GET请求中用的居多。
|
||||
- Body 为请求体,POST/PUT请求中用的居多。
|
||||
- Headers 为请求头,用于传递一些特殊的信息。
|
||||
- 自定义变量中可以接收前方节点的输出作为变量
|
||||
- 3 种数据中均可以通过 `{{}}` 来引用变量。
|
||||
- url 也可以通过 `{{}}` 来引用变量。
|
||||
- 变量来自于`全局变量`、`系统变量`、`前方节点输出`
|
||||
|
||||
## 参数结构
|
||||
|
||||
### 系统变量说明
|
||||
|
||||
你可以将鼠标放置在`请求参数`旁边的问号中,里面会提示你可用的变量。
|
||||
|
||||
- appId: 应用的ID
|
||||
- chatId: 当前对话的ID,测试模式下不存在。
|
||||
- responseChatItemId: 当前对话中,响应的消息ID,测试模式下不存在。
|
||||
- variables: 当前对话的全局变量。
|
||||
- cTime: 当前时间。
|
||||
- histories: 历史记录(默认最多取10条,无法修改长度)
|
||||
|
||||
### Params, Headers
|
||||
|
||||
不多描述,使用方法和Postman, ApiFox 基本一致。
|
||||
|
||||
可通过 {{key}} 来引入变量。例如:
|
||||
|
||||
| key | value |
|
||||
| --- | --- |
|
||||
| appId | {{appId}} |
|
||||
| Authorization | Bearer {{token}} |
|
||||
|
||||
### Body
|
||||
|
||||
只有特定请求类型下会生效。
|
||||
|
||||
可以写一个`自定义的 Json`,并通过 {{key}} 来引入变量。例如:
|
||||
|
||||
{{< tabs tabTotal="3" >}}
|
||||
{{< tab tabName="假设有一组变量" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"string": "字符串",
|
||||
"number": 123,
|
||||
"boolean": true,
|
||||
"array": [1, 2, 3],
|
||||
"obj": {
|
||||
"name": "FastGPT",
|
||||
"url": "https://fastgpt.in"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< tab tabName="Http 模块中的Body声明" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
注意,在 Body 中,你如果引用`字符串`,则需要加上`""`,例如:`"{{string}}"`。
|
||||
|
||||
```json
|
||||
{
|
||||
"string": "{{string}}",
|
||||
"token": "Bearer {{string}}",
|
||||
"number": {{number}},
|
||||
"boolean": {{boolean}},
|
||||
"array": [{{number}}, "{{string}}"],
|
||||
"array2": {{array}},
|
||||
"object": {{obj}}
|
||||
}
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< tab tabName="最终得到的解析" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"string": "字符串",
|
||||
"token": "Bearer 字符串",
|
||||
"number": 123,
|
||||
"boolean": true,
|
||||
"array": [123, "字符串"],
|
||||
"array2": [1, 2, 3],
|
||||
"object": {
|
||||
"name": "FastGPT",
|
||||
"url": "https://fastgpt.in"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< /tabs >}}
|
||||
|
||||
### 如何获取返回值
|
||||
|
||||
从图中可以看出,FastGPT可以添加多个返回值,这个返回值并不代表接口的返回值,而是代表`如何解析接口返回值`,可以通过 key 来`提取`接口响应的值。例如:
|
||||
|
||||
{{< tabs tabTotal="2" >}}
|
||||
{{< tab tabName="接口响应格式" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "测试",
|
||||
"data":{
|
||||
"user": {
|
||||
"name": "xxx",
|
||||
"age": 12
|
||||
},
|
||||
"list": [
|
||||
{
|
||||
"name": "xxx",
|
||||
"age": 50
|
||||
},
|
||||
[{ "test": 22 }]
|
||||
],
|
||||
"psw": "xxx"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< tab tabName="FastGPT 转化后的格式" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "测试",
|
||||
"data.user": { "name": "xxx", "age": 12 },
|
||||
"data.user.name": "xxx",
|
||||
"data.user.age": 12,
|
||||
"data.list": [ { "name": "xxx", "age": 50 }, [{ "test": 22 }] ],
|
||||
"data.list[0]": { "name": "xxx", "age": 50 },
|
||||
"data.list[0].name": "xxx",
|
||||
"data.list[0].age": 50,
|
||||
"data.list[1]": [ { "test": 22 } ],
|
||||
"data.list[1][0]": { "test": 22 },
|
||||
"data.list[1][0].test": 22,
|
||||
"data.psw": "xxx"
|
||||
}
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< /tabs >}}
|
||||
|
||||
|
||||
你可以配置对应的`key`来从`FastGPT 转化后的格式`获取需要的值,该规则遵守 JS 的对象取值规则。例如:
|
||||
|
||||
1. 获取`message`的内容,那么你可以配置`message`的`key`为`message`,这样就可以获取到`message`的内容。
|
||||
2. 获取`user的name`,则`key`可以为:`data.user.name`。
|
||||
3. 获取list中第二个元素,则`key`可以为:`data.list[1]`,然后输出类型选择字符串,则获自动获取到`[ { "test": 22 } ]`的`json`字符串。
|
||||
|
||||
### 自动格式化输出
|
||||
|
||||
FastGPT v4.6.8 后,加入了出参格式化功能,主要以`json`格式化成`字符串`为主。如果你的输出类型选择了`字符串`,则会将`HTTP`对应`key`的值,转成`json`字符串进行输出。因此,未来你可以直接从`HTTP`接口输出内容至`文本加工`中,然后拼接适当的提示词,最终输入给`AI对话`。
|
||||
|
||||
|
||||
{{% alert context="warning" %}}
|
||||
HTTP模块非常强大,你可以对接一些公开的API,来提高编排的功能。
|
||||
|
||||
如果你不想额外部署服务,可以使用 [Laf](https://laf.dev/) 来快速开发上线接口,即写即发,无需部署。
|
||||
{{% /alert %}}
|
||||
|
||||
## laf 对接 HTTP 示例
|
||||
|
||||
|
||||
下面是在 Laf 编写的 POST 请求示例:
|
||||
|
||||
```ts
|
||||
import cloud from '@lafjs/cloud'
|
||||
const db = cloud.database()
|
||||
|
||||
type RequestType = {
|
||||
appId: string;
|
||||
appointment: string;
|
||||
action: 'post' | 'delete' | 'put' | 'get'
|
||||
}
|
||||
|
||||
export default async function (ctx: FunctionContext) {
|
||||
try {
|
||||
// 从 body 中获取参数
|
||||
const { appId, appointment, action } = ctx.body as RequestType
|
||||
|
||||
const parseBody = JSON.parse(appointment)
|
||||
if (action === 'get') {
|
||||
return await getRecord(parseBody)
|
||||
}
|
||||
if (action === 'post') {
|
||||
return await createRecord(parseBody)
|
||||
}
|
||||
if (action === 'put') {
|
||||
return await putRecord(parseBody)
|
||||
}
|
||||
if (action === 'delete') {
|
||||
return await removeRecord(parseBody)
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
response: "异常"
|
||||
}
|
||||
} catch (err) {
|
||||
return {
|
||||
response: "异常"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 作用
|
||||
|
||||
通过 HTTP 模块你可以无限扩展,比如:
|
||||
- 操作数据库
|
||||
- 调用外部数据源
|
||||
- 执行联网搜索
|
||||
- 发送邮箱
|
||||
- ....
|
||||
|
||||
|
||||
## 相关示例
|
||||
|
||||
- [谷歌搜索](/docs/workflow/examples/google_search/)
|
||||
- [发送飞书webhook](/docs/workflow/examples/feishu_webhook/)
|
||||
- [实验室预约(操作数据库)](/docs/workflow/examples/lab_appointment/)
|
16
docSite/content/zh-cn/docs/workflow/modules/input.md
Normal file
16
docSite/content/zh-cn/docs/workflow/modules/input.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: "对话入口"
|
||||
description: "FastGPT 对话入口模块介绍"
|
||||
icon: "input"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 356
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 流程入口
|
||||
- 无输入
|
||||
- 自动执行
|
||||
|
||||

|
98
docSite/content/zh-cn/docs/workflow/modules/laf.md
Normal file
98
docSite/content/zh-cn/docs/workflow/modules/laf.md
Normal file
@@ -0,0 +1,98 @@
|
||||
---
|
||||
title: "Laf 函数调用"
|
||||
description: "FastGPT Laf 函数调用模块介绍"
|
||||
icon: "code"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 355
|
||||
---
|
||||
|
||||
|
||||

|
||||
|
||||
## 介绍
|
||||
|
||||
`Laf 函数调用`模块可以调用 Laf 账号下的云函数,其工作原理与 HTTP 模块相同,有以下特殊特征:
|
||||
|
||||
- 只能使用 POST 请求
|
||||
- 请求自带系统参数 systemParams,无需通过变量传递。
|
||||
|
||||
## 绑定 Laf 账号
|
||||
|
||||
要调用 Laf 云函数,首先需要绑定 Laf 账号和应用,并且在应用中创建云函数。
|
||||
|
||||
Laf 提供了 PAT(访问凭证) 来实现 Laf 平台外的快捷登录,可以访问 [Laf 文档](https://doc.Laf.run/zh/cli/#%E7%99%BB%E5%BD%95)查看详细如何获取 PAT。
|
||||
|
||||
在获取到 PAT 后,我们可以进入 FastGPT 的`账号页`或是在高级编排中的 `Laf模块` 对 Laf 账号进行绑定。Laf 账号是团队共享的,仅团队管理员可配置。
|
||||
|
||||
填入 PAT 验证后,选择需要绑定的应用(应用需要是 Running 状态),即可调用该应用下的云函数。
|
||||
|
||||

|
||||
|
||||
## 编写云函数
|
||||
|
||||
Laf 云函数拥有根据 interface 自动生成 OpenAPI 的能力,可以参照下面的代码编写云函数,以便自动生成 OpenAPI 文档。
|
||||
|
||||
`Laf模块`可以根据 OpenAPI 文档,自动识别出入参,无需手动添加数据类型。如果不会写 TS,可忽略,手动在 FastGPT 中添加参数即可。
|
||||
|
||||
```ts
|
||||
import cloud from '@lafjs/cloud'
|
||||
|
||||
interface IRequestBody { // 自定义入参,FastGPT 传入的均为POST请求。
|
||||
data1: string // 必填参数
|
||||
data2?: string // 可选参数
|
||||
}
|
||||
|
||||
interface RequestProps extends IRequestBody { // 完整入参,这个无需改动。
|
||||
systemParams: { // 这是FastGPT默认会传递过来的参数
|
||||
appId: string,
|
||||
variables: string,
|
||||
histories: string,
|
||||
cTime: string,
|
||||
chatId: string,
|
||||
responseChatItemId: string
|
||||
}
|
||||
}
|
||||
|
||||
interface IResponse { // 响应内容
|
||||
message: string // 必返回的参数
|
||||
msg?: string; // 可选的返回参数
|
||||
}
|
||||
|
||||
export default async function (ctx: FunctionContext): Promise<IResponse> {
|
||||
const {
|
||||
data1,
|
||||
data2,
|
||||
systemParams
|
||||
}: RequestProps = ctx.body;
|
||||
|
||||
console.log({
|
||||
data1,
|
||||
data2,
|
||||
systemParams
|
||||
});
|
||||
|
||||
return {
|
||||
message: 'ok',
|
||||
msg: 'msg'
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
当然,你也可以在 Laf 平台上选择 fastgpt_template,快速生成该函数模板。
|
||||
|
||||
具体操作可以是,进入 Laf 的函数页面,新建函数(注意 fastgpt 只会调用 post 请求的函数),然后复制上面的代码或者点击更多模板搜索“fastgpt”,使用下面的模板
|
||||
|
||||

|
||||
|
||||
## FastGPT 中使用
|
||||
|
||||
在选择函数后,可以通过点击“同步参数”,自动同步云函数的参数到 FastGPT 中。当然也可以手动添加,手动修改后的参数不会被“同步参数”修改。
|
||||
|
||||

|
||||
|
||||
## 使用注意事项
|
||||
|
||||
### 调用报错
|
||||
|
||||
先在 laf 中调试函数,看是否正常调用。可以通过 console.log,打印入参,将入参放在 Laf 测试页面的 Body 中进行测试。
|
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: "问题分类"
|
||||
description: "FastGPT 问题分类模块介绍"
|
||||
icon: "quiz"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 358
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 有外部输入
|
||||
- 需要手动配置
|
||||
- 触发执行
|
||||
- function_call 模块
|
||||
|
||||

|
||||
|
||||
## 功能
|
||||
|
||||
可以将用户的问题进行分类,分类后执行不同操作。在一些较模糊的场景中,分类效果不是很明显。
|
||||
|
||||
## 参数说明
|
||||
|
||||
### 系统提示词
|
||||
|
||||
被放置在对话最前面,可用于补充说明分类内容的定义。例如问题会被分为:
|
||||
|
||||
1. 打招呼
|
||||
2. Laf 常见问题
|
||||
3. 其他问题
|
||||
|
||||
由于 Laf 不是一个明确的东西,需要给它一个定义,此时提示词里可以填入 Laf 的定义:
|
||||
|
||||
```
|
||||
Laf 是云开发平台,可以快速的开发应用
|
||||
Laf 是一个开源的 BaaS 开发平台(Backend as a Service)
|
||||
Laf 是一个开箱即用的 serverless 开发平台
|
||||
Laf 是一个集「函数计算」、「数据库」、「对象存储」等于一身的一站式开发平台
|
||||
Laf 可以是开源版的腾讯云开发、开源版的 Google Firebase、开源版的 UniCloud
|
||||
```
|
||||
|
||||
### 聊天记录
|
||||
|
||||
适当增加一些聊天记录,可以联系上下文进行分类。
|
||||
|
||||
### 用户问题
|
||||
|
||||
用户输入的内容。
|
||||
|
||||
### 分类内容
|
||||
|
||||
依然以这 3 个分类为例,可以看到最终组成的 Function。其中返回值由系统随机生成,不需要关心。
|
||||
|
||||
1. 打招呼
|
||||
2. Laf 常见问题
|
||||
3. 其他问题
|
||||
|
||||
```js
|
||||
const agentFunction = {
|
||||
name: agentFunName,
|
||||
description: '判断用户问题的类型属于哪方面,返回对应的枚举字段',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
type: {
|
||||
type: 'string',
|
||||
description: `打招呼,返回: abc;Laf 常见问题,返回:vvv;其他问题,返回:aaa`
|
||||
enum: ["abc","vvv","aaa"]
|
||||
}
|
||||
},
|
||||
required: ['type']
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
上面的 Function 必然会返回 `type = abc,vvv,aaa` 其中一个值,从而实现分类判断。
|
26
docSite/content/zh-cn/docs/workflow/modules/reply.md
Normal file
26
docSite/content/zh-cn/docs/workflow/modules/reply.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: "指定回复"
|
||||
description: "FastGPT 指定回复模块介绍"
|
||||
icon: "reply"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 359
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加(防止复杂编排时线太乱,重复添加可以更美观)
|
||||
- 可手动输入
|
||||
- 可外部输入
|
||||
- 会输出结果给客户端
|
||||
|
||||
指定回复模块通常用户特殊状态回复,回复内容有两种:
|
||||
|
||||
1. 一种是手动输入固定内容。
|
||||
2. 一种是通过变量引用。
|
||||
|
||||
{{< figure
|
||||
src="/imgs/specialreply.png"
|
||||
alt=""
|
||||
caption="图 1"
|
||||
>}}
|
32
docSite/content/zh-cn/docs/workflow/modules/text_editor.md
Normal file
32
docSite/content/zh-cn/docs/workflow/modules/text_editor.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "文本加工"
|
||||
description: "FastGPT 文本加工模块介绍"
|
||||
icon: "input"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 363
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 有外部输入
|
||||
- 触发执行
|
||||
- 手动配置
|
||||
|
||||

|
||||
|
||||
|
||||
## 功能
|
||||
对输入文本进行固定加工处理,入参仅支持字符串和数字格式,入参以变量形式使用在文本编辑区域。
|
||||
|
||||
根据上方示例图的处理方式,对任何输入都会在前面拼接“用户的问题是:”。
|
||||
|
||||
|
||||
## 作用
|
||||
|
||||
给任意模块输入自定格式文本,或处理 AI 模块系统提示词。
|
||||
|
||||
## 示例
|
||||
|
||||
- [接入谷歌搜索](/docs/workflow/examples/google_search/)
|
31
docSite/content/zh-cn/docs/workflow/modules/tfswitch.md
Normal file
31
docSite/content/zh-cn/docs/workflow/modules/tfswitch.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "判断器"
|
||||
description: "FastGPT 判断器模块介绍"
|
||||
icon: "input"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 362
|
||||
---
|
||||
|
||||
## 特点
|
||||
|
||||
- 可重复添加
|
||||
- 有外部输入
|
||||
- 触发执行
|
||||
|
||||

|
||||
|
||||
## 功能
|
||||
|
||||
对任意变量进行`IF`判断,若满足条件则执行`IF`分支,不满足条件执行`ELSE`分支。
|
||||
|
||||
|
||||
上述例子中若「知识库引用」变量的长度等于0则执行`IF`分支,否则执行`ELSE`分支。
|
||||
|
||||
|
||||
支持增加更多的判断条件和分支,同编程语言中的`IF`语句逻辑相同。
|
||||
|
||||
## 作用
|
||||
|
||||
适用场景有:让大模型做判断后输出固定内容,根据大模型回复内容判断是否触发后续模块。
|
||||
|
59
docSite/content/zh-cn/docs/workflow/modules/tool.md
Normal file
59
docSite/content/zh-cn/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