推荐配置 link
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c2g | 2c4g |
100w 组向量 | 4c8g 50GB | 4c16g 50GB |
500w 组向量 | 8c32g | 16c64g 200GB |
部署架构图 link
1. 准备好代理环境(国外服务器可忽略) link
确保可以访问 OpenAI,具体方案可以参考:代理方案。或直接在 Sealos 上 部署 OneAPI,既解决代理问题也能实现多 Key 轮询、接入其他大模型。
2. 多模型支持 link
FastGPT 使用了 one-api 项目来管理模型池,其可以兼容 OpenAI 、Azure 、国内主流模型和本地模型等。
可选择 Sealos 快速部署 OneAPI,更多部署方法可参考该项目的 README,也可以直接通过以下按钮一键部署:
一、安装 Docker 和 docker-compose link
+Table of Contents
Docker Compose 快速部署
使用 Docker Compose 快速部署 FastGPT
推荐配置 link
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c2g | 2c4g |
100w 组向量 | 4c8g 50GB | 4c16g 50GB |
500w 组向量 | 8c32g | 16c64g 200GB |
部署架构图 link
1. 准备好代理环境(国外服务器可忽略) link
确保可以访问 OpenAI,具体方案可以参考:代理方案。或直接在 Sealos 上 部署 OneAPI,既解决代理问题也能实现多 Key 轮询、接入其他大模型。
2. 多模型支持 link
FastGPT 使用了 one-api 项目来管理模型池,其可以兼容 OpenAI 、Azure 、国内主流模型和本地模型等。
可选择 Sealos 快速部署 OneAPI,更多部署方法可参考该项目的 README,也可以直接通过以下按钮一键部署:
一、安装 Docker 和 docker-compose link
# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
@@ -38,9 +38,9 @@
docker -v
docker-compose -v
# 如失效,自行百度~
-
推荐直接使用 Orbstack。可直接通过 Homebrew 来安装:
+
我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
也可以直接在 WSL 2 中安装命令行版本的 Docker。
二、创建目录并下载 docker-compose.yml link
依次执行下面命令,创建 FastGPT 文件并拉取docker-compose.yml
和config.json
,执行完后目录下会有 2 个文件。
非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载下面2个链接的文件: docker-compose.yml,config.json
注意: docker-compose.yml
配置文件中 Mongo 为 5.x,部分服务器不支持,需手动更改其镜像版本为 4.4.24
+
或者直接下载安装包进行安装。
我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
也可以直接在 WSL 2 中安装命令行版本的 Docker。
二、创建目录并下载 docker-compose.yml link
依次执行下面命令,创建 FastGPT 文件并拉取docker-compose.yml
和config.json
,执行完后目录下会有 2 个文件。
非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载下面2个链接的文件: docker-compose.yml,config.json
注意: docker-compose.yml
配置文件中 Mongo 为 5.x,部分服务器不支持,需手动更改其镜像版本为 4.4.24
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
diff --git a/docs/development/openapi/chat/index.html b/docs/development/openapi/chat/index.html
index 0c43f6f776d..29ead0787e0 100644
--- a/docs/development/openapi/chat/index.html
+++ b/docs/development/openapi/chat/index.html
@@ -25,8 +25,8 @@
menu
对话接口
FastGPT OpenAPI 对话接口
发起对话 link
🤖
该接口的 API Key 需使用应用特定的 key
,否则会报错。
有些包调用时,BaseUrl
需要添加v1
路径,有些不需要,如果出现404情况,可补充v1
重试。
对话接口兼容GPT
的接口!如果你的项目使用的是标准的GPT
官方接口,可以直接通过修改BaseUrl
和 Authorization
来访问 FastGpt 应用。
请求 link
+Table of Contents
对话接口
FastGPT OpenAPI 对话接口
发起对话 link
🤖
该接口的 API Key 需使用应用特定的 key
,否则会报错。
有些包调用时,BaseUrl
需要添加v1
路径,有些不需要,如果出现404情况,可补充v1
重试。
对话接口兼容GPT
的接口!如果你的项目使用的是标准的GPT
官方接口,可以直接通过修改BaseUrl
和 Authorization
来访问 FastGpt 应用。
请求 link
curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \
--header 'Authorization: Bearer fastgpt-xxxxxx' \
--header 'Content-Type: application/json' \
@@ -45,10 +45,10 @@
}
]
}'
-
- headers.Authorization: Bearer {{apikey}}
- chatId: string | undefined 。
- 为
undefined
时(不传入),不使用 FastGpt 提供的上下文功能,完全通过传入的 messages 构建上下文。 不会将你的记录存储到数据库中,你也无法在记录汇总中查阅到。 - 为
非空字符串
时,意味着使用 chatId 进行对话,自动从 FastGpt 数据库取历史记录,并使用 messages 数组最后一个内容作为用户问题。请自行确保 chatId 唯一,长度小于250,通常可以是自己系统的对话框ID。
- 为
- messages: 结构与 GPT接口 chat模式一致。
- detail: 是否返回中间值(模块状态,响应的完整结果等),
stream模式
下会通过event
进行区分,非stream模式
结果保存在responseData
中。 - variables: 模块变量,一个对象,会替换模块中,输入框内容里的
{{key}}
响应 link
+
- headers.Authorization: Bearer {{apikey}}
- chatId: string | undefined 。
- 为
undefined
时(不传入),不使用 FastGpt 提供的上下文功能,完全通过传入的 messages 构建上下文。 不会将你的记录存储到数据库中,你也无法在记录汇总中查阅到。 - 为
非空字符串
时,意味着使用 chatId 进行对话,自动从 FastGpt 数据库取历史记录,并使用 messages 数组最后一个内容作为用户问题。请自行确保 chatId 唯一,长度小于250,通常可以是自己系统的对话框ID。
- 为
- messages: 结构与 GPT接口 chat模式一致。
- detail: 是否返回中间值(模块状态,响应的完整结果等),
stream模式
下会通过event
进行区分,非stream模式
结果保存在responseData
中。 - variables: 模块变量,一个对象,会替换模块中,输入框内容里的
{{key}}
响应 link
{
"id": "adsfasf",
"model": "",
@@ -68,7 +68,7 @@
}
]
}
-
+
data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":""},"index":0,"finish_reason":null}]}
data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":"电"},"index":0,"finish_reason":null}]}
@@ -76,7 +76,7 @@
data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":"影"},"index":0,"finish_reason":null}]}
data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":"《"},"index":0,"finish_reason":null}]}
-
+
{
"responseData": [ // 不同模块的响应值, 不同版本具体值可能有差异,可先 log 自行查看最新值。
{
@@ -160,7 +160,7 @@
}
]
}
-
+
event: moduleStatus
data: {"status":"running","name":"知识库搜索"}
diff --git a/docs/development/openapi/dataset/index.html b/docs/development/openapi/dataset/index.html
index 3cd2251c018..349ce296d93 100644
--- a/docs/development/openapi/dataset/index.html
+++ b/docs/development/openapi/dataset/index.html
@@ -25,24 +25,24 @@
menu
知识库接口
FastGPT OpenAPI 知识库接口
如何获取知识库ID(datasetId) | 如何获取文件集合ID(collection_id) |
---|---|
创建训练订单 link
+Table of Contents
知识库接口
FastGPT OpenAPI 知识库接口
如何获取知识库ID(datasetId) | 如何获取文件集合ID(collection_id) |
---|---|
创建训练订单 link
curl --location --request POST 'https://api.fastgpt.in/api/support/wallet/bill/createTrainingBill' \
--header 'Authorization: Bearer {{apikey}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "可选,自定义订单名称,例如:文档训练-fastgpt.docx"
}'
-
data 为 billId,可用于添加知识库数据时进行账单聚合。
+
data 为 billId,可用于添加知识库数据时进行账单聚合。
{
"code": 200,
"statusText": "",
"message": "",
"data": "65112ab717c32018f4156361"
}
-
知识库 link
创建一个知识库 link
+
知识库 link
创建一个知识库 link
curl --location --request POST 'http://localhost:3000/api/core/dataset/create' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -55,19 +55,19 @@
"vectorModel": "text-embedding-ada-002",
"agentModel": "gpt-3.5-turbo-16k"
}'
-
- parentId - 父级ID,用于构建目录结构。通常可以为 null 或者直接不传。
- type -
dataset
或者folder
,代表普通知识库和文件夹。不传则代表创建普通知识库。 - name - 知识库名(必填)
- intro - 介绍(可选)
- avatar - 头像地址(可选)
- vectorModel - 向量模型(建议传空,用系统默认的)
- agentModel - 文本处理模型(建议传空,用系统默认的)
+
- parentId - 父级ID,用于构建目录结构。通常可以为 null 或者直接不传。
- type -
dataset
或者folder
,代表普通知识库和文件夹。不传则代表创建普通知识库。 - name - 知识库名(必填)
- intro - 介绍(可选)
- avatar - 头像地址(可选)
- vectorModel - 向量模型(建议传空,用系统默认的)
- agentModel - 文本处理模型(建议传空,用系统默认的)
{
"code": 200,
"statusText": "",
"message": "",
"data": "65abc9bd9d1448617cba5e6c"
}
-
获取知识库列表 link
+
获取知识库列表 link
curl --location --request GET 'http://localhost:3000/api/core/dataset/list?parentId=' \
--header 'Authorization: Bearer {{authorization}}' \
-
- parentId - 父级ID,不传或为空,代表获取根目录下的知识库
+
- parentId - 父级ID,不传或为空,代表获取根目录下的知识库
{
"code": 200,
"statusText": "",
@@ -94,12 +94,12 @@
}
]
}
-
获取知识库详情 link
+
获取知识库详情 link
curl --location --request GET 'http://localhost:3000/api/core/dataset/detail?id=6593e137231a2be9c5603ba7' \
--header 'Authorization: Bearer {{authorization}}' \
-
- id: 知识库的ID
+
- id: 知识库的ID
{
"code": 200,
"statusText": "",
@@ -136,21 +136,21 @@
"isOwner": true
}
}
-
删除一个知识库 link
+
删除一个知识库 link
curl --location --request DELETE 'http://localhost:3000/api/core/dataset/delete?id=65abc8729d1448617cba5df6' \
--header 'Authorization: Bearer {{authorization}}' \
-
- id: 知识库的ID
+
- id: 知识库的ID
{
"code": 200,
"statusText": "",
"message": "",
"data": null
}
-
集合 link
创建一个空的集合 link
+
集合 link
创建一个空的集合 link
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/create' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -163,16 +163,16 @@
"test":111
}
}'
-
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- name: 集合名称(必填)
- type:
- folder:文件夹
- virtual:虚拟集合(手动集合)
- metadata: 元数据(暂时没啥用)
data 为集合的 ID。
+
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- name: 集合名称(必填)
- type:
- folder:文件夹
- virtual:虚拟集合(手动集合)
- metadata: 元数据(暂时没啥用)
data 为集合的 ID。
{
"code": 200,
"statusText": "",
"message": "",
"data": "65abcd009d1448617cba5ee1"
}
-
创建一个纯文本集合 link
传入一段文字,创建一个集合,会根据传入的文字进行分割。
+
创建一个纯文本集合 link
传入一段文字,创建一个集合,会根据传入的文字进行分割。
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/create/text' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -189,7 +189,7 @@
"metadata":{}
}'
-
- text: 原文本
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- name: 集合名称(必填)
- metadata: 元数据(暂时没啥用)
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
+
- text: 原文本
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- name: 集合名称(必填)
- metadata: 元数据(暂时没啥用)
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{
"code": 200,
"statusText": "",
@@ -204,9 +204,9 @@
}
}
}
-
创建一个链接集合 link
传入一个网络链接,创建一个集合,会先去对应网页抓取内容,再抓取的文字进行分割。
+
创建一个链接集合 link
传入一个网络链接,创建一个集合,会先去对应网页抓取内容,再抓取的文字进行分割。
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/create/link' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -224,7 +224,7 @@
"webPageSelector":".docs-content"
}
}'
-
- link: 网络链接
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- metadata.webPageSelector: 网页选择器,用于指定网页中的哪个元素作为文本(可选)
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
+
- link: 网络链接
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- metadata.webPageSelector: 网页选择器,用于指定网页中的哪个元素作为文本(可选)
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{
"code": 200,
"statusText": "",
@@ -233,14 +233,14 @@
"collectionId": "65abd0ad9d1448617cba6031"
}
}
-
创建一个文件集合(商业版) link
传入一个文件,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。
+
创建一个文件集合(商业版) link
传入一个文件,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。
curl --location --request POST 'http://localhost:3000/api/proApi/core/dataset/collection/create/file' \
--header 'Authorization: Bearer {{authorization}}' \
--form 'file=@"C:\\Users\\user\\Desktop\\fastgpt测试文件\\index.html"' \
--form 'data="{\"datasetId\":\"6593e137231a2be9c5603ba7\",\"parentId\":null,\"trainingType\":\"chunk\",\"chunkSize\":512,\"chunkSplitter\":\"\",\"qaPrompt\":\"\",\"metadata\":{}}"'
-
需要使用 POST form-data 的格式上传。包含 file 和 data 两个字段。
- file: 文件
- data: 知识库相关信息(json序列化后传入)
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
+
需要使用 POST form-data 的格式上传。包含 file 和 data 两个字段。
- file: 文件
- data: 知识库相关信息(json序列化后传入)
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{
"code": 200,
"statusText": "",
@@ -255,9 +255,9 @@
}
}
}
-
获取集合列表 link
+
获取集合列表 link
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/list' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -268,7 +268,7 @@
"parentId": null,
"searchText":""
}'
-
- pageNum: 页码(选填)
- pageSize: 每页数量,最大30(选填)
- datasetId: 知识库的ID(必填)
- parentId: 父级Id(选填)
- searchText: 模糊搜索文本(选填)
+
- pageNum: 页码(选填)
- pageSize: 每页数量,最大30(选填)
- datasetId: 知识库的ID(必填)
- parentId: 父级Id(选填)
- searchText: 模糊搜索文本(选填)
{
"code": 200,
"statusText": "",
@@ -304,12 +304,12 @@
"total": 93
}
}
-
获取集合详情 link
+
获取集合详情 link
curl --location --request GET 'http://localhost:3000/api/core/dataset/collection/detail?id=65abcfab9d1448617cba5f0d' \
--header 'Authorization: Bearer {{authorization}}' \
-
- id: 集合的ID
+
- id: 集合的ID
{
"code": 200,
"statusText": "",
@@ -348,9 +348,9 @@
"sourceName": "测试训练"
}
}
-
修改集合信息 link
+
修改集合信息 link
curl --location --request PUT 'http://localhost:3000/api/core/dataset/collection/update' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -359,29 +359,29 @@
"parentId":null,
"name":"测2222试"
}'
-
- id: 集合的ID
- parentId: 修改父级ID(可选)
- name: 修改集合名称(可选)
+
- id: 集合的ID
- parentId: 修改父级ID(可选)
- name: 修改集合名称(可选)
{
"code": 200,
"statusText": "",
"message": "",
"data": null
}
-
删除一个集合 link
+
删除一个集合 link
curl --location --request DELETE 'http://localhost:3000/api/core/dataset/collection/delete?id=65aa2a64e6cb9b8ccdc00de8' \
--header 'Authorization: Bearer {{authorization}}' \
-
- id: 集合的ID
+
- id: 集合的ID
{
"code": 200,
"statusText": "",
"message": "",
"data": null
}
-
数据 link
为集合批量添加添加数据 link
注意,每次最多推送 200 组数据。
+
数据 link
为集合批量添加添加数据 link
注意,每次最多推送 200 组数据。
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pushData' \
--header 'Authorization: Bearer apikey' \
--header 'Content-Type: application/json' \
@@ -406,7 +406,7 @@
}
]
}'
-
- collectionId: 集合ID(必填)
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- prompt: 自定义 QA 拆分提示词,需严格按照模板,建议不要传入。(选填)
- data:(具体数据)
- q: 主要数据(必填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填),不传入则默认使用q和a构建索引。也可以传入
+
- collectionId: 集合ID(必填)
- trainingType:(必填)
- chunk: 按文本长度进行分割
- qa: QA拆分
- prompt: 自定义 QA 拆分提示词,需严格按照模板,建议不要传入。(选填)
- data:(具体数据)
- q: 主要数据(必填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填),不传入则默认使用q和a构建索引。也可以传入
{
"code": 200,
"statusText": "",
@@ -418,7 +418,7 @@
"error": [] // 其他错误
}
}
-
{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
+
{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
我会给你一段文本,{{theme}},学习它们,并整理学习成果,要求为:
1. 提出最多 25 个问题。
2. 给出每个问题的答案。
@@ -432,9 +432,9 @@
……
我的文本:"""{{text}}"""
-
获取集合的数据列表 link
+
获取集合的数据列表 link
curl --location --request POST 'http://localhost:3000/api/core/dataset/data/list' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -444,7 +444,7 @@
"collectionId":"65abd4ac9d1448617cba6171",
"searchText":""
}'
-
- pageNum: 页码(选填)
- pageSize: 每页数量,最大30(选填)
- collectionId: 集合的ID(必填)
- searchText: 模糊搜索词(选填)
+
- pageNum: 页码(选填)
- pageSize: 每页数量,最大30(选填)
- collectionId: 集合的ID(必填)
- searchText: 模糊搜索词(选填)
{
"code": 200,
"statusText": "",
@@ -473,12 +473,12 @@
"total": 63
}
}
-
获取单条数据详情 link
+
获取单条数据详情 link
curl --location --request GET 'http://localhost:3000/api/core/dataset/data/detail?id=65abd4b29d1448617cba61db' \
--header 'Authorization: Bearer {{authorization}}' \
-
- id: 数据的id
+
- id: 数据的id
{
"code": 200,
"statusText": "",
@@ -505,9 +505,9 @@
"canWrite": true
}
}
-
修改单条数据 link
+
修改单条数据 link
curl --location --request PUT 'http://localhost:3000/api/core/dataset/data/update' \
--header 'Authorization: Bearer {{authorization}}' \
--header 'Content-Type: application/json' \
@@ -517,28 +517,28 @@
"a":"sss",
"indexes":[]
}'
-
- id: 数据的id
- q: 主要数据(选填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填),类型参考
为集合批量添加添加数据
,建议直接不传。更新q,a后,如果有默认索引,则会直接更新默认索引。
+
- id: 数据的id
- q: 主要数据(选填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填),类型参考
为集合批量添加添加数据
,建议直接不传。更新q,a后,如果有默认索引,则会直接更新默认索引。
{
"code": 200,
"statusText": "",
"message": "",
"data": null
}
-
删除单条数据 link
+
删除单条数据 link
curl --location --request DELETE 'http://localhost:3000/api/core/dataset/data/delete?id=65abd4b39d1448617cba624d' \
--header 'Authorization: Bearer {{authorization}}' \
-
- id: 数据的id
+
- id: 数据的id
{
"code": 200,
"statusText": "",
"message": "",
"data": "success"
}
-
搜索测试 link
+
搜索测试 link
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/searchTest' \
--header 'Authorization: Bearer fastgpt-xxxxx' \
--header 'Content-Type: application/json' \
@@ -550,7 +550,7 @@
"searchMode": "embedding",
"usingReRank": false
}'
-
- datasetId - 知识库ID
- text - 需要测试的文本
- limit - 最大 tokens 数量
- similarity - 最低相关度(0~1,可选)
- searchMode - 搜索模式:embedding | fullTextRecall | mixedRecall
- usingReRank - 使用重排
返回 top k 结果, limit 为最大 Tokens 数量,最多 20000 tokens。
+
- datasetId - 知识库ID
- text - 需要测试的文本
- limit - 最大 tokens 数量
- similarity - 最低相关度(0~1,可选)
- searchMode - 搜索模式:embedding | fullTextRecall | mixedRecall
- usingReRank - 使用重排
返回 top k 结果, limit 为最大 Tokens 数量,最多 20000 tokens。
{
"code": 200,
"statusText": "",
diff --git a/docs/development/openapi/share/index.html b/docs/development/openapi/share/index.html
index bed15208673..a54c9967edc 100644
--- a/docs/development/openapi/share/index.html
+++ b/docs/development/openapi/share/index.html
@@ -34,43 +34,43 @@
"uid": "用户唯一凭证"
}
}
-
FastGPT
将会判断success
是否为true
决定是允许用户继续操作。message
与msg
是等同的,你可以选择返回其中一个,当success
不为true
时,将会提示这个错误。
uid
是用户的唯一凭证,将会用于拉取对话记录以及保存对话记录。可参考下方实践案例。
触发流程 link
配置教程 link
1. 配置身份校验地址 link
配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。
🤖
这里仅需配置根地址,无需具体到完整请求路径。
2. 分享链接中增加额外 query link
在分享链接的地址中,增加一个额外的参数: authToken。例如:
原始的链接:https://share.fastgpt.in/chat/share?shareId=648aaf5ae121349a16d62192
完整链接: https://share.fastgpt.in/chat/share?shareId=648aaf5ae121349a16d62192&authToken=userid12345
这个authToken
通常是你系统生成的用户唯一凭证(Token之类的)。FastGPT 会在鉴权接口的body
中携带 token={{authToken}} 的参数。
3. 编写聊天初始化校验接口 link
+
FastGPT
将会判断success
是否为true
决定是允许用户继续操作。message
与msg
是等同的,你可以选择返回其中一个,当success
不为true
时,将会提示这个错误。
uid
是用户的唯一凭证,将会用于拉取对话记录以及保存对话记录。可参考下方实践案例。
触发流程 link
配置教程 link
1. 配置身份校验地址 link
配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。
🤖
这里仅需配置根地址,无需具体到完整请求路径。
2. 分享链接中增加额外 query link
在分享链接的地址中,增加一个额外的参数: authToken。例如:
原始的链接:https://share.fastgpt.in/chat/share?shareId=648aaf5ae121349a16d62192
完整链接: https://share.fastgpt.in/chat/share?shareId=648aaf5ae121349a16d62192&authToken=userid12345
这个authToken
通常是你系统生成的用户唯一凭证(Token之类的)。FastGPT 会在鉴权接口的body
中携带 token={{authToken}} 的参数。
3. 编写聊天初始化校验接口 link
curl --location --request POST '{{host}}/shareAuth/init' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "{{authToken}}"
}'
-
+
{
"success": true,
"data": {
"uid": "用户唯一凭证"
}
}
-
系统会拉取该分享链接下,uid 为 username123 的对话记录。
+
系统会拉取该分享链接下,uid 为 username123 的对话记录。
{
"success": false,
"message": "身份错误",
}
-
4. 编写对话前校验接口 link
+
4. 编写对话前校验接口 link
curl --location --request POST '{{host}}/shareAuth/start' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "{{authToken}}",
"question": "用户问题",
}'
-
+
{
"success": true,
"data": {
"uid": "用户唯一凭证"
}
}
-
+
{
"success": false,
"message": "身份验证失败",
@@ -150,9 +150,9 @@
}
]
}'
-
实践案例 link
我们以Laf作为服务器为例,简单展示这 3 个接口的使用方式。
1. 创建3个Laf接口 link
这个接口中,我们设置了token
必须等于fastgpt
才能通过校验。(实际生产中不建议固定写死)
+
实践案例 link
我们以Laf作为服务器为例,简单展示这 3 个接口的使用方式。
1. 创建3个Laf接口 link
这个接口中,我们设置了token
必须等于fastgpt
才能通过校验。(实际生产中不建议固定写死)
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
@@ -165,7 +165,7 @@
return { success: false,message:"身份错误" }
}
-
这个接口中,我们设置了token
必须等于fastgpt
才能通过校验。并且如果问题中包含了你
字,则会报错,用于模拟敏感校验。
+
这个接口中,我们设置了token
必须等于fastgpt
才能通过校验。并且如果问题中包含了你
字,则会报错,用于模拟敏感校验。
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
@@ -183,7 +183,7 @@
return { success: true, data: { uid: "user1" } }
}
-
结果上报接口可自行进行逻辑处理。
+
结果上报接口可自行进行逻辑处理。
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
diff --git a/docs/workflow/modules/http/index.html b/docs/workflow/modules/http/index.html
index fc40324a767..dddb933e424 100644
--- a/docs/workflow/modules/http/index.html
+++ b/docs/workflow/modules/http/index.html
@@ -41,8 +41,8 @@
"age": 10
}
}
-
那么,自定出参的key
可以设置为:
- message (string)
- data.name (string)
- data.age (number)
POST 示例 link
自定义入参
- user.name (string)
- user.age (number)
- type (string)
自定义出参
- message (string)
- data.name (string)
- data.age (number)
那么,这个模块发出的请求则是:
+
那么,自定出参的key
可以设置为:
- message (string)
- data.name (string)
- data.age (number)
POST 示例 link
自定义入参
- user.name (string)
- user.age (number)
- type (string)
自定义出参
- message (string)
- data.name (string)
- data.age (number)
那么,这个模块发出的请求则是:
curl --location --request POST 'http://xxxx.com' \
--header 'Content-Type: application/json' \
--data-raw '{
@@ -60,7 +60,7 @@
"type": ""
}
}'
-
+
{
"message": "message",
"data": {
@@ -68,10 +68,10 @@
"age": 10
}
}
-
GET 示例 link
GET 中,不推荐使用嵌套参数,否则会出现奇怪的问题。此外,GET 请求中,FastGPT 会将参数扁平化,不会将自定义参单独抽到 data 中,同时全局变量也会扁平化,因此需要注意字段 key 是否冲突。
自定义入参
- name (string)
- age (number)
- type (string)
自定义出参
- message (string)
- name (string)
- age (number)
那么,这个模块发出的请求则是:
+
GET 示例 link
GET 中,不推荐使用嵌套参数,否则会出现奇怪的问题。此外,GET 请求中,FastGPT 会将参数扁平化,不会将自定义参单独抽到 data 中,同时全局变量也会扁平化,因此需要注意字段 key 是否冲突。
自定义入参
- name (string)
- age (number)
- type (string)
自定义出参
- message (string)
- name (string)
- age (number)
那么,这个模块发出的请求则是:
curl --location --request GET 'http://xxx.com/test?name&age&type&appId=65782f7ffae5f7854ed4498b&chatId=xxxx&responseChatItemId=xxxx&cTime=2023-12-18 13:45:46'
-
+
{
"message": "message",
"data": {