docs: update the framework of doc site (#207)

Signed-off-by: Carson Yang <yangchuansheng33@gmail.com>
This commit is contained in:
Carson Yang
2023-08-22 11:08:28 +08:00
committed by GitHub
parent c7d0975f6d
commit c20fba11ba
294 changed files with 26391 additions and 15210 deletions

6
.gitignore vendored
View File

@@ -29,4 +29,8 @@ next-env.d.ts
platform.json
testApi/
local/
dist/
dist/
# hugo
**/.hugo_build.lock
docSite/public/

20
docSite/.gitignore vendored
View File

@@ -1,20 +0,0 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

View File

@@ -1,41 +0,0 @@
# Website
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View File

@@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<title>微信群</title>
<path d="M21.6696 15.9962C21.9464 15.9925 22.2107 15.881 22.4064 15.6853C22.6021 15.4896 22.7137 15.2252 22.7173 14.9485C22.7173 14.3675 22.2518 13.9008 21.6696 13.9008C21.0875 13.9008 20.622 14.3675 20.622 14.9485C20.622 15.5318 21.0886 15.9962 21.6696 15.9962ZM16.5071 15.9962C16.7839 15.9925 17.0482 15.881 17.2439 15.6853C17.4396 15.4896 17.5512 15.2252 17.5548 14.9485C17.5548 14.3675 17.0881 13.9008 16.5071 13.9008C15.9238 13.9008 15.4595 14.3675 15.4595 14.9485C15.4595 15.5318 15.925 15.9962 16.5071 15.9962ZM24.1686 21.8762C24.0939 21.9177 24.0342 21.9818 23.9981 22.0594C23.9621 22.1369 23.9515 22.2239 23.968 22.3078C23.968 22.3638 23.968 22.421 23.9971 22.4793C24.1115 22.9658 24.3401 23.7405 24.3401 23.7697C24.3401 23.8548 24.3693 23.912 24.3693 23.9703C24.3693 24.0041 24.3626 24.0376 24.3496 24.0688C24.3367 24.1 24.3177 24.1284 24.2937 24.1522C24.2697 24.1761 24.2413 24.195 24.21 24.2078C24.1788 24.2206 24.1453 24.2272 24.1115 24.227C24.0531 24.227 24.0251 24.199 23.968 24.171L22.2775 23.1957C22.154 23.1277 22.0168 23.0886 21.8761 23.0813C21.791 23.0813 21.7046 23.0813 21.6475 23.1093C20.8448 23.3392 20.0141 23.4535 19.1263 23.4535C14.8563 23.4535 11.4181 20.587 11.4181 17.031C11.4181 13.4762 14.8563 10.6085 19.1263 10.6085C23.3951 10.6085 26.8333 13.4762 26.8333 17.031C26.8333 18.9525 25.802 20.7013 24.1686 21.8773V21.8762ZM19.4518 9.44883C19.3429 9.44521 19.234 9.44327 19.1251 9.443C14.2555 9.443 10.2515 12.7797 10.2515 17.0322C10.2515 17.6785 10.3448 18.3038 10.5175 18.8988H10.4136C9.39426 18.8885 8.38067 18.7442 7.39896 18.4695C7.31263 18.4403 7.22629 18.4403 7.13996 18.4403C6.96754 18.444 6.79921 18.4935 6.65229 18.5838L4.61296 19.7563C4.55463 19.7855 4.49746 19.8147 4.44029 19.8147C4.35703 19.8138 4.27744 19.7803 4.21856 19.7214C4.15968 19.6625 4.1262 19.5829 4.12529 19.4997C4.12529 19.4133 4.15329 19.3562 4.18246 19.2698C4.21046 19.2418 4.46946 18.2968 4.61296 17.7252C4.61296 17.6668 4.64096 17.5817 4.64096 17.5245C4.64065 17.4245 4.61721 17.3259 4.57248 17.2364C4.52775 17.147 4.46295 17.0691 4.38313 17.0088C2.40096 15.6053 1.16663 13.517 1.16663 11.1977C1.16663 6.93583 5.33163 3.5 10.4416 3.5C14.8341 3.5 18.5266 6.0305 19.4518 9.44767V9.44883ZM13.4388 9.9365C14.1073 9.9365 14.6358 9.38 14.6358 8.7395C14.6358 8.071 14.1073 7.5425 13.4388 7.5425C12.7703 7.5425 12.2418 8.071 12.2418 8.7395C12.2418 9.408 12.7703 9.9365 13.4388 9.9365ZM7.30213 9.9365C7.97063 9.9365 8.50029 9.38 8.50029 8.7395C8.50029 8.071 7.97063 7.5425 7.30213 7.5425C6.63479 7.5425 6.10513 8.071 6.10513 8.7395C6.10513 9.408 6.63479 9.9365 7.30213 9.9365Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_280_54)">
<path d="M21.6696 15.9962C21.9464 15.9925 22.2107 15.881 22.4064 15.6853C22.6021 15.4896 22.7137 15.2252 22.7173 14.9485C22.7173 14.3675 22.2518 13.9008 21.6696 13.9008C21.0875 13.9008 20.622 14.3675 20.622 14.9485C20.622 15.5318 21.0886 15.9962 21.6696 15.9962ZM16.5071 15.9962C16.7839 15.9925 17.0482 15.881 17.2439 15.6853C17.4396 15.4896 17.5512 15.2252 17.5548 14.9485C17.5548 14.3675 17.0881 13.9008 16.5071 13.9008C15.9238 13.9008 15.4595 14.3675 15.4595 14.9485C15.4595 15.5318 15.925 15.9962 16.5071 15.9962ZM24.1686 21.8762C24.0939 21.9177 24.0342 21.9818 23.9981 22.0594C23.9621 22.1369 23.9515 22.2239 23.968 22.3078C23.968 22.3638 23.968 22.421 23.9971 22.4793C24.1115 22.9658 24.3401 23.7405 24.3401 23.7697C24.3401 23.8548 24.3693 23.912 24.3693 23.9703C24.3693 24.0041 24.3626 24.0376 24.3496 24.0688C24.3367 24.1 24.3177 24.1284 24.2937 24.1522C24.2697 24.1761 24.2413 24.195 24.21 24.2078C24.1788 24.2206 24.1453 24.2272 24.1115 24.227C24.0531 24.227 24.0251 24.199 23.968 24.171L22.2775 23.1957C22.154 23.1277 22.0168 23.0886 21.8761 23.0813C21.791 23.0813 21.7046 23.0813 21.6475 23.1093C20.8448 23.3392 20.0141 23.4535 19.1263 23.4535C14.8563 23.4535 11.4181 20.587 11.4181 17.031C11.4181 13.4762 14.8563 10.6085 19.1263 10.6085C23.3951 10.6085 26.8333 13.4762 26.8333 17.031C26.8333 18.9525 25.802 20.7013 24.1686 21.8773V21.8762ZM19.4518 9.44883C19.3429 9.44521 19.234 9.44327 19.1251 9.443C14.2555 9.443 10.2515 12.7797 10.2515 17.0322C10.2515 17.6785 10.3448 18.3038 10.5175 18.8988H10.4136C9.39426 18.8885 8.38067 18.7442 7.39896 18.4695C7.31263 18.4403 7.22629 18.4403 7.13996 18.4403C6.96754 18.444 6.79921 18.4935 6.65229 18.5838L4.61296 19.7563C4.55463 19.7855 4.49746 19.8147 4.44029 19.8147C4.35703 19.8138 4.27744 19.7803 4.21856 19.7214C4.15968 19.6625 4.1262 19.5829 4.12529 19.4997C4.12529 19.4133 4.15329 19.3562 4.18246 19.2698C4.21046 19.2418 4.46946 18.2968 4.61296 17.7252C4.61296 17.6668 4.64096 17.5817 4.64096 17.5245C4.64065 17.4245 4.61721 17.3259 4.57248 17.2364C4.52775 17.147 4.46295 17.0691 4.38313 17.0088C2.40096 15.6053 1.16663 13.517 1.16663 11.1977C1.16663 6.93583 5.33163 3.5 10.4416 3.5C14.8341 3.5 18.5266 6.0305 19.4518 9.44767V9.44883ZM13.4388 9.9365C14.1073 9.9365 14.6358 9.38 14.6358 8.7395C14.6358 8.071 14.1073 7.5425 13.4388 7.5425C12.7703 7.5425 12.2418 8.071 12.2418 8.7395C12.2418 9.408 12.7703 9.9365 13.4388 9.9365ZM7.30213 9.9365C7.97063 9.9365 8.50029 9.38 8.50029 8.7395C8.50029 8.071 7.97063 7.5425 7.30213 7.5425C6.63479 7.5425 6.10513 8.071 6.10513 8.7395C6.10513 9.408 6.63479 9.9365 7.30213 9.9365Z" fill="#2CE25E"/>
</g>
<defs>
<clipPath id="clip0_280_54">
<rect width="28" height="28" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 240 KiB

View File

Before

Width:  |  Height:  |  Size: 328 KiB

After

Width:  |  Height:  |  Size: 328 KiB

View File

Before

Width:  |  Height:  |  Size: 294 KiB

After

Width:  |  Height:  |  Size: 294 KiB

View File

Before

Width:  |  Height:  |  Size: 302 KiB

After

Width:  |  Height:  |  Size: 302 KiB

View File

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 165 KiB

View File

Before

Width:  |  Height:  |  Size: 335 KiB

After

Width:  |  Height:  |  Size: 335 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

View File

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 193 KiB

View File

Before

Width:  |  Height:  |  Size: 307 KiB

After

Width:  |  Height:  |  Size: 307 KiB

View File

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 596 KiB

After

Width:  |  Height:  |  Size: 596 KiB

View File

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

Before

Width:  |  Height:  |  Size: 428 KiB

After

Width:  |  Height:  |  Size: 428 KiB

View File

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

View File

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 247 KiB

View File

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 355 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 176 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

View File

Before

Width:  |  Height:  |  Size: 437 KiB

After

Width:  |  Height:  |  Size: 437 KiB

View File

Before

Width:  |  Height:  |  Size: 273 KiB

After

Width:  |  Height:  |  Size: 273 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

Before

Width:  |  Height:  |  Size: 329 KiB

After

Width:  |  Height:  |  Size: 329 KiB

View File

Before

Width:  |  Height:  |  Size: 336 KiB

After

Width:  |  Height:  |  Size: 336 KiB

View File

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 548 KiB

After

Width:  |  Height:  |  Size: 548 KiB

View File

Before

Width:  |  Height:  |  Size: 437 KiB

After

Width:  |  Height:  |  Size: 437 KiB

View File

Before

Width:  |  Height:  |  Size: 574 KiB

After

Width:  |  Height:  |  Size: 574 KiB

View File

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 7.5 MiB

After

Width:  |  Height:  |  Size: 7.5 MiB

View File

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 205 KiB

View File

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 224 KiB

View File

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 182 KiB

View File

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

View File

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

Before

Width:  |  Height:  |  Size: 285 KiB

After

Width:  |  Height:  |  Size: 285 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -0,0 +1,11 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"../../../../../Library/Caches/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js/*",
"../../../../../Library/Caches/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.0+incompatible/js/*"
]
}
}
}

