部署架构图 link
🤖
MongoDB:用于存储除了向量外的各类数据
PostgreSQL/Milvus:存储向量数据
OneAPI: 聚合各类 AI API,支持多模型调用 (任何模型问题,先自行通过 OneAPI 测试校验)
推荐配置 link
PgVector版本 link
体验测试首选
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c2g | 2c4g |
100w 组向量 | 4c8g 50GB | 4c16g 50GB |
500w 组向量 | 8c32g 200GB | 16c64g 200GB |
Milvus版本 link
生产部署首选,对于千万级以上向量性能更优秀。
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c8g | 4c16g |
100w 组向量 | 未测试 | |
500w 组向量 |
zilliz cloud版本 link
Milvus 的全托管服务,性能优于 Milvus 并提供 SLA,点击使用 Zilliz Cloud。
由于向量库使用了 Cloud,无需占用本地资源,无需太关注。
前置工作 link
1. 确保网络环境 link
如果使用OpenAI
等国外模型接口,请确保可以正常访问,否则会报错:Connection error
等。 方案可以参考:代理方案
2. 准备 Docker 环境 link
+Table of Contents
Docker Compose 快速部署
使用 Docker Compose 快速部署 FastGPT
部署架构图 link
🤖
MongoDB:用于存储除了向量外的各类数据
PostgreSQL/Milvus:存储向量数据
OneAPI: 聚合各类 AI API,支持多模型调用 (任何模型问题,先自行通过 OneAPI 测试校验)
推荐配置 link
PgVector版本 link
非常轻量,适合数据量在 5000 万以下。
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试(可以把计算进程设置少一些) | 2c4g | 2c8g |
100w 组向量 | 4c8g 50GB | 4c16g 50GB |
500w 组向量 | 8c32g 200GB | 16c64g 200GB |
Milvus版本 link
对于亿级以上向量性能更优秀。
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c8g | 4c16g |
100w 组向量 | 未测试 | |
500w 组向量 |
zilliz cloud版本 link
Milvus 的全托管服务,性能优于 Milvus 并提供 SLA,点击使用 Zilliz Cloud。
由于向量库使用了 Cloud,无需占用本地资源,无需太关注。
前置工作 link
1. 确保网络环境 link
如果使用OpenAI
等国外模型接口,请确保可以正常访问,否则会报错:Connection error
等。 方案可以参考:代理方案
2. 准备 Docker 环境 link
# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
@@ -47,9 +47,9 @@
docker -v
docker-compose -v
# 如失效,自行百度~
-
推荐直接使用 Orbstack。可直接通过 Homebrew 来安装:
+
我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
也可以直接在 WSL 2 中安装命令行版本的 Docker。
开始部署 link
1. 下载 docker-compose.yml link
非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载配置文件和对应版本的docker-compose.yml
,在这个文件夹中依据下载的配置文件运行docker,若作为本地开发使用推荐docker-compose-pgvector
版本,并且自行拉取并运行sandbox
和fastgpt
,并在docker配置文件中注释掉sandbox
和fastgpt
的部分
- config.json
- docker-compose.yml (注意,不同向量库版本的文件不一样)
🤖
所有 docker-compose.yml
配置文件中 MongoDB
为 5.x,需要用到AVX指令集,部分 CPU 不支持,需手动更改其镜像版本为 4.4.24**(需要自己在docker hub下载,阿里云镜像没做备份)
Linux 快速脚本
+
或者直接下载安装包进行安装。
我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
也可以直接在 WSL 2 中安装命令行版本的 Docker。
开始部署 link
1. 下载 docker-compose.yml link
非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载配置文件和对应版本的docker-compose.yml
,在这个文件夹中依据下载的配置文件运行docker,若作为本地开发使用推荐docker-compose-pgvector
版本,并且自行拉取并运行sandbox
和fastgpt
,并在docker配置文件中注释掉sandbox
和fastgpt
的部分
- config.json
- docker-compose.yml (注意,不同向量库版本的文件不一样)
🤖
所有 docker-compose.yml
配置文件中 MongoDB
为 5.x,需要用到AVX指令集,部分 CPU 不支持,需手动更改其镜像版本为 4.4.24**(需要自己在docker hub下载,阿里云镜像没做备份)
Linux 快速脚本
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
@@ -60,13 +60,13 @@
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-milvus.yml
# zilliz 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-zilliz.yml
-
2. 修改环境变量 link
找到 yml 文件中,fastgpt 容器的环境变量进行下面操作:
+
2. 修改环境变量 link
找到 yml 文件中,fastgpt 容器的环境变量进行下面操作:
FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;https://cloud.fastgpt.cn
-
+
FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;https://cloud.fastgpt.cn
-
打开 Zilliz Cloud, 创建实例并获取相关秘钥。
🤖
- 修改
MILVUS_ADDRESS
和MILVUS_TOKEN
链接参数,分别对应zilliz
的Public Endpoint
和Api key
,记得把自己ip加入白名单。 - 修改FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;https://cloud.fastgpt.cn
3. 启动容器 link
在 docker-compose.yml 同级目录下执行。请确保docker-compose
版本最好在2.17以上,否则可能无法执行自动化命令。
+
打开 Zilliz Cloud, 创建实例并获取相关秘钥。
🤖
- 修改
MILVUS_ADDRESS
和MILVUS_TOKEN
链接参数,分别对应zilliz
的Public Endpoint
和Api key
,记得把自己ip加入白名单。 - 修改FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;https://cloud.fastgpt.cn
3. 启动容器 link
在 docker-compose.yml 同级目录下执行。请确保docker-compose
版本最好在2.17以上,否则可能无法执行自动化命令。
# 启动容器
docker-compose up -d
# 等待10s,OneAPI第一次总是要重启几次才能连上Mysql
diff --git a/docs/development/faq/index.html b/docs/development/faq/index.html
index 4233827a7222..cd6d2aa3e681 100644
--- a/docs/development/faq/index.html
+++ b/docs/development/faq/index.html
@@ -35,11 +35,11 @@
私有部署常见问题
FastGPT 私有部署常见问题
一、错误排查方式 link
遇到问题先按下面方式排查。
docker ps -a
查看所有容器运行状态,检查是否全部 running,如有异常,尝试docker logs 容器名
查看对应日志。- 容器都运行正常的,
docker logs 容器名
查看报错日志 - 带有
requestId
的,都是 OneAPI 提示错误,大部分都是因为模型接口报错。 - 无法解决时,可以找找Issue,或新提 Issue,私有部署错误,务必提供详细的日志,否则很难排查。
二、通用问题 link
本地部署的限制 link
具体内容参考https://fael3z0zfze.feishu.cn/wiki/OFpAw8XzAi36Guk8dfucrCKUnjg。
能否纯本地运行 link
可以。需要准备好向量模型和LLM模型。
其他模型没法进行问题分类/内容提取 link
- 看日志。如果提示 JSON invalid,not support tool 之类的,说明该模型不支持工具调用或函数调用,需要设置
toolChoice=false
和functionCall=false
,就会默认走提示词模式。目前内置提示词仅针对了商业模型API进行测试。问题分类基本可用,内容提取不太行。 - 如果已经配置正常,并且没有错误日志,则说明可能提示词不太适合该模型,可以通过修改
customCQPrompt
来自定义提示词。
页面崩溃 link
- 关闭翻译
- 检查配置文件是否正常加载,如果没有正常加载会导致缺失系统信息,在某些操作下会导致空指针。
- 95%情况是配置文件不对。会提示 xxx undefined
- 提示
URI malformed
,请 Issue 反馈具体操作和页面,这是由于特殊字符串编码解析报错。
- 某些api不兼容问题(较少)
开启内容补全后,响应速度变慢 link
- 问题补全需要经过一轮AI生成。
- 会进行3~5轮的查询,如果数据库性能不足,会有明显影响。
页面中可以正常回复,API 报错 link
页面中是用 stream=true 模式,所以API也需要设置 stream=true 来进行测试。部分模型接口(国产居多)非 Stream 的兼容有点垃圾。 -和上一个问题一样,curl 测试。
知识库索引没有进度/索引很慢 link
先看日志报错信息。有以下几种情况:
- 可以对话,但是索引没有进度:没有配置向量模型(vectorModels)
- 不能对话,也不能索引:API调用失败。可能是没连上OneAPI或OpenAI
- 有进度,但是非常慢:api key不行,OpenAI的免费号,一分钟只有3次还是60次。一天上限200次。
Connection error link
网络异常。国内服务器无法请求OpenAI,自行检查与AI模型的连接是否正常。
或者是FastGPT请求不到 OneAPI(没放同一个网络)
修改了 vectorModels 但是没有生效 link
- 重启容器,确保模型配置已经加载(可以在日志或者新建知识库时候看到新模型)
- 记得刷新一次浏览器。
- 如果是已经创建的知识库,需要删除重建。向量模型是创建时候绑定的,不会动态更新。
三、常见的 OneAPI 错误 link
带有 requestId 的都是 OneAPI 的报错。
insufficient_user_quota user quota is not enough link
OneAPI 账号的余额不足,默认 root 用户只有 200 刀,可以手动修改。
路径:打开OneAPI -> 用户 -> root用户右边的编辑 -> 剩余余额调大
xxx渠道找不到 link
FastGPT 模型配置文件中的 model 必须与 OneAPI 渠道中的模型对应上,否则就会提示这个错误。可检查下面内容:
- OneAPI 中没有配置该模型渠道,或者被禁用了。
- FastGPT 配置文件有 OneAPI 没有配置的模型。如果 OneAPI 没有配置对应模型的,配置文件中也不要写。
- 使用旧的向量模型创建了知识库,后又更新了向量模型。这时候需要删除以前的知识库,重建。
如果OneAPI中,没有配置对应的模型,config.json
中也不要配置,否则容易报错。
点击模型测试失败 link
OneAPI 只会测试渠道的第一个模型,并且只会测试对话模型,向量模型无法自动测试,需要手动发起请求进行测试。查看测试模型命令示例
get request url failed: Post “https://xxx dial tcp: xxxx link
OneAPI 与模型网络不通,需要检查网络配置。
Incorrect API key provided: sk-xxxx.You can find your api Key at xxx link
OneAPI 的 API Key 配置错误,需要修改OPENAI_API_KEY
环境变量,并重启容器(先 docker-compose down 然后再 docker-compose up -d 运行一次)。
可以exec
进入容器,env
查看环境变量是否生效。
bad_response_status_code bad response status code 503 link
- 模型服务不可用
- 模型接口参数异常(温度、max token等可能不适配)
- ….
四、常见模型问题 link
如何检查模型问题 link
- 私有部署模型,先确认部署的模型是否正常。
- 通过 CURL 请求,直接测试上游模型是否正常运行(云端模型或私有模型均进行测试)
- 通过 CURL 请求,请求 OneAPI 去测试模型是否正常。
- 在 FastGPT 中使用该模型进行测试。
下面是几个测试 CURL 示例:
+和上一个问题一样,curl 测试。知识库索引没有进度/索引很慢 link
先看日志报错信息。有以下几种情况:
- 可以对话,但是索引没有进度:没有配置向量模型(vectorModels)
- 不能对话,也不能索引:API调用失败。可能是没连上OneAPI或OpenAI
- 有进度,但是非常慢:api key不行,OpenAI的免费号,一分钟只有3次还是60次。一天上限200次。
Connection error link
网络异常。国内服务器无法请求OpenAI,自行检查与AI模型的连接是否正常。
或者是FastGPT请求不到 OneAPI(没放同一个网络)
修改了 vectorModels 但是没有生效 link
- 重启容器,确保模型配置已经加载(可以在日志或者新建知识库时候看到新模型)
- 记得刷新一次浏览器。
- 如果是已经创建的知识库,需要删除重建。向量模型是创建时候绑定的,不会动态更新。
三、常见的 OneAPI 错误 link
带有 requestId 的都是 OneAPI 的报错。
insufficient_user_quota user quota is not enough link
OneAPI 账号的余额不足,默认 root 用户只有 200 刀,可以手动修改。
路径:打开OneAPI -> 用户 -> root用户右边的编辑 -> 剩余余额调大
xxx渠道找不到 link
FastGPT 模型配置文件中的 model 必须与 OneAPI 渠道中的模型对应上,否则就会提示这个错误。可检查下面内容:
- OneAPI 中没有配置该模型渠道,或者被禁用了。
- FastGPT 配置文件有 OneAPI 没有配置的模型。如果 OneAPI 没有配置对应模型的,配置文件中也不要写。
- 使用旧的向量模型创建了知识库,后又更新了向量模型。这时候需要删除以前的知识库,重建。
如果OneAPI中,没有配置对应的模型,
config.json
中也不要配置,否则容易报错。点击模型测试失败 link
OneAPI 只会测试渠道的第一个模型,并且只会测试对话模型,向量模型无法自动测试,需要手动发起请求进行测试。查看测试模型命令示例
get request url failed: Post “https://xxx dial tcp: xxxx link
OneAPI 与模型网络不通,需要检查网络配置。
Incorrect API key provided: sk-xxxx.You can find your api Key at xxx link
OneAPI 的 API Key 配置错误,需要修改
OPENAI_API_KEY
环境变量,并重启容器(先 docker-compose down 然后再 docker-compose up -d 运行一次)。可以
exec
进入容器,env
查看环境变量是否生效。bad_response_status_code bad response status code 503 link
- 模型服务不可用
- 模型接口参数异常(温度、max token等可能不适配)
- ….
四、常见模型问题 link
如何检查模型问题 link
- 私有部署模型,先确认部署的模型是否正常。
- 通过 CURL 请求,直接测试上游模型是否正常运行(云端模型或私有模型均进行测试)
- 通过 CURL 请求,请求 OneAPI 去测试模型是否正常。
- 在 FastGPT 中使用该模型进行测试。
下面是几个测试 CURL 示例:
curl https://api.openai.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ @@ -56,7 +56,7 @@ } ] }'
-+curl https://api.openai.com/v1/embeddings \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ @@ -65,7 +65,7 @@ "model": "text-embedding-ada-002", "encoding_format": "float" }'
-+curl --location --request POST 'https://xxxx.com/api/v1/rerank' \ --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \ --header 'Content-Type: application/json' \ @@ -76,7 +76,7 @@ "你是谁?\n我是电影《铃芽之旅》助手" ] }'
-+curl https://api.openai.com/v1/audio/speech \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ @@ -86,7 +86,7 @@ "voice": "alloy" }' \ --output speech.mp3
-+curl https://api.openai.com/v1/audio/transcriptions \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: multipart/form-data" \ diff --git a/docs/development/index.xml b/docs/development/index.xml index 147ecb5b4ca0..52a4277bd3c4 100644 --- a/docs/development/index.xml +++ b/docs/development/index.xml @@ -22,8 +22,8 @@ projects 目录下为 FastGPT 应用代码。其中 app 为 FastGPT 核心应用 MongoDB:用于存储除了向量外的各类数据 PostgreSQL/Milvus:存储向量数据 OneAPI: 聚合各类 AI API,支持多模型调用 (任何模型问题,先自行通过 OneAPI 测试校验) -推荐配置 linkPgVector版本 link体验测试首选 -环境 最低配置(单节点) 推荐配置 测试 2c2g 2c4g 100w 组向量 4c8g 50GB 4c16g 50GB 500w 组向量 8c32g 200GB 16c64g 200GB Milvus版本 link生产部署首选,对于千万级以上向量性能更优秀。 +推荐配置 linkPgVector版本 link非常轻量,适合数据量在 5000 万以下。 +环境 最低配置(单节点) 推荐配置 测试(可以把计算进程设置少一些) 2c4g 2c8g 100w 组向量 4c8g 50GB 4c16g 50GB 500w 组向量 8c32g 200GB 16c64g 200GB Milvus版本 link对于亿级以上向量性能更优秀。 点击查看 Milvus 官方推荐配置 环境 最低配置(单节点) 推荐配置 测试 2c8g 4c16g 100w 组向量 未测试 500w 组向量 zilliz cloud版本 linkMilvus 的全托管服务,性能优于 Milvus 并提供 SLA,点击使用 Zilliz Cloud。 由于向量库使用了 Cloud,无需占用本地资源,无需太关注。 diff --git a/docs/development/openapi/chat/index.html b/docs/development/openapi/chat/index.html index ee05e448f85f..b712ec7c5fc2 100644 --- a/docs/development/openapi/chat/index.html +++ b/docs/development/openapi/chat/index.html @@ -34,9 +34,9 @@ menu
对话接口chat对话接口
FastGPT OpenAPI 对话接口
发起对话 link
🤖
该接口的 API Key 需使用
应用特定的 key
,否则会报错。有些包调用时,
BaseUrl
需要添加v1
路径,有些不需要,如果出现404情况,可补充v1
重试。请求简易应用和工作流 link
对话接口兼容
GPT
的接口!如果你的项目使用的是标准的GPT
官方接口,可以直接通过修改BaseUrl
和Authorization
来访问 FastGpt 应用,不过需要注意下面几个规则:🤖
传入的
model
,temperature
等参数字段均无效,这些字段由编排决定,不会根据 API 参数改变。不会返回实际消耗
Token
值,如果需要,可以设置detail=true
,并手动计算responseData
里的tokens
值。请求 link
+Table of Contentschat对话接口
FastGPT OpenAPI 对话接口
发起对话 link
🤖
该接口的 API Key 需使用
应用特定的 key
,否则会报错。有些包调用时,
BaseUrl
需要添加v1
路径,有些不需要,如果出现404情况,可补充v1
重试。请求简易应用和工作流 link
对话接口兼容
GPT
的接口!如果你的项目使用的是标准的GPT
官方接口,可以直接通过修改BaseUrl
和Authorization
来访问 FastGpt 应用,不过需要注意下面几个规则:🤖
传入的
model
,temperature
等参数字段均无效,这些字段由编排决定,不会根据 API 参数改变。不会返回实际消耗
Token
值,如果需要,可以设置detail=true
,并手动计算responseData
里的tokens
值。请求 link
curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ --header 'Authorization: Bearer fastgpt-xxxxxx' \ --header 'Content-Type: application/json' \ @@ -56,7 +56,7 @@ } ] }'
-
- 仅
messages
有部分区别,其他参数一致。- 目前不支持上次文件,需上传到自己的对象存储中,获取对应的文件链接。
+
- 仅
messages
有部分区别,其他参数一致。- 目前不支持上次文件,需上传到自己的对象存储中,获取对应的文件链接。
curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ --header 'Authorization: Bearer fastgpt-xxxxxx' \ --header 'Content-Type: application/json' \ @@ -86,11 +86,11 @@ } ] }'
-info
- headers.Authorization: Bearer {{apikey}}
- chatId: string | undefined 。
- 为
undefined
时(不传入),不使用 FastGpt 提供的上下文功能,完全通过传入的 messages 构建上下文。 不会将你的记录存储到数据库中,你也无法在记录汇总中查阅到。- 为
非空字符串
时,意味着使用 chatId 进行对话,自动从 FastGpt 数据库取历史记录,并使用 messages 数组最后一个内容作为用户问题。请自行确保 chatId 唯一,长度小于250,通常可以是自己系统的对话框ID。- messages: 结构与 GPT接口 chat模式一致。
- responseChatItemId: string | undefined 。如果传入,则会将该值作为本次对话的响应消息的 ID,FastGPT 会自动将该 ID 存入数据库。请确保,在当前
chatId
下,responseChatItemId
是唯一的。- detail: 是否返回中间值(模块状态,响应的完整结果等),
stream模式
下会通过event
进行区分,非stream模式
结果保存在responseData
中。- variables: 模块变量,一个对象,会替换模块中,输入框内容里的
{{key}}
响应 link
+info
- headers.Authorization: Bearer {{apikey}}
- chatId: string | undefined 。
- 为
undefined
时(不传入),不使用 FastGpt 提供的上下文功能,完全通过传入的 messages 构建上下文。 不会将你的记录存储到数据库中,你也无法在记录汇总中查阅到。- 为
非空字符串
时,意味着使用 chatId 进行对话,自动从 FastGpt 数据库取历史记录,并使用 messages 数组最后一个内容作为用户问题。请自行确保 chatId 唯一,长度小于250,通常可以是自己系统的对话框ID。- messages: 结构与 GPT接口 chat模式一致。
- responseChatItemId: string | undefined 。如果传入,则会将该值作为本次对话的响应消息的 ID,FastGPT 会自动将该 ID 存入数据库。请确保,在当前
chatId
下,responseChatItemId
是唯一的。- detail: 是否返回中间值(模块状态,响应的完整结果等),
stream模式
下会通过event
进行区分,非stream模式
结果保存在responseData
中。- variables: 模块变量,一个对象,会替换模块中,输入框内容里的
{{key}}
响应 link
{ "id": "adsfasf", "model": "", @@ -110,7 +110,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}]} @@ -118,7 +118,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 自行查看最新值。 { @@ -202,7 +202,7 @@ } ] }
-+event: flowNodeStatus data: {"status":"running","name":"知识库搜索"} @@ -232,8 +232,8 @@ event: flowResponses data: [{"moduleName":"知识库搜索","moduleType":"datasetSearchNode","runningTime":1.78},{"question":"导演是谁","quoteList":[{"id":"654f2e49b64caef1d9431e8b","q":"电影《铃芽之旅》的导演是谁?","a":"电影《铃芽之旅》的导演是新海诚!","indexes":[{"type":"qa","dataId":"3515487","text":"电影《铃芽之旅》的导演是谁?","_id":"654f2e49b64caef1d9431e8c","defaultIndex":true}],"datasetId":"646627f4f7b896cfd8910e38","collectionId":"653279b16cd42ab509e766e8","sourceName":"data (81).csv","sourceId":"64fd3b6423aa1307b65896f6","score":0.8935586214065552},{"id":"6552e14c50f4a2a8e632af11","q":"导演是谁?","a":"电影《铃芽之旅》的导演是新海诚。","indexes":[{"defaultIndex":true,"type":"qa","dataId":"3644565","text":"导演是谁?\n电影《铃芽之旅》的导演是新海诚。","_id":"6552e14dde5cc7ba3954e417"}],"datasetId":"646627f4f7b896cfd8910e38","collectionId":"653279b16cd42ab509e766e8","sourceName":"data (81).csv","sourceId":"64fd3b6423aa1307b65896f6","score":0.8890955448150635},{"id":"654f34a0b64caef1d946337e","q":"本作的主人公是谁?","a":"本作的主人公是名叫铃芽的少女。","indexes":[{"type":"qa","dataId":"3515541","text":"本作的主人公是谁?","_id":"654f34a0b64caef1d946337f","defaultIndex":true}],"datasetId":"646627f4f7b896cfd8910e38","collectionId":"653279b16cd42ab509e766e8","sourceName":"data (81).csv","sourceId":"64fd3b6423aa1307b65896f6","score":0.8738770484924316},{"id":"654f3002b64caef1d944207a","q":"电影《铃芽之旅》男主角是谁?","a":"电影《铃芽之旅》男主角是宗像草太,由松村北斗配音。","indexes":[{"type":"qa","dataId":"3515538","text":"电影《铃芽之旅》男主角是谁?","_id":"654f3002b64caef1d944207b","defaultIndex":true}],"datasetId":"646627f4f7b896cfd8910e38","collectionId":"653279b16cd42ab509e766e8","sourceName":"data (81).csv","sourceId":"64fd3b6423aa1307b65896f6","score":0.8607980012893677},{"id":"654f2fc8b64caef1d943fd46","q":"电影《铃芽之旅》的编剧是谁?","a":"新海诚是本片的编剧。","indexes":[{"defaultIndex":true,"type":"qa","dataId":"3515550","text":"电影《铃芽之旅》的编剧是谁?22","_id":"654f2fc8b64caef1d943fd47"}],"datasetId":"646627f4f7b896cfd8910e38","collectionId":"653279b16cd42ab509e766e8","sourceName":"data (81).csv","sourceId":"64fd3b6423aa1307b65896f6","score":0.8468944430351257}],"moduleName":"AI 对话","moduleType":"chatNode","runningTime":1.86}]
-event取值:
- answer: 返回给客户端的文本(最终会算作回答)
- fastAnswer: 指定回复返回给客户端的文本(最终会算作回答)
- toolCall: 执行工具
- toolParams: 工具参数
- toolResponse: 工具返回
- flowNodeStatus: 运行到的节点状态
- flowResponses: 节点完整响应
- updateVariables: 更新变量
- error: 报错
交互节点响应 link
如果工作流中包含交互节点,依然是调用该 API 接口,需要设置
detail=true
,并可以从event=interactive
的数据中获取交互节点的配置信息。如果是stream=false
,则可以从 choice 中获取type=interactive
的元素,获取交互节点的选择信息。当你调用一个带交互节点的工作流时,如果工作流遇到了交互节点,那么会直接返回,你可以得到下面的信息:
+event取值:
- answer: 返回给客户端的文本(最终会算作回答)
- fastAnswer: 指定回复返回给客户端的文本(最终会算作回答)
- toolCall: 执行工具
- toolParams: 工具参数
- toolResponse: 工具返回
- flowNodeStatus: 运行到的节点状态
- flowResponses: 节点完整响应
- updateVariables: 更新变量
- error: 报错
交互节点响应 link
如果工作流中包含交互节点,依然是调用该 API 接口,需要设置
detail=true
,并可以从event=interactive
的数据中获取交互节点的配置信息。如果是stream=false
,则可以从 choice 中获取type=interactive
的元素,获取交互节点的选择信息。当你调用一个带交互节点的工作流时,如果工作流遇到了交互节点,那么会直接返回,你可以得到下面的信息:
{ "interactive": { "type": "userSelect", @@ -252,7 +252,7 @@ } } }
-+{ "interactive": { "type": "userInput", @@ -295,8 +295,8 @@ } } }
-交互节点继续运行 link
紧接着上一节,当你接收到交互节点信息后,可以根据这些数据进行 UI 渲染,引导用户输入或选择相关信息。然后需要再次发起对话,来继续工作流。调用的接口与仍是该接口,你需要按以下格式来发起请求:
对于用户选择,你只需要直接传递一个选择的结果给 messages 即可。
+交互节点继续运行 link
紧接着上一节,当你接收到交互节点信息后,可以根据这些数据进行 UI 渲染,引导用户输入或选择相关信息。然后需要再次发起对话,来继续工作流。调用的接口与仍是该接口,你需要按以下格式来发起请求:
对于用户选择,你只需要直接传递一个选择的结果给 messages 即可。
curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \ --header 'Authorization: Bearer fastgpt-xxx' \ --header 'Content-Type: application/json' \ @@ -311,7 +311,7 @@ } ] }'
-表单输入稍微麻烦一点,需要将输入的内容,以对象形式并序列化成字符串,作为
messages
的值。对象的 key 对应表单的 key,value 为用户输入的值。务必确保chatId
是一致的。+表单输入稍微麻烦一点,需要将输入的内容,以对象形式并序列化成字符串,作为
messages
的值。对象的 key 对应表单的 key,value 为用户输入的值。务必确保chatId
是一致的。curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \ --header 'Authorization: Bearer fastgpt-xxxx' \ --header 'Content-Type: application/json' \ @@ -337,9 +337,9 @@ "query":"你好" # 我的插件输入有一个参数,变量名叫 query } }'
-响应示例 link
- 插件的输出可以通过查找
responseData
中,moduleType=pluginOutput
的元素,其pluginOutput
是插件的输出。- 流输出,仍可以通过
choices
进行获取。+响应示例 link
- 插件的输出可以通过查找
responseData
中,moduleType=pluginOutput
的元素,其pluginOutput
是插件的输出。- 流输出,仍可以通过
choices
进行获取。{ "responseData": [ { @@ -396,7 +396,7 @@ } ] }
-
- 插件的输出可以通过获取
event=flowResponses
中的字符串,并将其反序列化后得到一个数组。同样的,查找moduleType=pluginOutput
的元素,其pluginOutput
是插件的输出。- 流输出,仍和对话接口一样获取。
+
- 插件的输出可以通过获取
event=flowResponses
中的字符串,并将其反序列化后得到一个数组。同样的,查找moduleType=pluginOutput
的元素,其pluginOutput
是插件的输出。- 流输出,仍和对话接口一样获取。
event: flowNodeStatus data: {"status":"running","name":"AI 对话"} @@ -453,9 +453,9 @@ event: flowResponses data: [{"nodeId":"fdDgXQ6SYn8v","moduleName":"AI 对话","moduleType":"chatNode","totalPoints":0.033,"model":"FastAI-3.5","tokens":33,"query":"你好","maxToken":2000,"historyPreview":[{"obj":"Human","value":"你好"},{"obj":"AI","value":"你好!有什么可以帮助你的吗?"}],"contextTotalLen":2,"runningTime":1.42},{"nodeId":"pluginOutput","moduleName":"插件输出","moduleType":"pluginOutput","totalPoints":0,"pluginOutput":{"result":"你好!有什么可以帮助你的吗?"},"runningTime":0}]
-event取值:
- answer: 返回给客户端的文本(最终会算作回答)
- fastAnswer: 指定回复返回给客户端的文本(最终会算作回答)
- toolCall: 执行工具
- toolParams: 工具参数
- toolResponse: 工具返回
- flowNodeStatus: 运行到的节点状态
- flowResponses: 节点完整响应
- updateVariables: 更新变量
- error: 报错
对话 CRUD link
🤖
以下接口可使用任意
API Key
调用。4.8.12 以上版本才能使用
重要字段
- chatId - 指一个应用下,某一个对话窗口的 ID
- dataId - 指一个对话窗口下,某一个对话记录的 ID
历史记录 link
获取某个应用历史记录 link
+event取值:
- answer: 返回给客户端的文本(最终会算作回答)
- fastAnswer: 指定回复返回给客户端的文本(最终会算作回答)
- toolCall: 执行工具
- toolParams: 工具参数
- toolResponse: 工具返回
- flowNodeStatus: 运行到的节点状态
- flowResponses: 节点完整响应
- updateVariables: 更新变量
- error: 报错
对话 CRUD link
🤖
以下接口可使用任意
API Key
调用。4.8.12 以上版本才能使用
重要字段
- chatId - 指一个应用下,某一个对话窗口的 ID
- dataId - 指一个对话窗口下,某一个对话记录的 ID
历史记录 link
获取某个应用历史记录 link
curl --location --request POST 'http://localhost:3000/api/core/chat/getHistories' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -465,7 +465,7 @@ "pageSize": 20, "source: "api" }'
-
- appId - 应用 Id
- offset - 偏移量,即从第几条数据开始取
- pageSize - 记录数量
- source - 对话源
+
- appId - 应用 Id
- offset - 偏移量,即从第几条数据开始取
- pageSize - 记录数量
- source - 对话源
{ "code": 200, "statusText": "", @@ -492,9 +492,9 @@ "total": 2 } }
-修改某个对话的标题 link
+修改某个对话的标题 link
curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistory' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -503,16 +503,16 @@ "chatId": "chatId", "customTitle": "自定义标题" }'
-
- appId - 应用 Id
- chatId - 历史记录 Id
- customTitle - 自定义对话名
+
- appId - 应用 Id
- chatId - 历史记录 Id
- customTitle - 自定义对话名
{ "code": 200, "statusText": "", "message": "", "data": null }
-置顶 / 取消置顶 link
+置顶 / 取消置顶 link
curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistory' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -521,43 +521,43 @@ "chatId": "chatId", "top": true }'
-
- appId - 应用Id
- chatId - 历史记录 Id
- top - 是否置顶,ture 置顶,false 取消置顶
+
- appId - 应用Id
- chatId - 历史记录 Id
- top - 是否置顶,ture 置顶,false 取消置顶
{ "code": 200, "statusText": "", "message": "", "data": null }
-删除某个历史记录 link
+删除某个历史记录 link
curl --location --request DELETE 'http://localhost:3000/api/core/chat/delHistory?chatId={{chatId}}&appId={{appId}}' \ --header 'Authorization: Bearer {{apikey}}'
-
- appId - 应用 Id
- chatId - 历史记录 Id
+
- appId - 应用 Id
- chatId - 历史记录 Id
{ "code": 200, "statusText": "", "message": "", "data": null }
-清空所有历史记录 link
仅会情况通过 API Key 创建的对话历史记录,不会清空在线使用、分享链接等其他来源的对话历史记录。
+清空所有历史记录 link
仅会情况通过 API Key 创建的对话历史记录,不会清空在线使用、分享链接等其他来源的对话历史记录。
curl --location --request DELETE 'http://localhost:3000/api/core/chat/clearHistories?appId={{appId}}' \ --header 'Authorization: Bearer {{apikey}}'
-
- appId - 应用 Id
+
- appId - 应用 Id
{ "code": 200, "statusText": "", "message": "", "data": null }
-对话记录 link
指的是某个 chatId 下的对话记录操作。
获取单个对话初始化信息 link
+对话记录 link
指的是某个 chatId 下的对话记录操作。
获取单个对话初始化信息 link
curl --location --request GET 'http://localhost:3000/api/core/chat/init?appId={{appId}}&chatId={{chatId}}' \ --header 'Authorization: Bearer {{apikey}}'
-
- appId - 应用 Id
- chatId - 历史记录 Id
+
- appId - 应用 Id
- chatId - 历史记录 Id
{ "code": 200, "statusText": "", @@ -611,9 +611,9 @@ } } }
-获取对话记录列表 link
+获取对话记录列表 link
curl --location --request POST 'http://localhost:3000/api/core/chat/getPaginationRecords' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -624,7 +624,7 @@ "pageSize": 10, "loadCustomFeedbacks": true }'
-
- appId - 应用 Id
- chatId - 历史记录 Id
- offset - 偏移量
- pageSize - 记录数量
- loadCustomFeedbacks - 是否读取自定义反馈(可选)
+
- appId - 应用 Id
- chatId - 历史记录 Id
- offset - 偏移量
- pageSize - 记录数量
- loadCustomFeedbacks - 是否读取自定义反馈(可选)
{ "code": 200, "statusText": "", @@ -673,12 +673,12 @@ "total": 2 } }
-获取单个对话记录运行详情 link
+获取单个对话记录运行详情 link
curl --location --request GET 'http://localhost:3000/api/core/chat/getResData?appId={{appId}}&chatId={{chatId}}&dataId={{dataId}}' \ --header 'Authorization: Bearer {{apikey}}'
-
- appId - 应用 Id
- chatId - 对话 Id
- dataId - 对话记录 Id
+
- appId - 应用 Id
- chatId - 对话 Id
- dataId - 对话记录 Id
{ "code": 200, "statusText": "", @@ -724,21 +724,21 @@ } ] }
-删除对话记录 link
+删除对话记录 link
curl --location --request DELETE 'http://localhost:3000/api/core/chat/item/delete?contentId={{contentId}}&chatId={{chatId}}&appId={{appId}}' \ --header 'Authorization: Bearer {{apikey}}'
-
- appId - 应用 Id
- chatId - 历史记录 Id
- contentId - 对话记录 Id
+
- appId - 应用 Id
- chatId - 历史记录 Id
- contentId - 对话记录 Id
{ "code": 200, "statusText": "", "message": "", "data": null }
-点赞 / 取消点赞 link
+点赞 / 取消点赞 link
curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/updateUserFeedback' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -748,16 +748,16 @@ "dataId": "dataId", "userGoodFeedback": "yes" }'
-
- appId - 应用 Id
- chatId - 历史记录 Id
- dataId - 对话记录 Id
- userGoodFeedback - 用户点赞时的信息(可选),取消点赞时不填此参数即可
+
- appId - 应用 Id
- chatId - 历史记录 Id
- dataId - 对话记录 Id
- userGoodFeedback - 用户点赞时的信息(可选),取消点赞时不填此参数即可
{ "code": 200, "statusText": "", "message": "", "data": null }
-点踩 / 取消点踩 link
+点踩 / 取消点踩 link
curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/updateUserFeedback' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -767,16 +767,16 @@ "dataId": "dataId", "userBadFeedback": "yes" }'
-
- appId - 应用 Id
- chatId - 历史记录 Id
- dataId - 对话记录 Id
- userBadFeedback - 用户点踩时的信息(可选),取消点踩时不填此参数即可
+
- appId - 应用 Id
- chatId - 历史记录 Id
- dataId - 对话记录 Id
- userBadFeedback - 用户点踩时的信息(可选),取消点踩时不填此参数即可
{ "code": 200, "statusText": "", "message": "", "data": null }
-猜你想问 link
4.8.16 后新版接口
新版猜你想问,必须包含 appId 和 chatId 的参数才可以进行使用。会自动根据 chatId 去拉取最近 6 轮对话记录作为上下文来引导回答。
+猜你想问 link
4.8.16 后新版接口
新版猜你想问,必须包含 appId 和 chatId 的参数才可以进行使用。会自动根据 chatId 去拉取最近 6 轮对话记录作为上下文来引导回答。
curl --location --request POST 'http://localhost:3000/api/core/ai/agent/v2/createQuestionGuide' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -789,7 +789,7 @@ "customPrompt": "你是一个智能助手,请根据用户的问题生成猜你想问。" } }'
-
参数名 类型 必填 说明 appId string ✅ 应用 Id chatId string ✅ 对话 Id questionGuide object 自定义配置,不传的话,则会根据 appId,取最新发布版本的配置 +
参数名 类型 必填 说明 appId string ✅ 应用 Id chatId string ✅ 对话 Id questionGuide object 自定义配置,不传的话,则会根据 appId,取最新发布版本的配置 type CreateQuestionGuideParams = OutLinkChatAuthProps & { appId: string; chatId: string; @@ -799,7 +799,7 @@ customPrompt?: string; }; };
-+{ "code": 200, "statusText": "", @@ -810,9 +810,9 @@ "你希望AI能做什么?" ] }
-4.8.16 前旧版接口:
+4.8.16 前旧版接口:
curl --location --request POST 'http://localhost:3000/api/core/ai/agent/createQuestionGuide' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -828,7 +828,7 @@ } ] }'
-
- messages - 对话消息,提供给 AI 的消息记录
+
- messages - 对话消息,提供给 AI 的消息记录
知识库接口dataset知识库接口
FastGPT OpenAPI 知识库接口
如何获取知识库ID(datasetId) 如何获取文件集合ID(collection_id) 创建训练订单 link
新例子
+Table of Contentsdataset知识库接口
FastGPT OpenAPI 知识库接口
如何获取知识库ID(datasetId) 如何获取文件集合ID(collection_id) 创建训练订单 link
新例子
curl --location --request POST 'http://localhost:3000/api/support/wallet/usage/createTrainingUsage' \ --header 'Authorization: Bearer {{apikey}}' \ --header 'Content-Type: application/json' \ @@ -43,16 +43,16 @@ "datasetId": "知识库 ID", "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' \ @@ -65,23 +65,23 @@ "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 POST 'http://localhost:3000/api/core/dataset/list?parentId=' \ --header 'Authorization: Bearer xxxx' \ --header 'Content-Type: application/json' \ --data-raw '{ "parentId":"" }'
-
- parentId - 父级ID,传空字符串或者null,代表获取根目录下的知识库
+
- parentId - 父级ID,传空字符串或者null,代表获取根目录下的知识库
{ "code": 200, "statusText": "", @@ -108,12 +108,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": "", @@ -149,21 +149,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
入参
参数 说明 必填 datasetId 知识库ID ✅ parentId: 父级ID,不填则默认为根目录 trainingType 训练模式。chunk: 按文本长度进行分割;qa: QA拆分;auto: 增强训练 ✅ chunkSize 预估块大小 chunkSplitter 自定义最高优先分割符号 qaPrompt qa拆分提示词 tags 集合标签(字符串数组) createTime 文件创建时间(Date / String) 出参
- collectionId - 新建的集合ID
- insertLen:插入的块数量
创建一个空的集合 link
+集合 link
通用创建参数说明 link
入参
参数 说明 必填 datasetId 知识库ID ✅ parentId: 父级ID,不填则默认为根目录 trainingType 训练模式。chunk: 按文本长度进行分割;qa: QA拆分;auto: 增强训练 ✅ chunkSize 预估块大小 chunkSplitter 自定义最高优先分割符号 qaPrompt qa拆分提示词 tags 集合标签(字符串数组) createTime 文件创建时间(Date / String) 出参
- collectionId - 新建的集合ID
- insertLen:插入的块数量
创建一个空的集合 link
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/create' \ --header 'Authorization: Bearer {{authorization}}' \ --header 'Content-Type: application/json' \ @@ -176,16 +176,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' \ @@ -202,7 +202,7 @@ "metadata":{} }'
-
- text: 原文本
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- name: 集合名称(必填)
- metadata: 元数据(暂时没啥用)
- trainingType: 训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
+
- text: 原文本
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- name: 集合名称(必填)
- metadata: 元数据(暂时没啥用)
- trainingType: 训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{ "code": 200, "statusText": "", @@ -217,9 +217,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' \ @@ -237,7 +237,7 @@ "webPageSelector":".docs-content" } }'
-
- link: 网络链接
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- metadata.webPageSelector: 网页选择器,用于指定网页中的哪个元素作为文本(可选)
- trainingType:训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
+
- link: 网络链接
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- metadata.webPageSelector: 网页选择器,用于指定网页中的哪个元素作为文本(可选)
- trainingType:训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{ "code": 200, "statusText": "", @@ -252,14 +252,14 @@ } } }
-创建一个文件集合 link
传入一个文件,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。
使用代码上传时,请注意中文 filename 需要进行 encode 处理,否则容易乱码。
+创建一个文件集合 link
传入一个文件,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。
使用代码上传时,请注意中文 filename 需要进行 encode 处理,否则容易乱码。
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/create/localFile' \ --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:训练模式(必填)
- 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:训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{ "code": 200, "statusText": "", @@ -274,9 +274,9 @@ } } }
-创建一个API集合 link
传入一个文件的 id,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。
使用代码上传时,请注意中文 filename 需要进行 encode 处理,否则容易乱码。
+创建一个API集合 link
传入一个文件的 id,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。
使用代码上传时,请注意中文 filename 需要进行 encode 处理,否则容易乱码。
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/create/apiCollection' \ --header 'Authorization: Bearer fastgpt-xxx' \ --header 'Content-Type: application/json' \ @@ -292,7 +292,7 @@ "chunkSplitter":"", "qaPrompt":"" }'
-需要使用 POST form-data 的格式上传。包含 file 和 data 两个字段。
- name: 集合名,建议就用文件名,必填。
- apiFileId: 文件的ID,必填。
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- trainingType:训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
+需要使用 POST form-data 的格式上传。包含 file 和 data 两个字段。
- name: 集合名,建议就用文件名,必填。
- apiFileId: 文件的ID,必填。
- datasetId: 知识库的ID(必填)
- parentId: 父级ID,不填则默认为根目录
- trainingType:训练模式(必填)
- chunkSize: 每个 chunk 的长度(可选). chunk模式:100~3000; qa模式: 4000~模型最大token(16k模型通常建议不超过10000)
- chunkSplitter: 自定义最高优先分割符号(可选)
- qaPrompt: qa拆分自定义提示词(可选)
data 为集合的 ID。
{ "code": 200, "statusText": "", @@ -307,9 +307,9 @@ } } }
-创建一个外部文件库集合(商业版) link
+创建一个外部文件库集合(商业版) link
curl --location --request POST 'http://localhost:3000/api/proApi/core/dataset/collection/create/externalFileUrl' \ --header 'Authorization: Bearer {{authorization}}' \ --header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \ @@ -328,7 +328,7 @@ "chunkSplitter":"", "qaPrompt":"" }'
-
参数 说明 必填 externalFileUrl 文件访问链接(可以是临时链接) ✅ externalFileId 外部文件ID filename 自定义文件名,需要带后缀 createTime 文件创建时间(Date ISO 字符串都 ok) data 为集合的 ID。
+
参数 说明 必填 externalFileUrl 文件访问链接(可以是临时链接) ✅ externalFileId 外部文件ID filename 自定义文件名,需要带后缀 createTime 文件创建时间(Date ISO 字符串都 ok) data 为集合的 ID。
{ "code": 200, "statusText": "", @@ -343,9 +343,9 @@ } } }
-获取集合列表 link
+获取集合列表 link
curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/list' \ --header 'Authorization: Bearer {{authorization}}' \ --header 'Content-Type: application/json' \ @@ -356,7 +356,7 @@ "parentId": null, "searchText":"" }'
-
- pageNum: 页码(选填)
- pageSize: 每页数量,最大30(选填)
- datasetId: 知识库的ID(必填)
- parentId: 父级Id(选填)
- searchText: 模糊搜索文本(选填)
+
- pageNum: 页码(选填)
- pageSize: 每页数量,最大30(选填)
- datasetId: 知识库的ID(必填)
- parentId: 父级Id(选填)
- searchText: 模糊搜索文本(选填)
{ "code": 200, "statusText": "", @@ -418,12 +418,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": "", @@ -463,8 +463,8 @@ } }
修改集合信息 link
通过集合 ID 修改集合信息
通过集合 ID 修改集合信息
curl --location --request PUT 'http://localhost:3000/api/core/dataset/collection/update' \ --header 'Authorization: Bearer {{authorization}}' \ --header 'Content-Type: application/json' \ @@ -489,29 +489,29 @@ "forbid": false, "createTime": "2024-01-01T00:00:00.000Z" }'
-
- id: 集合的ID
- parentId: 修改父级ID(可选)
- name: 修改集合名称(可选)
- tags: 修改集合标签(可选)
- forbid: 修改集合禁用状态(可选)
- createTime: 修改集合创建时间(可选)
+
- id: 集合的ID
- parentId: 修改父级ID(可选)
- name: 修改集合名称(可选)
- tags: 修改集合标签(可选)
- forbid: 修改集合禁用状态(可选)
- createTime: 修改集合创建时间(可选)
{ "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
Data结构
字段 类型 说明 必填 teamId String 团队ID ✅ tmbId String 成员ID ✅ datasetId String 知识库ID ✅ collectionId String 集合ID ✅ q String 主要数据 ✅ a String 辅助数据 ✖ fullTextToken String 分词 ✖ indexes Index[] 向量索引 ✅ updateTime Date 更新时间 ✅ chunkIndex Number 分块下表 ✖ Index结构
每组数据的自定义索引最多5个
字段 类型 说明 必填 defaultIndex Boolean 是否为默认索引 ✅ dataId String 关联的向量ID ✅ text String 文本内容 ✅ 为集合批量添加添加数据 link
注意,每次最多推送 200 组数据。
+数据 link
数据的结构 link
Data结构
字段 类型 说明 必填 teamId String 团队ID ✅ tmbId String 成员ID ✅ datasetId String 知识库ID ✅ collectionId String 集合ID ✅ q String 主要数据 ✅ a String 辅助数据 ✖ fullTextToken String 分词 ✖ indexes Index[] 向量索引 ✅ updateTime Date 更新时间 ✅ chunkIndex Number 分块下表 ✖ Index结构
每组数据的自定义索引最多5个
字段 类型 说明 必填 defaultIndex Boolean 是否为默认索引 ✅ dataId String 关联的向量ID ✅ text String 文本内容 ✅ 为集合批量添加添加数据 link
注意,每次最多推送 200 组数据。
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pushData' \ --header 'Authorization: Bearer apikey' \ --header 'Content-Type: application/json' \ @@ -539,7 +539,7 @@ } ] }'
-
- collectionId: 集合ID(必填)
- trainingType:训练模式(必填)
- prompt: 自定义 QA 拆分提示词,需严格按照模板,建议不要传入。(选填)
- data:(具体数据)
- q: 主要数据(必填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填)。可以不传或者传空数组,默认都会使用q和a组成一个索引。
+
- collectionId: 集合ID(必填)
- trainingType:训练模式(必填)
- prompt: 自定义 QA 拆分提示词,需严格按照模板,建议不要传入。(选填)
- data:(具体数据)
- q: 主要数据(必填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填)。可以不传或者传空数组,默认都会使用q和a组成一个索引。
{ "code": 200, "statusText": "", @@ -550,7 +550,7 @@ "error": [] // 其他错误 } }
-{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
+{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
我会给你一段文本,{{theme}},学习它们,并整理学习成果,要求为: 1. 提出最多 25 个问题。 2. 给出每个问题的答案。 @@ -564,9 +564,9 @@ …… 我的文本:"""{{text}}"""
-获取集合的数据列表 link
4.8.11+
+获取集合的数据列表 link
4.8.11+
curl --location --request POST 'http://localhost:3000/api/core/dataset/data/v2/list' \ --header 'Authorization: Bearer {{authorization}}' \ --header 'Content-Type: application/json' \ @@ -586,7 +586,7 @@ "collectionId":"65abd4ac9d1448617cba6171", "searchText":"" }'
-
- offset: 偏移量(选填)
- pageSize: 每页数量,最大30(选填)
- collectionId: 集合的ID(必填)
- searchText: 模糊搜索词(选填)
+
- offset: 偏移量(选填)
- pageSize: 每页数量,最大30(选填)
- collectionId: 集合的ID(必填)
- searchText: 模糊搜索词(选填)
{ "code": 200, "statusText": "", @@ -613,12 +613,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": "", @@ -645,9 +645,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' \ @@ -666,28 +666,28 @@ } ] }'
-
- dataId: 数据的id
- q: 主要数据(选填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填),类型参考
为集合批量添加添加数据
。如果创建时候有自定义索引,+
- dataId: 数据的id
- q: 主要数据(选填)
- a: 辅助数据(选填)
- indexes: 自定义索引(选填),类型参考
为集合批量添加添加数据
。如果创建时候有自定义索引,{ "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' \ @@ -703,7 +703,7 @@ "datasetSearchExtensionModel": "gpt-4o-mini", "datasetSearchExtensionBg": "" }'
-
- datasetId - 知识库ID
- text - 需要测试的文本
- limit - 最大 tokens 数量
- similarity - 最低相关度(0~1,可选)
- searchMode - 搜索模式:embedding | fullTextRecall | mixedRecall
- usingReRank - 使用重排
- datasetSearchUsingExtensionQuery - 使用问题优化
- datasetSearchExtensionModel - 问题优化模型
- datasetSearchExtensionBg - 问题优化背景描述
返回 top k 结果, limit 为最大 Tokens 数量,最多 20000 tokens。
+
- datasetId - 知识库ID
- text - 需要测试的文本
- limit - 最大 tokens 数量
- similarity - 最低相关度(0~1,可选)
- searchMode - 搜索模式:embedding | fullTextRecall | mixedRecall
- usingReRank - 使用重排
- datasetSearchUsingExtensionQuery - 使用问题优化
- datasetSearchExtensionModel - 问题优化模型
- datasetSearchExtensionBg - 问题优化背景描述
返回 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 be223ff426cd..6fa058a0b84b 100644 --- a/docs/development/openapi/share/index.html +++ b/docs/development/openapi/share/index.html @@ -43,43 +43,43 @@ "uid": "用户唯一凭证" } }
-
FastGPT
将会判断success
是否为true
决定是允许用户继续操作。message
与msg
是等同的,你可以选择返回其中一个,当success
不为true
时,将会提示这个错误。
uid
是用户的唯一凭证,将会用于拉取对话记录以及保存对话记录。可参考下方实践案例。触发流程 link
配置教程 link
1. 配置身份校验地址 link
配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。
🤖
这里仅需配置根地址,无需具体到完整请求路径。
2. 分享链接中增加额外 query link
在分享链接的地址中,增加一个额外的参数: authToken。例如:
原始的链接:
https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192
完整链接:
https://share.tryfastgpt.ai/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.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192
完整链接:
https://share.tryfastgpt.ai/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": "身份验证失败", @@ -202,9 +202,9 @@ isElseResult?: boolean; // 判断器结果 }
-实践案例 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) { @@ -217,7 +217,7 @@ return { success: false,message:"身份错误" } }
-这个接口中,我们设置了
token
必须等于fastgpt
才能通过校验。并且如果问题中包含了你
字,则会报错,用于模拟敏感校验。+这个接口中,我们设置了
token
必须等于fastgpt
才能通过校验。并且如果问题中包含了你
字,则会报错,用于模拟敏感校验。import cloud from '@lafjs/cloud' export default async function (ctx: FunctionContext) { @@ -235,7 +235,7 @@ return { success: true, data: { uid: "user1" } } }
-结果上报接口可自行进行逻辑处理。
+结果上报接口可自行进行逻辑处理。
import cloud from '@lafjs/cloud' export default async function (ctx: FunctionContext) { diff --git a/docs/guide/knowledge_base/api_dataset/index.html b/docs/guide/knowledge_base/api_dataset/index.html index 5bbbae531921..14ef4afb24bc 100644 --- a/docs/guide/knowledge_base/api_dataset/index.html +++ b/docs/guide/knowledge_base/api_dataset/index.html @@ -50,8 +50,8 @@ updateTime: Date; createTime: Date; }
-1. 获取文件树 link
- parentId - 父级 id,可选,或者 null。
- searchKey - 检索词,可选
+1. 获取文件树 link
- parentId - 父级 id,可选,或者 null。
- searchKey - 检索词,可选
curl --location --request POST '{{baseURL}}/v1/file/list' \ --header 'Authorization: Bearer {{authorization}}' \ --header 'Content-Type: application/json' \ @@ -59,7 +59,7 @@ "parentId": null, "searchKey": "" }'
-+{ "code": 200, "success": true, @@ -75,12 +75,12 @@ } ] }
-2. 获取单个文件内容(文本内容或访问链接) link
+2. 获取单个文件内容(文本内容或访问链接) link
curl --location --request GET '{{baseURL}}/v1/file/content?id=xx' \ --header 'Authorization: Bearer {{authorization}}'
-+{ "code": 200, "success": true, @@ -90,11 +90,11 @@ "previewUrl": "xxxx" } }
-二选一返回,如果同时返回则 content 优先级更高。
- content - 文件内容,直接拿来用。
- previewUrl - 文件链接,系统会请求该地址获取文件内容。
3. 获取文件阅读链接(用于查看原文) link
id 为文件的 id。
+二选一返回,如果同时返回则 content 优先级更高。
- content - 文件内容,直接拿来用。
- previewUrl - 文件链接,系统会请求该地址获取文件内容。
3. 获取文件阅读链接(用于查看原文) link
id 为文件的 id。
curl --location --request GET '{{baseURL}}/v1/file/read?id=xx' \ --header 'Authorization: Bearer {{authorization}}'
-+{ "code": 200, "success": true, diff --git a/docs/guide/workbench/workflow/http/index.html b/docs/guide/workbench/workflow/http/index.html index ee539623fede..494e5530bbd1 100644 --- a/docs/guide/workbench/workflow/http/index.html +++ b/docs/guide/workbench/workflow/http/index.html @@ -34,9 +34,9 @@ menu
HTTP 请求httpHTTP 请求
FastGPT HTTP 模块介绍
特点 link
- 可重复添加
- 手动配置
- 触发执行
- 核中核模块
介绍 link
HTTP 模块会向对应的地址发送一个
HTTP
请求,实际操作与 Postman 和 ApiFox 这类直流工具使用差不多。
- Params 为路径请求参数,GET请求中用的居多。
- Body 为请求体,POST/PUT请求中用的居多。
- Headers 为请求头,用于传递一些特殊的信息。
- 自定义变量中可以接收前方节点的输出作为变量
- 3 种数据中均可以通过
{{}}
来引用变量。- url 也可以通过
{{}}
来引用变量。- 变量来自于
全局变量
、系统变量
、前方节点输出
参数结构 link
系统变量说明 link
你可以将鼠标放置在
请求参数
旁边的问号中,里面会提示你可用的变量。
- appId: 应用的ID
- chatId: 当前对话的ID,测试模式下不存在。
- responseChatItemId: 当前对话中,响应的消息ID,测试模式下不存在。
- variables: 当前对话的全局变量。
- cTime: 当前时间。
- histories: 历史记录(默认最多取10条,无法修改长度)
Params, Headers link
不多描述,使用方法和Postman, ApiFox 基本一致。
可通过 {{key}} 来引入变量。例如:
key value appId {{appId}} Authorization Bearer {{token}} Body link
只有特定请求类型下会生效。
可以写一个
自定义的 Json
,并通过 {{key}} 来引入变量。例如:+Table of ContentshttpHTTP 请求
FastGPT HTTP 模块介绍
特点 link
- 可重复添加
- 手动配置
- 触发执行
- 核中核模块
介绍 link
HTTP 模块会向对应的地址发送一个
HTTP
请求,实际操作与 Postman 和 ApiFox 这类直流工具使用差不多。
- Params 为路径请求参数,GET请求中用的居多。
- Body 为请求体,POST/PUT请求中用的居多。
- Headers 为请求头,用于传递一些特殊的信息。
- 自定义变量中可以接收前方节点的输出作为变量
- 3 种数据中均可以通过
{{}}
来引用变量。- url 也可以通过
{{}}
来引用变量。- 变量来自于
全局变量
、系统变量
、前方节点输出
参数结构 link
系统变量说明 link
你可以将鼠标放置在
请求参数
旁边的问号中,里面会提示你可用的变量。
- appId: 应用的ID
- chatId: 当前对话的ID,测试模式下不存在。
- responseChatItemId: 当前对话中,响应的消息ID,测试模式下不存在。
- variables: 当前对话的全局变量。
- cTime: 当前时间。
- histories: 历史记录(默认最多取10条,无法修改长度)
Params, Headers link
不多描述,使用方法和Postman, ApiFox 基本一致。
可通过 {{key}} 来引入变量。例如:
key value appId {{appId}} Authorization Bearer {{token}} Body link
只有特定请求类型下会生效。
可以写一个
自定义的 Json
,并通过 {{key}} 来引入变量。例如:{ "string": "字符串", "number": 123, @@ -47,7 +47,7 @@ "url": "https://tryfastgpt.ai" } }
-注意,在 Body 中,你如果引用
字符串
,则需要加上""
,例如:"{{string}}"
。+注意,在 Body 中,你如果引用
字符串
,则需要加上""
,例如:"{{string}}"
。{ "string": "{{string}}", "token": "Bearer {{string}}", @@ -57,7 +57,7 @@ "array2": {{array}}, "object": {{obj}} }
-+{ "string": "字符串", "token": "Bearer 字符串", @@ -70,8 +70,8 @@ "url": "https://tryfastgpt.ai" } }
-如何获取返回值 link
从图中可以看出,FastGPT可以添加多个返回值,这个返回值并不代表接口的返回值,而是代表
如何解析接口返回值
,可以通过JSON path
的语法,来提取
接口响应的值。语法可以参考: https://github.com/JSONPath-Plus/JSONPath?tab=readme-ov-file
+如何获取返回值 link
从图中可以看出,FastGPT可以添加多个返回值,这个返回值并不代表接口的返回值,而是代表
如何解析接口返回值
,可以通过JSON path
的语法,来提取
接口响应的值。语法可以参考: https://github.com/JSONPath-Plus/JSONPath?tab=readme-ov-file
{ "message": "测试", "data":{ @@ -89,7 +89,7 @@ "psw": "xxx" } }
-+{ "$.message": "测试", "$.data.user": { "name": "xxx", "age": 12 }, diff --git a/index.xml b/index.xml index e653757967b5..a09a45684f97 100644 --- a/index.xml +++ b/index.xml @@ -426,8 +426,8 @@ projects 目录下为 FastGPT 应用代码。其中 app 为 FastGPT 核心应用 MongoDB:用于存储除了向量外的各类数据 PostgreSQL/Milvus:存储向量数据 OneAPI: 聚合各类 AI API,支持多模型调用 (任何模型问题,先自行通过 OneAPI 测试校验) -推荐配置 linkPgVector版本 link体验测试首选 -环境 最低配置(单节点) 推荐配置 测试 2c2g 2c4g 100w 组向量 4c8g 50GB 4c16g 50GB 500w 组向量 8c32g 200GB 16c64g 200GB Milvus版本 link生产部署首选,对于千万级以上向量性能更优秀。 +推荐配置 linkPgVector版本 link非常轻量,适合数据量在 5000 万以下。 +环境 最低配置(单节点) 推荐配置 测试(可以把计算进程设置少一些) 2c4g 2c8g 100w 组向量 4c8g 50GB 4c16g 50GB 500w 组向量 8c32g 200GB 16c64g 200GB Milvus版本 link对于亿级以上向量性能更优秀。 点击查看 Milvus 官方推荐配置 环境 最低配置(单节点) 推荐配置 测试 2c8g 4c16g 100w 组向量 未测试 500w 组向量 zilliz cloud版本 linkMilvus 的全托管服务,性能优于 Milvus 并提供 SLA,点击使用 Zilliz Cloud。 由于向量库使用了 Cloud,无需占用本地资源,无需太关注。