AIGC系列:FastGPT的搭建部署

1,098 阅读9分钟

前言

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!

FastGPT都有什么功能以及怎么使用这里就不细说了,可以参考官方文档地址:doc.fastgpt.in/docs/intro/

也可以通过它的官网进行在线试用,如下: FastGPT 在线使用:fastgpt.in

本文主要讲一讲FastGPT如何搭建部署的。

安装docker

FastGPT需要很多应用支持,包括MongoDB、PostgreSQL、OneAPI、PgVector等等,一个个安装配置很麻烦。所以FastGPT提供了docker快速部署的方案,所以首先要安装docker和docker-compose。

我的环境是Windows+WSL,所以选用了下面的方案来进行安装。

使用wsl在windows上安装docker

docs.docker.com/desktop/wsl…

1、下载Docker Desktop最新版本地址

2、安装,注意安装的时候要选择WSL 2

3、安装完打开Docker,可以不用登录。打开设置Setting,在General下选中Use the WSL 2 based engine,然后apply$restart

4、打开设置Setting,在Resources -> WSL integration下选择要使用docker的虚拟机,然后apply$restart

5、打开虚拟机,检查一下docker和docker-compose的版本

docker -v
docker-compose -v

如果都正常,就可以在这个虚拟机中使用docker了。

其他环境安装docker

大家直接参考官方文档:doc.fastgpt.in/docs/develo…

部署

安装完docker后就可以开始部署了,这部分需要代理,提前准备好就不细说了。

下载 docker-compose.yml

进入到虚拟机中,执行

    mkdir fastgpt
    cd fastgpt
    curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

    curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml

官方给向量数据库提供了三种不同的方案,这里我选用的是官方推荐的pgvector,如果喜欢其他的,可以参考官方文档下载其他的(doc.fastgpt.in/docs/develo…

修改 docker-compose.yml 环境变量

这部分因为我选用的是pgvector,所以不需要处理

启动容器

接着第一步,目录不变,执行

docker-compose up -d

就开始自动进行部署了,这个过程非常慢,因为需要下载很多应用,有些还需要代理才可以,而且速度很慢。所以在执行这一步之前先代理,然后执行过程中耐心等待。如果速度特别慢,就换了路线试试。

执行完成后,就自动启动了。

但是我们需要重启一次oneapi(官方说由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次)

docker-compose up -d执行完之后等十几秒在执行

docker restart oneapi

这样基本就执行成功了。

这时候在docker desktop中就可以看到一个fastgpt的容器了,状态是running。

image.png 这里面可以看到所有运行的应用,点击可以看到详细的运行日志。

这时候虚拟机关了也不影响服务。FastGPT的容器在docker desktop中管理即可,所以如果彻底关闭了docker desktop,服务会停止。不过重新打开后会自动启动,但是进入平台会发现数据都没了,所以需要重新进入虚拟机关闭docker再重新启动即可

docker-compose down
docker-compose up -d

访问FastGPT

FastGPT通过OneApi来添加和管理AI模型渠道,所以除了自身的平台还有一个OneApi平台。

访问OneApi

可以通过ip:3001访问OneAPI,默认账号为root密码为123456 至于OneApi如何使用,大家参考官网吧,这里不细说了。

访问FastGPT

目前可以通过ip:3000直接访问(注意防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的DEFAULT_ROOT_PSW

如果需要域名访问,请自行安装并配置 Nginx。

首次运行,会自动初始化root用户,密码为 1234(与环境变量中的DEFAULT_ROOT_PSW一致)。

添加渠道和模型

这时候实际上还无法正常使用的,因为没有添加模型渠道。虽然在config.json文件中可以看到有几个默认的模型,比如gpt-4o-mini等,但是如果直接使用,比如创建知识库添加文件进行训练的时候,就会提示没有渠道。所以我们还需要在OneApi中添加渠道和模型。

这里用国内百度文心千帆为例。

创建文心千帆应用

在百度文心千帆平台上创建应用,并且为想用的模型开通计费,这里就不细说了。

(注意FastGPT需要大语言模型,同时还需要向量模型用于知识库索引,所以如果只使用文心千帆的话,还要开通一个向量模型,比如bge-large-zh)

创建完应用就可以看到应用的API Key 和 Secret Key,后续要用。

新增渠道

在OneApi平台的渠道tab下,新增一个渠道。

0030663A-C44D-4235-96F6-0347361D6A8E.png

类型是选择的,名称可以随便填。分组不用动,直接用default即可。

当类型选择完后,会自动添加一些模型,这里可以去掉多余的模型,只留自己开通的。另外这部分模型可能不全,或者自己训练了模型,这里可以自己添加模型。(注意模型名称要填对,尤其大小写)

如果需要模型重定向就按提示配置即可,不需要就不用管这里。

密钥也是根据提示,添加在文心千帆平台中获取的应用密钥,是APIKey|SecretKey的形式,注意中英文符号和空格。

最后提交即可。

测试渠道

添加完渠道后,在渠道列表中可以点测试按钮测试该渠道,检查配置是否正确。

创建令牌

OneApi中已经有一个默认令牌了,如果没有别的需要,直接使用即可。

配置模型

当上面的工作完成后,我们就可以通过这个渠道来访问下面的所有模型。这时候需要在FastGPT中来配置模型。这就需要修改之前下载的config.json文件。

添加大语言模型

在config.json文件中,在llmModels下配置大语言模型,添加一个新模型,如下:

    {
      "model": "ERNIE-Speed-128K", // 模型名(对应OneAPI中渠道的模型名)
      "name": "ERNIE-Speed-128K", // 模型别名
      "avatar": "/imgs/model/ernie.svg", // 模型的logo
      "maxContext": 125000, // 最大上下文
      "maxResponse": 4000, // 最大回复
      "quoteMaxToken": 120000, // 最大引用内容
      "maxTemperature": 1.0, // 最大温度
      "charsPointsPrice": 0, // n积分/1k token(商业版)
      "censor": false, // 是否开启敏感校验(商业版)
      "vision": false, // 是否支持图片输入
      "datasetProcess": true, // 是否设置为知识库处理模型(QA),务必保证至少有一个为true,否则知识库会报错
      "usedInClassify": true, // 是否用于问题分类(务必保证至少有一个为true"usedInExtractFields": true, // 是否用于内容提取(务必保证至少有一个为true"usedInToolCall": true, // 是否用于工具调用(务必保证至少有一个为true"usedInQueryExtension": true, // 是否用于问题优化(务必保证至少有一个为true"toolChoice": true, // 是否支持工具选择(分类,内容提取,工具调用会用到。目前只有gpt支持)
      "functionCall": false, // 是否支持函数调用(分类,内容提取,工具调用会用到。会优先使用 toolChoice,如果为false,则使用 functionCall,如果仍为 false,则使用提示词模式)
      "customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型
      "customExtractPrompt": "", // 自定义内容提取提示词
      "defaultSystemChatPrompt": "", // 对话默认携带的系统提示词
      "defaultConfig": {} // 请求API时,挟带一些默认配置(比如 GLM4 的 top_p)
    }

这里要特别注意model,一定要与OneApi中的模型名称完全一致,尤其注意大小写。

另外要注意最大温度,最大回复等设置,一定要与模型api中的要求一致,否则使用的时候就有可能因为参数错误导致无法正确调用模型。

avatar即模型logo,FastGPT自带了一些logo文件,在projects/app/public/imgs/model目录下,比如:

  • /imgs/model/baichuan.svg - 百川
  • /imgs/model/chatglm.svg - 智谱
  • /imgs/model/calude.svg - calude
  • /imgs/model/ernie.svg - 文心一言
  • /imgs/model/moonshot.svg - 月之暗面
  • /imgs/model/openai.svg - OpenAI GPT
  • /imgs/model/qwen.svg - 通义千问
  • /imgs/model/yi.svg - 零一万物
  • /imgs/model/gemini.svg - gemini
  • /imgs/model/deepseek.svg - deepseek
  • /imgs/model/minimax.svg - minimax

这里直接使用即可。

其他的参考注释添加即可。

在llmModels下可以看到自带的几个模型,比如gpt-4o-mini,我们没配置渠道无法使用,就可以删掉了。

添加向量模型

在config.json文件中,在vectorModels下配置向量模型,添加一个新模型,如下:

    {
      "model": "bge-large-zh", // 模型名(与OneAPI对应)
      "name": "bge-large-zh", // 模型展示名
      "avatar": "/imgs/model/ernie.svg", // logo
      "charsPointsPrice": 0, // n积分/1k token
      "maxToken": 512, // 最大 token
      "weight": 100,  // 优先训练权重
      "defaultConfig": {}, // 自定义额外参数。例如,如果希望使用 embedding3-large 的话,可以传入 dimensions:1024,来返回1024维度的向量。(目前必须小于1536维度)
      "dbConfig": {}, // 存储时的额外参数(非对称向量模型时候需要用到)
      "queryConfig": {} // 参训时的额外参数
    }

与上面的注意事项一样,不赘述了。

同样这里可以将不用的自带模型删掉。

重启FastGPT

配置完config文件并保存后,重启FastGPT即可。

docker-compose down 
docker-compose up -d

先停止docker再启动,等待启动完成后进去FastGPT,就可以看到新的模型了。这时候我们再重新创建知识库并上传文本就可以正常训练了。

添加自有模型

对于自己部署训练的模型,也可以通过上面的方式来添加,只不过在渠道配置这里有些不同。

比如自己通过Ollama部署的模型,选择Ollama,并且手动添加自己训练的模型名称。

然后密钥这里就不需要了,随便填写即可。

最后在代理这栏填入自己模型对应的API地址。

添加完成测试成功后,剩下的步骤就基本一样了。

总结

这样FastGPT就部署搭建完成了,而且我们也配置了渠道和模型,下面就可以来使用了。