View File

@@ -1,3 +0,0 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@@ -0,0 +1,9 @@
---
weight: 10
title: "文档"
description: "FastGPT 官方文档"
icon: menu_book
lead: ""
draft: false
images: []
---

View File

@@ -0,0 +1,84 @@
---
weight: 500
title: "开发指南"
description: "对 FastGPT 进行开发调试"
icon: "developer_guide"
draft: false
images: []
---
本文档介绍了如何设置开发环境以构建和测试 [FastGPT](https://fastgpt.run)。
### 安装依赖项
您需要在计算机上安装和配置以下依赖项才能构建 [FastGPT](https://fastgpt.run)
- [Git](http://git-scm.com/)
- [Docker](https://www.docker.com/)
- [Docker Compose](https://docs.docker.com/compose/install/)
- [Node.js v18.x (LTS)](http://nodejs.org)
- [npm](https://www.npmjs.com/) 版本 8.x.x 或 [Yarn](https://yarnpkg.com/)
## 本地开发
要设置一个可工作的开发环境,只需 Fork 项目的 Git 存储库,并部署一个数据库,然后开始进行开发测试。
### Fork存储库
您需要 Fork [存储库](https://github.com/labring/FastGPT)。
### 克隆存储库
克隆您在 GitHub 上 Fork 的存储库:
```
git clone git@github.com:<github_username>/FastGPT.git
```
client 目录下为 FastGPT 核心代码。NextJS 框架前后端放在一起API 服务位于 `src/pages/api` 目录内。
### 安装数据库
第一次开发,需要先部署数据库,建议本地开发可以随便找一台 2C2G 的轻量小数据库实践。数据库部署教程:[Docker 快速部署](/docs/installation/docker/)
### 初始配置
**1. 环境变量**
复制.env.template 文件,生成一个.env.local 环境变量文件夹,修改.env.local 里内容才是有效的变量。变量说明见 .env.template
**2. config 配置文件**
复制 data/config.json 文件,生成一个 data/config.local.json 配置文件。
这个文件大部分时候不需要修改。只需要关注 SystemParams 里的参数:
+ `vectorMaxProcess`: 向量生成最大进程,根据数据库和 key 的并发数来决定,通常单个 120 号2c4g 服务器设置10~15。
+ `qaMaxProcess`: QA 生成最大进程
+ `pgIvfflatProbe`: PostgreSQL vector 搜索探针,没有添加 vector 索引时可忽略。
### 运行
```bash
cd client
pnpm i
pnpm dev
```
### 镜像打包
```bash
docker build -t dockername/fastgpt .
```
## 创建拉取请求
在进行更改后打开一个拉取请求PR。提交拉取请求后FastGPT 团队/社区的其他人将与您一起审查它。
如果遇到问题,比如合并冲突或不知道如何打开拉取请求,请查看 GitHub 的[拉取请求教程](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests),了解如何解决合并冲突和其他问题。一旦您的 PR 被合并,您将自豪地被列为[贡献者表](https://github.com/labring/FastGPT/graphs/contributors)中的一员。
## 加入社区
遇到困难了吗?有任何问题吗? 加入微信群与开发者和用户保持沟通。
<center><image width="400px" src="/wechat-fastgpt.webp" /></center>

View File

@@ -0,0 +1,8 @@
---
weight: 700
title: "私有化部署"
description: "FastGPT 私有化部署文档"
icon: menu_book
draft: false
images: []
---

View File

@@ -1,43 +1,83 @@
# docker-compose 快速部署
---
title: "Docker Compose 快速部署"
description: "使用 Docker Compose 快速部署 FastGPT"
icon: ""
draft: false
toc: true
weight: 720
---
## 一、预先准备
## 准备条件
### 1. 准备好代理环境(国外服务器可忽略)
确保可访问 OpenAI方案可参考[sealos nginx 中转](../proxy/sealos)
确保可访问 OpenAI具体方案可参考:[Nginx 中转](/docs/installation/proxy/nginx/)
### 2. OneAPI (可选,需要多模型和 key 轮询时使用)
### 2. 多模型支持
推荐使用 [one-api](https://github.com/songquanpeng/one-api) 项目来管理 key 池,兼容 openai 、微软和国内主流模型等。
推荐使用 one-api 项目来管理模型池,兼容 OpenAI 、Azure 和国内主流模型等。
部署可以看该项目的 [README.md](https://github.com/songquanpeng/one-api),也可以看 [在 Sealos 1 分钟部署 one-api](../oneapi)
具体部署方法可参考该项目的 [README](https://github.com/songquanpeng/one-api),也可以直接通过以下按钮一键部署:
## 二、安装 docker 和 docker-compose
[![](https://cdn.jsdelivr.us/gh/labring-actions/templates@main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Done-api)
这个不同系统略有区别,百度安装下。验证安装成功后进行下一步。下面给出 centos 一个例子:
## 安装 Docker 和 docker-compose
{{< tabs tabTotal="3" >}}
{{< tab tabName="Linux" >}}
{{< markdownify >}}
```bash
# 安装docker
curl -L https://get.daocloud.io/docker | sh
sudo systemctl start docker
# 安装 Docker
curl -sSL https://get.daocloud.io/docker | sh
systemctl enable --now docker
# 安装 docker-compose
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 验证安装
docker -v
docker-compose -v
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="MacOS" >}}
{{< markdownify >}}
推荐直接使用 [Orbstack](https://orbstack.dev/)。可直接通过 Homebrew 来安装:
## 三、创建 docker-compose.yml 文件
```bash
brew install orbstack
```
随便找一个目录,创建一个 `docker-compose.yml` 文件,粘贴下面的内容。只需要改 fastgpt 容器的 3 个参数即可启动
或者直接[下载安装包](https://orbstack.dev/download)进行安装
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="Windows" >}}
{{< markdownify >}}
我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
```yml
可以选择直接[使用 WSL 2 后端在 Windows 中安装 Docker Desktop](https://docs.docker.com/desktop/wsl/)。
也可以直接[在 WSL 2 中安装命令行版本的 Docker](https://nickjanetakis.com/blog/install-docker-in-wsl-2-without-docker-desktop)。
{{< /markdownify >}}
{{< /tab >}}
{{< /tabs >}}
## 创建 docker-compose.yml 文件
先创建一个目录(例如 fastgpt并进入该目录
```bash
mkdir fastgpt
cd fastgpt
```
创建一个 docker-compose.yml 文件,粘贴下面的内容:
```yaml
# 非 host 版本, 不使用本机代理
version: '3.3'
services:
pg:
image: ankane/pgvector:v0.4.2 # git
image: ankane/pgvector:v0.4.2
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.4.2 # 阿里云
container_name: pg
restart: always
@@ -88,87 +128,43 @@ services:
- DB_MAX_LINK=5 # database max link
- TOKEN_KEY=any
- ROOT_KEY=root_key
# mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin
- MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin
# pg配置. 不需要改
- PG_URL=postgresql://username:password@pg:5432/postgres
# mongo 配置,不需要改
- MONGODB_URI=mongodb://username:password@mongo:27017/?authSource=admin
- MONGODB_NAME=fastgpt
# pg配置
- PG_HOST=pg
- PG_PORT=5432
- PG_USER=username
- PG_PASSWORD=password
- PG_DB_NAME=postgres
networks:
fastgpt:
```
```yml
# host 版本, 不推荐。
version: '3.3'
services:
pg:
image: ankane/pgvector:v0.4.2 # dockerhub
container_name: pg
restart: always
ports: # 生产环境建议不要暴露
- 5432:5432
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
volumes:
- ./pg/data:/var/lib/postgresql/data
mongo:
image: mongo:5.0.18
container_name: mongo
restart: always
ports: # 生产环境建议不要暴露
- 27017:27017
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password
volumes:
- ./mongo/data:/data/db
- ./mongo/logs:/var/log/mongodb
fastgpt:
image: ghcr.io/labring/fastgpt:latest # github
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
network_mode: host
restart: always
container_name: fastgpt
environment:
# root 密码,用户名为: root
- DEFAULT_ROOT_PSW=1234
# 中转地址,如果是用官方号,不需要管
- OPENAI_BASE_URL=https://api.openai.com/v1
- CHAT_API_KEY=sk-xxxx
- DB_MAX_LINK=5 # database max link
# token加密凭证随便填作为登录凭证
- TOKEN_KEY=any
# root key, 最高权限,可以内部接口互相调用
- ROOT_KEY=root_key
# mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin
- MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt?authSource=admin
# pg配置. 不需要改
- PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
```
> 只需要改 fastgpt 容器的 3 个参数即可启动。
## 四、运行 docker-compose
## 启动容器
```bash
# 在 docker-compose.yml 同级目录下执行
docker-compose up -d
```
## 五、访问
## 访问 FastGPT
如果需要域名访问,自行安装 Nginx。目前可以通过: `ip:3000` 直接访问(注意防火墙)。登录用户名为 root密码为刚刚环境变量里设置的 `DEFAULT_ROOT_PSW`
目前可以通过 `ip:3000`` 直接访问(注意防火墙)。登录用户名为 `root`,密码为刚刚环境变量里设置的 `DEFAULT_ROOT_PSW`
## 一些问题
如果需要域名访问,请自行安装并配置 Nginx。
### 1. 如何更新?
## QA
### 如何更新?
执行 `docker-compose up -d` 会自动拉取最新镜像,一般情况下不需要执行额外操作。
### 2. 挂载配置文件
### 如何自定义配置文件
`docker-compose.yml` 同级目录创建一个 `config.json` 文件,内容如下:
需要`docker-compose.yml` 同级目录创建一个 `config.json` 文件,内容如下:
```json
{
@@ -237,12 +233,13 @@ docker-compose up -d
}
```
修改 docker-compose.ymlfastgpt 容器内容,增加挂载。具体配置可参考 [config 配置说明](/docs/category/data-config)
然后修改 `docker-compose.yml` 中的 `fastgpt` 容器内容,增加挂载选项即可:
```yml
```yaml
fastgpt:
container_name: fastgpt
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
image: ghcr.io/labring/fastgpt:latest # github
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
ports:
- 3000:3000
networks:
@@ -252,10 +249,10 @@ fastgpt:
- pg
restart: always
environment:
......
# root 密码,用户名为: root
- DEFAULT_ROOT_PSW=1234
......
volumes:
- ./config.json:/app/data/config.json
```
> 参考[配置详解](/docs/installation/reference/configuration/)

View File

@@ -0,0 +1,25 @@
---
title: "部署 one-api实现多模型支持"
description: "通过接入 one-api 来实现对各种大模型的支持"
icon: "Api"
draft: false
toc: true
weight: 730
---
[one-api](https://github.com/songquanpeng/one-api) 是一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。
FastGPT 可以通过接入 one-api 来实现对各种大模型的支持。部署方法也很简单,直接点击以下按钮即可一键部署 👇
[![](https://cdn.jsdelivr.us/gh/labring-actions/templates@main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Done-api)
部署完后会跳转「应用管理」,数据库在另一个应用「数据库」中。需要等待 1~3 分钟数据库运行后才能访问成功。
配置好 one-api 的模型后,可以直接修改 FastGPT 的环境变量:
```bash
# 下面的地址是 Sealos 提供的,务必写上 v1
OPENAI_BASE_URL=https://xxxx.cloud.sealos.io/v1
# 下面的 key 由 one-api 提供
CHAT_API_KEY=sk-xxxxxx
```

View File

@@ -0,0 +1,8 @@
---
weight: 740
title: "代理方案"
description: "使用代理访问 OpenAI"
icon: public
draft: false
images: []
---

View File

@@ -1,6 +1,13 @@
# cloudflare 代理配置
---
title: "Cloudflare Worker 中转"
description: "使用 Cloudflare Worker 实现中转"
icon: "foggy"
draft: false
toc: true
weight: 742
---
[来自 "不做了睡觉" 教程](https://gravel-twister-d32.notion.site/FastGPT-API-ba7bb261d5fd4fd9bbb2f0607dacdc9e)
[参考 "不做了睡觉" 教程](https://gravel-twister-d32.notion.site/FastGPT-API-ba7bb261d5fd4fd9bbb2f0607dacdc9e)
**workers 配置文件**
@@ -37,10 +44,11 @@ async function handleRequest(request) {
}
```
**对应的环境变量**
务必别忘了填 v1
**修改 FastGPT 的环境变量**
```
> 务必别忘了填 v1
```bash
OPENAI_BASE_URL=https://xxxxxx/v1
OPENAI_BASE_URL_AUTH=auth_code
```
```

View File

@@ -0,0 +1,47 @@
---
title: "HTTP 代理中转"
description: "使用 HTTP 代理实现中转"
icon: "http"
draft: false
toc: true
weight: 743
---
如果你有代理工具(例如 [Clash](https://github.com/Dreamacro/clash) 或者 [sing-box](https://github.com/SagerNet/sing-box)),也可以使用 HTTP 代理来访问 OpenAI。只需要添加以下两个环境变量即可
```bash
AXIOS_PROXY_HOST=
AXIOS_PROXY_PORT=
```
以 Clash 为例,建议指定 `api.openai.com` 走代理,其他请求都直连。示例配置如下:
```yaml
mixed-port: 7890
allow-lan: false
bind-address: '*'
mode: rule
log-level: warning
dns:
enable: true
ipv6: false
nameserver:
- 8.8.8.8
- 8.8.4.4
cache-size: 400
proxies:
-
proxy-groups:
- { name: '♻️ 自动选择', type: url-test, proxies: [香港V01×1.5], url: 'https://api.openai.com', interval: 3600}
rules:
- 'DOMAIN-SUFFIX,api.openai.com,♻️ 自动选择'
- 'MATCH,DIRECT'
```
然后给 FastGPT 添加两个环境变量:
```bash
AXIOS_PROXY_HOST=127.0.0.1
AXIOS_PROXY_PORT=7890
```

View File

@@ -0,0 +1,105 @@
---
title: "Nginx 中转"
description: "使用 Sealos 部署 Nginx 实现中转"
icon: "cloud_sync"
draft: false
toc: true
weight: 741
---
## 登录 Sealos
[Sealos](https://cloud.sealos.io/)
## 创建应用
打开 「应用管理」,点击「新建应用」:
![](/imgs/sealos3.png)
![](/imgs/sealos4.png)
### 填写基本配置
务必开启外网访问,复制外网访问提供的地址。
![](/imgs/sealos5.png)
### 添加配置文件
1. 复制下面这段配置文件,注意 `server_name` 后面的内容替换成第二步的外网访问地址。
```nginx
user nginx;
worker_processes auto;
worker_rlimit_nofile 51200;
events {
worker_connections 1024;
}
http {
resolver 8.8.8.8;
proxy_ssl_server_name on;
access_log off;
server_names_hash_bucket_size 512;
client_header_buffer_size 64k;
large_client_header_buffers 4 64k;
client_max_body_size 50M;
proxy_connect_timeout 240s;
proxy_read_timeout 240s;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
server {
listen 80;
server_name tgohwtdlrmer.cloud.sealos.io; # 这个地方替换成 Sealos 提供的外网地址
location ~ /openai/(.*) {
proxy_pass https://api.openai.com/$1$is_args$args;
proxy_set_header Host api.openai.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 如果响应是流式的
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
# 如果响应是一般的
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
}
```
2. 点开高级配置。
3. 点击「新增配置文件」。
4. 文件名写: `/etc/nginx/nginx.conf`。
5. 文件值为刚刚复制的那段代码。
6. 点击确认。
![](/imgs/sealos6.png)
### 部署应用
填写完毕后,点击右上角的「部署」,即可完成部署。
## 修改 FastGPT 环境变量
1. 进入刚刚部署应用的详情,复制外网地址
> 注意:这是个 API 地址,点击打开是无效的。如需验证,可以访问: `*.cloud.sealos.io/openai/api`,如果提示 `Invalid URL (GET /api)` 则代表成功。
![](/imgs/sealos7.png)
2. 修改环境变量(是 FastGPT 的环境变量,不是 Sealos 的):
```bash
OPENAI_BASE_URL=https://tgohwtdlrmer.cloud.sealos.io/openai/v1
```
**Done!**

View File

@@ -0,0 +1,8 @@
---
weight: 750
title: "配置说明"
description: "FastGPT 配置指南"
icon: quick_reference_all
draft: false
images: []
---

View File

@@ -0,0 +1,66 @@
---
title: "接入 ChatGLM2-6B"
description: " 将 FastGPT 接入私有化模型 ChatGLM2-6B"
icon: "model_training"
draft: false
toc: true
weight: 753
---
## 前言
FastGPT 允许你使用自己的 OpenAI API KEY 来快速调用 OpenAI 接口,目前集成了 GPT-3.5, GPT-4 和 embedding可构建自己的知识库。但考虑到数据安全的问题我们并不能将所有的数据都交付给云端大模型。
那么如何在 FastGPT 上接入私有化模型呢?本文就以清华的 ChatGLM2 为例,为各位讲解如何在 FastGPT 中接入私有化模型。
## ChatGLM2-6B 简介
ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,具体介绍可参阅 [ChatGLM2-6B 项目主页](https://github.com/THUDM/ChatGLM2-6B)。
{{% alert context="warning" %}}
注意ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。本教程只是介绍了一种用法,无权给予任何授权!
{{% /alert %}}
## 推荐配置
依据官方数据,同样是生成 8192 长度,量化等级为 FP16 要占用 12.8GB 显存、int8 为 8.1GB 显存、int4 为 5.1GB 显存,量化后会稍微影响性能,但不多。
因此推荐配置如下:
{{< table "table-hover table-striped" >}}
| 类型 | 内存 | 显存 | 硬盘空间 | 启动命令 |
|------|---------|---------|----------|--------------------------|
| fp16 | >=16GB | >=16GB | >=25GB | python openai_api.py 16 |
| int8 | >=16GB | >=9GB | >=25GB | python openai_api.py 8 |
| int4 | >=16GB | >=6GB | >=25GB | python openai_api.py 4 |
{{< /table >}}
## 环境配置
+ Python 3.8.10
+ CUDA 11.8
+ 科学上网环境
## 部署步骤
1. 根据上面的环境配置配置好环境,具体教程自行 GPT
2. 在命令行输入命令 `pip install -r requirments.txt`
3. 打开你需要启动的 py 文件,在代码的第 76 行配置 token这里的 token 只是加一层验证,防止接口被人盗用;
4. 执行命令 `python openai_api.py 16`。这里的数字根据上面的配置进行选择。
然后等待模型下载,直到模型加载完毕为止。如果出现报错先问 GPT。
启动成功后应该会显示如下地址:
![](/imgs/chatglm2.png)
> 这里的 `http://0.0.0.0:6006` 就是连接地址。
然后现在回到 .env.local 文件,依照以下方式配置地址:
```bash
OPENAI_BASE_URL=http://127.0.0.1:6006/v1
OPENAIKEY=sk-aaabbbcccdddeeefffggghhhiiijjjkkk # 这里是你在代码中配置的 token这里的 OPENAIKEY 可以任意填写
```
这样就成功接入 ChatGLM2-6B 了。

View File

@@ -0,0 +1,117 @@
---
title: "配置详解"
description: "FastGPT 配置参数介绍"
icon: "settings"
draft: false
toc: true
weight: 751
---
由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 `client/data/config.json` 看到默认的配置文件。可以参考 [docker-compose 快速部署](/docs/installation/docker/) 来挂载配置文件。
开发环境下,你需要将示例配置文件 `config.json` 复制成 `config.local.json` 文件才会生效。
注意: 为了方便介绍,文档介绍里会把注释写到 json 文件,实际运行时候 json 文件不能包含注释。
这个配置文件中包含了前端页面定制、系统级参数、AI 对话的模型等……
{{% alert context="warning" %}}
注意:下面的配置介绍仅是局部介绍,你需要完整挂载整个 `config.json`,不能仅挂载一部分。你可以直接在默认的 config.json 基础上根据下面的介绍进行修改。
{{% /alert %}}
## 基础字段粗略说明
这里介绍一些基础的配置字段:
```json
// 这个配置会控制前端的一些样式
"FeConfig": {
"show_emptyChat": true, // 对话页面,空内容时,是否展示介绍页
"show_register": false, // 是否展示注册按键(包括忘记密码,注册账号和三方登录)
"show_appStore": false, // 是否展示应用市场(不过目前权限还没做好,放开也没用)
"show_userDetail": false, // 是否展示用户详情账号余额、OpenAI 绑定)
"show_git": true, // 是否展示 Git
"systemTitle": "FastGPT", // 系统的 title
"authorText": "Made by FastGPT Team.", // 签名
"gitLoginKey": "" // Git 登录凭证
},
...
...
// 这个配置文件是系统级参数
"SystemParams": {
"gitLoginSecret": "", // Git 登录凭证
"vectorMaxProcess": 15, // 向量生成最大进程,结合数据库性能和 key 来设置
"qaMaxProcess": 15, // QA 生成最大进程,结合数据库性能和 key 来设置
"pgIvfflatProbe": 20 // pg vector 搜索探针。没有设置索引前可忽略,通常 50w 组以上才需要设置。
},
...
```
## 完整配置参数
```json
{
"FeConfig": {
"show_emptyChat": true,
"show_register": false,
"show_appStore": false,
"show_userDetail": false,
"show_git": true,
"systemTitle": "FastGPT",
"authorText": "Made by FastGPT Team.",
"gitLoginKey": "",
"scripts": []
},
"SystemParams": {
"gitLoginSecret": "",
"vectorMaxProcess": 15,
"qaMaxProcess": 15,
"pgIvfflatProbe": 20
},
"plugins": {},
"ChatModels": [
{
"model": "gpt-3.5-turbo",
"name": "GPT35-4k",
"contextMaxToken": 4000,
"quoteMaxToken": 2000,
"maxTemperature": 1.2,
"price": 0,
"defaultSystem": ""
},
{
"model": "gpt-3.5-turbo-16k",
"name": "GPT35-16k",
"contextMaxToken": 16000,
"quoteMaxToken": 8000,
"maxTemperature": 1.2,
"price": 0,
"defaultSystem": ""
},
{
"model": "gpt-4",
"name": "GPT4-8k",
"contextMaxToken": 8000,
"quoteMaxToken": 4000,
"maxTemperature": 1.2,
"price": 0,
"defaultSystem": ""
}
],
"QAModels": [
{
"model": "gpt-3.5-turbo-16k",
"name": "GPT35-16k",
"maxToken": 16000,
"price": 0
}
],
"VectorModels": [
{
"model": "text-embedding-ada-002",
"name": "Embedding-2",
"price": 0
}
]
}
```

View File

@@ -1,16 +1,23 @@
# 配置其他对话模型
---
title: "多模型支持"
description: "如何接入除了 GPT 以外的其他大模型"
icon: "model_training"
draft: false
toc: true
weight: 752
---
默认情况下FastGPT 只配置了 GPT 的 3 个模型,如果你需要接入其他模型,需要进行一些额外配置。
## 一、安装 OneAPI
## 部署 one-api
首先你需要部署一个 [OneAPI](/docs/develop/oneapi),并添加对应的【渠道】
首先你需要部署一个 [one-api](/docs/installation/one-api/),并添加对应的【渠道】
![](./imgs/chatmodels1.png)
![](/imgs/chatmodels1.png)
## 二、添加 FastGPT 配置
## 添加 FastGPT 配置
可以在 /client/src/data/config.json 里找到配置文件(本地开发需要复制成 config.local.json配置文件中有一项是对话模型配置
可以在 `/client/src/data/config.json` 里找到配置文件(本地开发需要复制成 config.local.json配置文件中有一项是对话模型配置
```json
"ChatModels": [
@@ -64,4 +71,4 @@
]
```
添加完后,重启应用即可在选择文心一言模型进行对话。
添加完后,重启应用即可在选择文心一言模型进行对话。

View File

@@ -0,0 +1,24 @@
---
title: "Sealos 一键部署"
description: "使用 Sealos 一键部署 FastGPT"
icon: "cloud"
draft: false
toc: true
weight: 710
---
Sealos 的服务器在国外,不需要额外处理网络问题,无需服务器、无需魔法、无需域名,支持高并发 & 动态伸缩。点击以下按钮即可一键部署 👇
[![](https://cdn.jsdelivr.us/gh/labring-actions/templates@main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Dfastgpt)
由于需要部署数据库,部署完后需要等待 2~4 分钟才能正常访问。默认用了最低配置,首次访问时会有些慢。
![](/imgs/sealos1.png)
点击 Sealos 提供的外网地址即可打开 FastGPT 的可视化界面。
![](/imgs/sealos2.png)
> 用户名:`root`
>
> 密码就是刚刚一键部署时设置的环境变量

View File

@@ -1,22 +1,32 @@
# V4.0 版本初始化
---
title: "升级到 V4.0"
description: "FastGPT 从旧版本升级到 V4.0 操作指南"
icon: "upgrade"
draft: false
toc: true
weight: 761
---
新版 mongo 表进行了不少的变更,需要执行一些初始化脚本。
如果您是**从旧版本升级到 V4**,由于新版 MongoDB 表变更比较大,需要按照本文档的说明执行一些初始化脚本。
## 重命名表名
需要连接上 mongo 数据库,执行两条命令:
需要连接上 MongoDB 数据库,执行两条命令:
`db.models.renameCollection("apps")`
```mongodb
db.models.renameCollection("apps")
db.sharechats.renameCollection("outlinks")
```
`db.sharechats.renameCollection("outlinks")`
如果你已经更新部署了mongo 会自动创建空表,需要手动删除这两个空表。
{{% alert context="warning" %}}
注意:从旧版更新到 V4 MongoDB 会自动创建空表,你需要先手动删除这两个空表,再执行上面的操作。
{{% /alert %}}
## 初始化几个表中的字段
依次执行下面 3 条命令,时间比较长,不成功可以重复执行(会跳过已经初始化的数据),直到所有数据更新完成。
```mongo
```mongodb
db.chats.find({appId: {$exists: false}}).forEach(function(item){
db.chats.updateOne(
{
@@ -45,12 +55,12 @@ db.outlinks.find({shareId: {$exists: false}}).forEach(function(item){
})
```
## 执行初始化 API
## 初始化 API
部署新版项目,并发起 3 个 HTTP 请求(记得携带 headers.rootkey这个值是环境变量里的
部署新版项目,并发起 3 个 HTTP 请求(记得携带 `headers.rootkey`,这个值是环境变量里的)
1. https://xxxxx/api/admin/initv4
2. https://xxxxx/api/admin/initChat
3. https://xxxxx/api/admin/initOutlink
1 和 2有可能会因为内存不足挂掉,可以重复执行。
1 和 2 有可能会因为内存不足挂掉,可以重复执行。

View File

@@ -0,0 +1,27 @@
---
title: "升级到 V4.1"
description: "FastGPT 从旧版本升级到 V4.1 操作指南"
icon: "upgrade"
draft: false
toc: true
weight: 762
---
如果您是**从旧版本升级到 V4.1**,由于新版重新设置了对话存储结构,需要初始化原来的存储内容。
## 更新环境变量
V4.1 优化了 PostgreSQL 和 MongoDB 的连接变量,只需要填 1 个 URL 即可:
```bash
# mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin
- MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin
# pg配置. 不需要改
- PG_URL=postgresql://username:password@pg:5432/postgres
```
## 初始化 API
部署新版项目,并发起 1 个 HTTP 请求(记得携带 `headers.rootkey`,这个值是环境变量里的)
+ https://xxxxx/api/admin/initChatItem

View File

@@ -0,0 +1,8 @@
---
weight: 760
title: "版本升级"
description: "FastGPT 升级指南"
icon: upgrade
draft: false
images: []
---

View File

@@ -0,0 +1,81 @@
---
title: "快速了解 FastGPT"
description: "FastGPT 的能力与优势"
icon: "rocket_launch"
draft: false
toc: true
weight: -100
---
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
{{% alert icon="🤖 " context="success" %}}
FastGPT 在线体验:[https://fastgpt.run](https://fastgpt.run)
{{% /alert %}}
| | |
| -------------------------- | -------------------------- |
| ![](/imgs/intro1.png) | ![](/imgs/intro2.png) |
| ![](/imgs/intro3.png) | ![](/imgs/intro4.png) |
## FastGPT 能力
### 1. 专属 AI 客服
通过导入文档或已有问答对进行训练,让 AI 模型能根据你的文档以交互式对话方式回答问题。
![](/imgs/ability1.png)
### 2. 简单易用的可视化界面
FastGPT 采用直观的可视化界面设计,为各种应用场景提供了丰富实用的功能。通过简洁易懂的操作步骤,可以轻松完成 AI 客服的创建和训练流程。
![](/imgs/ability5.png)
### 3. 自动数据预处理
提供手动输入、直接分段、LLM 自动处理和 CSV 等多种数据导入途径,其中“直接分段”支持通过 PDF、WORD、Markdown 和 CSV 文档内容作为上下文。FastGPT 会自动对文本数据进行预处理、向量化和 QA 分割,节省手动训练时间,提升效能。
![](/imgs/ability2.png)
### 4. 工作流编排
基于 Flow 模块的工作流编排,可以帮助你设计更加复杂的问答流程。例如查询数据库、查询库存、预约实验室等。
![](/imgs/ability3.png)
### 5. 强大的 API 集成
FastGPT 对外的 API 接口对齐了 OpenAI 官方接口,可以直接接入现有的 GPT 应用,也可以轻松集成到企业微信、公众号、飞书等平台。
![](/imgs/ability4.png)
## FastGPT 特点
1. **项目完全开源**
FastGPT 遵循 Apache License 2.0 开源协议,你可以 [Fork](https://github.com/labring/FastGPT/fork) 之后进行二次开发和发布。FastGPT 社区版将保留核心功能,商业版仅在社区版基础上使用 API 的形式进行扩展,不影响学习使用。
2. **独特的 QA 结构**
针对客服问答场景设计的 QA 结构,提高在大量数据场景中的问答准确性。
3. **可视化工作流**
通过 Flow 模块展示了从问题输入到模型输出的完整流程,便于调试和设计复杂流程。
4. **无限扩展**
基于 API 进行扩展,无需修改 FastGPT 源码,也可快速接入现有的程序中。
5. **便于调试**
提供搜索测试、引用修改、完整对话预览等多种调试途径。
6. **支持多种模型**
支持 GPT、Claude、文心一言等多种 LLM 模型,未来也将支持自定义的向量模型。
## 知识库核心流程图
![](/imgs/KBProcess.jpg)

View File

@@ -0,0 +1,8 @@
---
weight: 600
title: "使用案例"
description: "有关 FastGPT 其他实践案例的更多信息"
icon: "cases"
draft: false
images: []
---

View File

@@ -1,58 +1,68 @@
# 利用 FastGpt 打造高质量 AI 知识库
---
title: " 打造高质量 AI 知识库"
description: " 利用 FastGPT 打造高质量 AI 知识库"
icon: "school"
draft: false
toc: true
weight: 640
---
## 前言
自从去年 12 月 chatgpt 发布后,带动了新的一轮应用交互革命。尤其是 gpt35 接口全面放开后LLM 应用雨后春笋般快速涌现,但因为 gpt 的可控性、随机性和合规性等问题,很多应用场景都没法落地。
3 月时候,在 twitter 上刷到一个老哥使用 gpt 训练自己的博客记录,并且成本非常低(比起 FT。他给出了一个完整的流程图:
自从去年 12 月 ChatGPT 发布后,带动了新的一轮应用交互革命。尤其是 GPT-3.5 接口全面放开后LLM 应用雨后春笋般快速涌现,但因为 GPT 的可控性、随机性和合规性等问题,很多应用场景都没法落地。
![向量搜索 GPT 流程图](imgs/1.png)
3 月时候,在 Twitter 上刷到一个老哥使用 GPT 训练自己的博客记录,并且成本非常低(比起 FT。他给出了一个完整的流程图
看到这个推文后,我灵机一动,应用场景就十分清晰了。直接上手开干,在经过不到 1 个月时间FastGpt 在原来多助手管理基础上加入了向量搜索。于是便有了最早的一期视频https://www.bilibili.com/video/BV1Wo4y1p7i1/?vd_source=92041a1a395f852f9d89158eaa3f61b4
![向量搜索 GPT 流程图](/imgs/1.png)
3 个月过去了FastGpt 延续着早期的思路去完善和扩展,目前在向量搜索 + LLM 线性问答方面的功能基本上完成了。不过我们始终没有出一期关于如何构建知识库的教程,趁着 V4 在开发中,我们计划介绍一期《如何在 FastGpt 上构建高质量知识库》,以便大家更好的使用。
看到这个推文后,我灵机一动,应用场景就十分清晰了。直接上手开干,在经过不到 1 个月时间FastGPT 在原来多助手管理基础上,加入了向量搜索。于是便有了最早的一期视频:
## FastGpt 知识库完整逻辑
{{< bilibili BV1Wo4y1p7i1 >}}
在正式构建知识库前,我们先来了解下 FastGpt 是如何进行知识库检索的。首先了解几个基本概念:
3 个月过去了FastGPT 延续着早期的思路去完善和扩展,目前在向量搜索 + LLM 线性问答方面的功能基本上完成了。不过我们始终没有出一期关于如何构建知识库的教程,趁着 V4 在开发中,我们计划介绍一期《如何在 FastGPT 上构建高质量知识库》,以便大家更好的使用。
## FastGPT 知识库完整逻辑
在正式构建知识库前,我们先来了解下 FastGPT 是如何进行知识库检索的。首先了解几个基本概念:
1. 向量:将人类直观的语言(文字、图片、视频等)转成计算机可识别的语言(数组)。
2. 向量相似度:两个向量之间可以进行计算,得到一个相似度,即代表:两个语言相似的程度。
3. 语言大模型的一些特点:上下文理解、总结和推理。
结合上述 3 个概念,便有了 “向量搜索 + 大模型 = 知识库问答” 的公式。下图是 FastGpt V3 中知识库问答功能的完整逻辑:
结合上述 3 个概念,便有了 “向量搜索 + 大模型 = 知识库问答” 的公式。下图是 FastGPT V3 中知识库问答功能的完整逻辑:
![向量搜索 GPT 流程图](imgs/2.png)
![向量搜索 GPT 流程图](/imgs/2.png)
与大部分其他知识库问答产品不一样的是, FastGpt 采用了 QA 问答对进行存储,而不是仅进行 chunk文本分块处理。目的是为了减少向量化内容的长度让向量能更好的表达文本的含义从而提高搜索精准度。
此外 FastGpt 还提供了搜索测试和对话测试两种途径对数据进行调整,从而方便用户调整自己的数据。根据上述流程和方式,我们以构建一个 FastGpt 常见问题机器人为例,展示如何构建一个高质量的 AI 知识库。
与大部分其他知识库问答产品不一样的是, FastGPT 采用了 QA 问答对进行存储,而不是仅进行 chunk文本分块处理。目的是为了减少向量化内容的长度让向量能更好的表达文本的含义从而提高搜索精准度。
此外 FastGPT 还提供了搜索测试和对话测试两种途径对数据进行调整,从而方便用户调整自己的数据。根据上述流程和方式,我们以构建一个 FastGPT 常见问题机器人为例,展示如何构建一个高质量的 AI 知识库。
## 构建知识库应用
首先,先创建一个 FastGpt 常见问题知识库
首先,先创建一个 FastGPT 常见问题知识库
![创建知识库应用](imgs/3.png)
![创建知识库应用](/imgs/3.png)
### 通过 QA 拆分,获取基础知识
我们先直接把 FastGpt Git 上一些已有文档,进行 QA 拆分,从而获取一些 FastGpt 基础的知识。下面是 README 例子。
我们先直接把 FastGPT Git 上一些已有文档,进行 QA 拆分,从而获取一些 FastGPT 基础的知识。下面是 README 例子。
![QA 拆分示意图](imgs/4.png)
![QA 拆分示意图](/imgs/4.png)
![](imgs/5.png)
![](/imgs/5.png)
### 修正 QA
通过 README 我们一共得到了 11 组数据,整体的质量还是不错的,图片和链接都提取出来了。不过最后一个知识点出现了一些截断,我们需要手动的修正一下。
此外,我们观察到第一列第三个知识点。这个知识点是介绍了 FastGpt 一些资源链接,但是 QA 拆分将答案放置在了 A 中,但通常来说用户的提问并不会直接问“有哪些链接”,通常会问:“部署教程”,“问题文档”之类的。因此,我们需要将这个知识点进行简单的一个处理,如下图:
此外,我们观察到第一列第三个知识点。这个知识点是介绍了 FastGPT 一些资源链接,但是 QA 拆分将答案放置在了 A 中,但通常来说用户的提问并不会直接问“有哪些链接”,通常会问:“部署教程”,“问题文档”之类的。因此,我们需要将这个知识点进行简单的一个处理,如下图:
![手动修改知识库数据](imgs/6.png)
![手动修改知识库数据](/imgs/6.png)
我们先来创建一个应用,看看效果如何。 首先需要去创建一个应用,并且在知识库中关联相关的知识库。另外还需要在配置页的提示词中,告诉 GPT“知识库的范围”。
![](imgs/7.png)
![](/imgs/7.png)
![README QA 拆分后效果](imgs/8.png)
![README QA 拆分后效果](/imgs/8.png)
整体的效果还是不错的,链接和对应的图片都可以顺利的展示。
@@ -60,24 +70,24 @@
接着,我们再把 FastGPT 常见问题的文档导入,由于平时整理不当,我们只能手动的录入对应的问答。
![手动录入知识库结果](imgs/9.png)
![手动录入知识库结果](/imgs/9.png)
导入结果如上图。可以看到,我们均采用的是问答对的格式,而不是粗略的直接导入。目的就是为了模拟用户问题,进一步的提高向量搜索的匹配效果。可以为同一个问题设置多种问法,效果更佳。
FastGpt 还提供了 openapi 功能,你可以在本地对特殊格式的文件进行处理后,再上传到 FastGpt,具体可以参考:[FastGpt Api Docs](https://kjqvjse66l.feishu.cn/docx/DmLedTWtUoNGX8xui9ocdUEjnNh)
FastGPT 还提供了 openapi 功能,你可以在本地对特殊格式的文件进行处理后,再上传到 FastGPT,具体可以参考:[FastGPT Api Docs](https://kjqvjse66l.feishu.cn/docx/DmLedTWtUoNGX8xui9ocdUEjnNh)
## 知识库微调和参数调整
FastGpt 提供了搜索测试和对话测试两种途径对知识库进行微调,我们先来使用搜索测试对知识库进行调整。我们建议你提前收集一些用户问题进行测试,根据预期效果进行跳转。可以先进行搜索测试调整,判断知识点是否合理。
FastGPT 提供了搜索测试和对话测试两种途径对知识库进行微调,我们先来使用搜索测试对知识库进行调整。我们建议你提前收集一些用户问题进行测试,根据预期效果进行跳转。可以先进行搜索测试调整,判断知识点是否合理。
### 搜索测试
![搜索测试作用](imgs/10.png)
![搜索测试作用](/imgs/10.png)
你可能会遇到下面这种情况,由于“知识库”这个关键词导致一些无关内容的相似度也被搜索进去,此时就需要给第四条记录也增加一个“知识库”关键词,从而去提高它的相似度。
![搜索测试结果](imgs/11.png)
![搜索测试结果](/imgs/11.png)
![优化后的搜索测试结果](imgs/12.png)
![优化后的搜索测试结果](/imgs/12.png)
### 提示词设置
@@ -86,24 +96,24 @@ FastGpt 提供了搜索测试和对话测试两种途径对知识库进行微调
1. 告诉 Gpt 回答什么方面内容。
2. 给知识库一个基本描述,从而让 Gpt 更好的判断用户的问题是否属于知识库范围。
![提示词设置](imgs/13.png)
![提示词设置](/imgs/13.png)
### 更好的限定模型聊天范围
首先,你可以通过调整知识库搜索时的相似度和最大搜索数量,实现从知识库层面限制聊天范围。通常我们可以设置相似度为 0.82,并设置空搜索回复内容。这意味着,如果用户的问题无法在知识库中匹配时,会直接回复预设的内容。
![搜索参数设置](imgs/14.png)
![搜索参数设置](/imgs/14.png)
![空搜索控制效果](imgs/15.png)
![空搜索控制效果](/imgs/15.png)
由于 openai 向量模型并不是针对中文,所以当问题中有一些知识库内容的关键词时,相似度
会较高,此时无法从知识库层面进行限定。需要通过限定词进行调整,例如:
> 我的问题如果不是关于 FastGpt 的,请直接回复:“我不确定”。你仅需要回答知识库中的内容,不在其中的内容,不需要回答。
> 我的问题如果不是关于 FastGPT 的,请直接回复:“我不确定”。你仅需要回答知识库中的内容,不在其中的内容,不需要回答。
效果如下:
![限定词效果](imgs/16.png)
![限定词效果](/imgs/16.png)
当然gpt35 在一定情况下依然是不可控的。
@@ -111,7 +121,7 @@ FastGpt 提供了搜索测试和对话测试两种途径对知识库进行微调
与搜索测试类似,你可以直接在对话页里,点击“引用”,来随时修改知识库内容。
![查看答案引用](imgs/17.png)
![查看答案引用](/imgs/17.png)
## 总结
@@ -120,4 +130,4 @@ FastGpt 提供了搜索测试和对话测试两种途径对知识库进行微调
3. 最有效的知识库构建方式是 QA 和手动构建。
4. Q 的长度不宜过长。
5. 需要调整提示词,来引导模型回答知识库内容。
6. 可以通过调整搜索相似度、最大搜索数量和限定词来控制模型回复的范围。
6. 可以通过调整搜索相似度、最大搜索数量和限定词来控制模型回复的范围。

View File

@@ -0,0 +1,37 @@
---
title: "对接第三方 GPT 应用"
description: "通过与 OpenAI 兼容的 API 对接第三方应用"
icon: "model_training"
draft: false
toc: true
weight: 620
---
## 获取 API 秘钥
依次选择应用 -> 「API访问」然后点击「API 密钥」来创建密钥。
{{% alert context="warning" %}}
密钥需要自己保管好,一旦关闭就无法再复制密钥,只能创建新密钥再复制。
{{% /alert %}}
![](/imgs/fastgpt-api.png)
## 组合秘钥
利用刚复制的 API 秘钥加上 AppId 组合成一个新的秘钥,格式为:`API 秘钥-AppId`,例如:`fastgpt-z51pkjqm9nrk03a1rx2funoy-642adec15f04d67d4613efdb`
## 替换三方应用的变量
```bash
OPENAI_API_BASE_URL: https://fastgpt.run/api/openapi (改成自己部署的域名)
OPENAI_API_KEY = 组合秘钥
```
**[ChatGPT Next Web](https://github.com/Yidadaa/ChatGPT-Next-Web) 示例:**
![](/imgs/chatgptnext.png)
**[ChatGPT Web](https://github.com/Chanzhaoyu/chatgpt-web) 示例:**
![](/imgs/chatgptweb.png)

View File

@@ -1,4 +1,11 @@
# 提示词示例
---
title: "提示词示例"
description: "FastGPT 更多提示词示例"
icon: "sign_language"
draft: false
toc: true
weight: 610
---
## 客服
@@ -80,7 +87,7 @@
客户:谢谢。
样本示例5
87322.5。
87322.5。
客服:好的,您是要扁圆头半空心铆钉吗?您需要具体什么材质的呢?
客户:材质无所谓。您们的最低起订量是多少?
客服:起订量这边需要帮您查询一下系统。您是只要规格,材质无所谓吗?
@@ -103,4 +110,4 @@
客户全牙201不锈钢 M825
客服说:好的,您总共有几种产品需要报价?
客户:十几种
```
```

View File

@@ -0,0 +1,8 @@
---
weight: 400
title: "高级编排"
description: "FastGPT 高级编排文档"
icon: "family_history"
draft: false
images: []
---

View File

@@ -0,0 +1,8 @@
---
weight: 440
title: "编排示例"
description: "介绍 FastGPT 的高级编排实践案例"
icon: "list"
draft: false
images: []
---

View File

@@ -1,18 +1,25 @@
# 谷歌搜索
---
title: "联网 GPT"
description: "将 FastGPT 外接搜索引擎"
icon: "search"
draft: false
toc: true
weight: 441
---
![](./imgs/google_search_1.png)
![](/imgs/google_search_1.png)
![](./imgs/google_search_2.png)
![](/imgs/google_search_2.png)
如上图,利用 HTTP 模块,你可以轻松的外接一个搜索引擎。这里以调用 google search api 为例。
如上图,利用 HTTP 模块,你可以轻松的外接一个搜索引擎。这里以调用 Google Search API 为例。
## 注册 google search api
## 注册 Google Search API
[参考这篇文章,注册 google search api](https://zhuanlan.zhihu.com/p/174666017)
[参考这篇文章](https://zhuanlan.zhihu.com/p/174666017)
## 写一个 google search 接口
## 写一个 Google Search 接口
[这里用 laf 快速实现一个接口,即写即发布,无需部署。点击打开 laf cloud](https://laf.dev/)务必打开 POST 请求方式。
这里用 [Laf](https://laf.dev/) 快速实现一个接口,即写即发布,无需部署。务必打开 POST 请求方式。
```ts
import cloud from '@lafjs/cloud';
@@ -55,7 +62,7 @@ export default async function (ctx: FunctionContext) {
## 模块编排
复制下面配置,点击高级编排右上角的导入按键,导入该配置,导入后将接口地址复制到HTTP 模块
复制下面配置,点击高级编排右上角的导入按键,导入该配置,导入后将接口地址复制到HTTP 模块
```json
[
@@ -443,7 +450,7 @@ export default async function (ctx: FunctionContext) {
## 流程说明
1. 提取模块将用户的问题提取成搜索关键词
2. 将搜索关键词传入 HTTP 模块
3. HTTP 模块调用谷歌搜索接口,返回搜索内容
4. 将搜索内容传入【AI 对话】的提示词,引导模型进行回答。
1. 提取模块将用户的问题提取成搜索关键词
2. 将搜索关键词传入 HTTP 模块
3. HTTP 模块调用谷歌搜索接口,返回搜索内容
4. 将搜索内容传入【AI 对话】的提示词,引导模型进行回答。

View File

@@ -0,0 +1,87 @@
---
title: "高级编排介绍"
description: "快速了解 FastGPT 高级编排"
icon: "circle"
draft: false
toc: true
weight: 410
---
FastGPT 从 V4 版本开始采用新的交互方式来构建 AI 应用。使用了 Flow 节点编排的方式来实现复杂工作流,提高可玩性和扩展性。但同时也提高了上手的门槛,有一定开发背景的用户使用起来会比较容易。
![](/imgs/flow-intro1.png)
## 什么是模块?
在程序中,模块可以理解为一个个 Function 或者接口。可以理解为它就是一个**步骤**。将多个模块一个个拼接起来,即可一步步的去实现最终的 AI 输出。
如下图,这是一个最简单的 AI 对话。它由用户输入的问题、聊天记录以及 AI 对话模块组成。
![](/imgs/flow-intro2.png)
执行流程如下:
1. 用户输入问题后,会向服务器发送一个请求,并携带问题。从而得到【用户问题】模块的输出。
2. 根据设置的【最长记录数】来获取数据库中的记录数,从而得到【聊天记录】模块的输出。
经过上面两个流程就得到了左侧两个蓝色点的结果。结果会被注入到右侧的【AI】对话模块。
3. 【AI 对话】模块根据传入的聊天记录和用户问题,调用对话接口,从而实现回答。(这里的对话结果输出隐藏了起来,默认只要触发了对话模块,就会往客户端输出内容)
### 模块分类
从功能上,模块可以分为 3 类:
1. **只读模块**:全局变量、用户引导。
2. **系统模块**:聊天记录(无输入,直接从数据库取)、用户问题(流程入口)。
3. **功能模块**知识库搜索、AI 对话等剩余模块。(这些模块都有输入和输出,可以自由组合)。
### 模块的组成
每个模块会包含 3 个核心部分:固定参数、外部输入(左边有个圆圈)和输出(右边有个圆圈)。
+ 对于只读模块,只需要根据提示填写即可,不参与流程运行。
+ 对于系统模块,通常只有固定参数和输出,主要需要关注输出到哪个位置。
+ 对于功能模块,通常这 3 部分都是重要的,以下图的 AI 对话为例:
![](/imgs/flow-intro3.png)
- 对话模型、温度、回复上限、系统提示词和限定词为固定参数,同时系统提示词和限定词也可以作为外部输入,意味着如果你有输入流向了系统提示词,那么原本填写的内容就会被**覆盖**。
- 触发器、引用内容、聊天记录和用户问题则为外部输入,需要从其他模块的输出流入。
- 回复结束则为该模块的输出。
### 模块什么时候被执行?
模块执行的原则:
1. 仅关心**已连接的**外部输入,即左边的圆圈被连接了。
2. 当连接内容都有值时触发。
#### 示例 1
聊天记录模块会自动执行因此聊天记录输入会自动赋值。当用户发送问题时【用户问题】模块会输出值此时【AI 对话】模块的用户问题输入也会被赋值。两个连接的输入都被赋值后,会执行 【AI 对话】模块。
![](/imgs/flow-intro1.png)
#### 例子 2
下图是一个知识库搜索例子。
1. 历史记录会流入【AI 对话】模块。
2. 用户的问题会流入【知识库搜索】和【AI 对话】模块由于【AI 对话】模块的触发器和引用内容还是空,此时不会执行。
3. 【知识库搜索】模块仅一个外部输入,并且被赋值,开始执行。
4. 【知识库搜索】结果为空时“搜索结果不为空”的值为空不会输出因此【AI 对话】模块会因为触发器没有赋值而无法执行。而“搜索结果为空”会有输出,流向指定回复的触发器,因此【指定回复】模块进行输出。
5. 【知识库搜索】结果不为空时“搜索结果不为空”和“引用内容”都有输出会流向【AI 对话】此时【AI 对话】的 4 个外部输入都被赋值,开始执行。
![](/imgs/flow-intro4.png)
## 如何连接模块
1. 为了方便识别不同输入输出的类型FastGPT 给每个模块的输入输出连接点赋予不同的颜色,你可以把相同颜色的连接点连接起来。其中,灰色代表任意类型,可以随意连接。
2. 位于左侧的连接点为输入,右侧的为输出,连接只能将一个输入和输出连接起来,不能连接“输入和输入”或者“输出和输出”。
3. 可以点击连接线中间的 x 来删除连接线。
4. 可以左键点击选中连接线
## 如何阅读?
1. 建议从左往右阅读。
2.**用户问题** 模块开始。用户问题模块,代表的是用户发送了一段文本,触发任务开始。
3. 关注【AI 对话】和【指定回复】模块,这两个模块是输出答案的地方。

View File

@@ -0,0 +1,8 @@
---
weight: 420
title: "模块介绍"
description: "介绍 FastGPT 的常用模块"
icon: "apps"
draft: false
images: []
---

View File

@@ -1,24 +1,32 @@
# AI 对话
---
title: "AI 对话"
description: "FastGPT AI 对话模块介绍"
icon: "chat"
draft: false
toc: true
weight: 423
---
- 可重复添加(复杂编排时候防止线太乱,可以更美观)
## 特点
- 可重复添加(复杂编排时防止线太乱,可以更美观)
- 有外部输入
- 有静态配置
- 触发执行
- 核心模块
![](./imgs/aichat.png)
![](/imgs/aichat.png)
## 参数说明
### 对话模型
可以通过 [data/config.json](/docs/develop/data_config/chat_models) 配置可选的对话模型,通过 [OneAPI](http://localhost:3000/docs/develop/oneapi) 来实现多模型接入。
可以通过 [config.json](/docs/installation/reference/models/) 配置可选的对话模型,通过 [one-api](/docs/installation/one-api/) 来实现多模型接入。
### 温度 & 回复上限
温度:越低回答越严谨,少废话(实测下来,感觉差别不大)
回复上限:最大回复 token 数量(只有 OpenAI 模型有效)。注意,是回复!不是总 tokens。
+ **温度**:越低回答越严谨,少废话(实测下来,感觉差别不大)
+ **回复上限**:最大回复 token 数量(只有 OpenAI 模型有效)。注意,是回复!不是总 tokens。
### 系统提示词(可被外部输入覆盖)
@@ -30,7 +38,7 @@
### 引用内容
接收一个外部输入的数组,主要是由【知识库搜索】模块生成,也可以由 Http 模块从外部引入。数据结构例如下:
接收一个外部输入的数组,主要是由【知识库搜索】模块生成,也可以由 HTTP 模块从外部引入。数据结构例如下:
```ts
type DataType = {
@@ -52,7 +60,7 @@ const quoteList: DataType[] = [
最终发送给 LLM 大模型的数据是一个数组,内容和顺序如下:
```
```bash
[
系统提示词
引用内容
@@ -60,5 +68,4 @@ const quoteList: DataType[] = [
限定词
问题
]
```
```

View File

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

View File

@@ -0,0 +1,18 @@
---
title: "用户引导"
description: "FastGPT 用户引导模块介绍"
icon: "psychology"
draft: false
toc: true
weight: 426
---
## 特点
- 仅可添加 1 个
- 无外部输入
- 不参与实际调度
如图,可以在用户提问前给予一定引导。并可以设置引导问题。
![](/imgs/guide.png)

View File

@@ -1,10 +1,19 @@
# 历史记录
---
title: "历史记录"
description: "FastGPT 历史记录模块介绍"
icon: "history"
draft: false
toc: true
weight: 427
---
- 可重复添加(复杂编排时候防止线太乱,可以更美观)
# 特点
- 可重复添加(防止复杂编排时线太乱,重复添加可以更美观)
- 无外部输入
- 流程入口
- 自动执行
每次对话时,会从数据库取最多 n 条聊天记录作为上下文。注意,不是指本轮对话最多 n 条上下文,本轮对话还包括:提示词、限定词、引用内容和问题。
![](./imgs/history.png)
![](/imgs/history.png)

View File

@@ -1,4 +1,13 @@
# HTTP 模块
---
title: "HTTP 模块"
description: "FastGPT HTTP 模块介绍"
icon: "http"
draft: false
toc: true
weight: 428
---
## 特点
- 可重复添加
- 有外部输入
@@ -6,15 +15,15 @@
- 触发执行
- 核中核模块
![](./imgs/http1.png)
![](/imgs/http1.png)
## 介绍
HTTP 模块会向对应的地址发送一个 POST 请求Body 中携带 json 类型的参数,具体的参数可自定义并接收一个 json 响应值,字段也是自定义。如上图中,我们定义了一个入参:提取的字段(定义的 key 为 appointment类型为 string和一个出参:提取结果(定义的 key 为 response类型为 string
HTTP 模块会向对应的地址发送一个 POST 请求Body 中携带 JSON 类型的参数,具体的参数可自定义并接收一个 JSON 响应值,字段也是自定义。如上图中,我们定义了一个入参:提取的字段(定义的 key 为 appointment类型为 string和一个出参提取结果(定义的 key 为 response类型为 string
那么,这个请求的 curl 为:
那么,这个请求的命令为:
```curl
```bash
curl --location --request POST 'https://xxxx.laf.dev/appointment-lab' \
--header 'Content-Type: application/json' \
--data-raw '{
@@ -30,11 +39,11 @@ curl --location --request POST 'https://xxxx.laf.dev/appointment-lab' \
}
```
**如果你不想额外的部署服务,可以使用 laf 快速的搭建接口,即写即发,无需部署**
{{% alert context="warning" %}}
如果你不想额外部署服务,可以使用 [Laf](https://laf.dev/) 来快速开发上线接口,即写即发,无需部署。
[laf 在线地址](https://laf.dev/)
下面是一个请求例子:
下面是在 Laf 上编写的一个请求示例:
{{% /alert %}}
```ts
import cloud from '@lafjs/cloud';
@@ -92,4 +101,4 @@ export default async function (ctx: FunctionContext) {
## 作用
基于 HTTP 模块,你可以无限扩展,可以操作数据库、执行联网搜索、发送邮箱等等。如果你有有趣的案例,欢迎 PR 到 [编排案例](/docs/category/examples)
基于 HTTP 模块可以无限扩展,比如操作数据库、执行联网搜索、发送邮箱等等。如果你有有趣的案例,欢迎提交 PR 到 [编排案例](/docs/category/examples)

Some files were not shown because too many files have changed in this diff Show More