推荐配置 link
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c2g | 2c4g |
100w 组向量 | 4c8g 50GB | 4c16g 50GB |
500w 组向量 | 8c32g | 16c64g 200GB |
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 |
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 80c858f34878..233c49806e3a 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接口 完全一致。
- 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接口 完全一致。
- 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 b1ecacbd5068..0ad4532552b4 100644
--- a/docs/development/openapi/dataset/index.html
+++ b/docs/development/openapi/dataset/index.html
@@ -39,10 +39,10 @@
"message": "",
"data": "65112ab717c32018f4156361"
}
-
知识库添加数据 link
+
知识库添加数据 link
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pushData' \
--header 'Authorization: Bearer apikey' \
--header 'Content-Type: application/json' \
@@ -66,7 +66,7 @@
}
]
}'
-
需要先了解 FastGPT 的多路索引概念:
在 FastGPT 中,你可以为一组数据创建多个索引,如果不指定索引,则系统会自动取对应的 chunk 作为索引。例如前面的请求示例中:
q:你是谁?a:我是FastGPT助手
它的indexes
属性为空,意味着不自定义索引,而是使用默认的索引(你是谁?\n我是FastGPT助手)。
在第二组数据中q:你会什么?a:我什么都会
指定了一个你好
的索引,因此这组数据的索引为你好
。
+
需要先了解 FastGPT 的多路索引概念:
在 FastGPT 中,你可以为一组数据创建多个索引,如果不指定索引,则系统会自动取对应的 chunk 作为索引。例如前面的请求示例中:
q:你是谁?a:我是FastGPT助手
它的indexes
属性为空,意味着不自定义索引,而是使用默认的索引(你是谁?\n我是FastGPT助手)。
在第二组数据中q:你会什么?a:我什么都会
指定了一个你好
的索引,因此这组数据的索引为你好
。
{
"collectionId": "文件集合的ID,参考上面的第二张图",
"mode": "chunk | qa ", // chunk 模式: 可自定义索引。qa 模型:无法自定义索引,会自动取 data 中的 q 作为数据,让模型自动生成问答对和索引。
@@ -84,7 +84,7 @@
],
}
-
+
{
"code": 200,
"statusText": "",
@@ -96,7 +96,7 @@
"error": [] // 其他错误
}
}
-
{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
+
{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
我会给你一段文本,{{theme}},学习它们,并整理学习成果,要求为:
1. 提出最多 25 个问题。
2. 给出每个问题的答案。
@@ -110,9 +110,9 @@
……
我的文本:"""{{text}}"""
-
搜索测试 link
+
搜索测试 link
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/searchTest' \
--header 'Authorization: Bearer fastgpt-xxxxx' \
--header 'Content-Type: application/json' \
@@ -124,7 +124,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 8f184b7a6ab1..93321da1af00 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 3ead9c3ae16f..a9fdff242fb6 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": {