【大模型】Ubuntu下 fastgpt 的部署和使用

news/2025/2/26 13:27:50

前言

本次安装的版本为 fastgpt:v4.8.8-fix2。
最新版本fastgpt:v4.8.20-fix2 问答时报错,本着跑通先使用起来,就没有死磕下去,后面bug解了再进行记录。

github连接:https://github.com/labring/FastGPT
fastgpt 安装说明:https://doc.tryfastgpt.ai/docs/development/docker/

1 fastgpt 工程部署


1.1 fastgpt的简介

FastGPT 是一个基于大型语言模型(LLM)的知识库问答系统,专注于高效对话和任务处理。以下是关于 FastGPT 的详细介绍:


功能

  • 专属 AI 客服:通过导入文档或问答对进行训练,AI 模型可以根据文档内容以交互式对话方式回答问题。
  • 可视化工作流编排:基于 Flow 模块,用户可以设计复杂的工作流,实现自动化和智能化的处理流程。
  • 自动数据预处理:支持多种文档格式(如 Word、PDF、Excel、Markdown 等)的导入,自动完成文本预处理、向量化和问答分割,节省手动训练时间。
  • 强大的 API 集成:API 接口对齐 OpenAI 官方接口,可以轻松集成到企业微信、公众号、飞书等平台。
  • 多模型兼容性:支持 GPT、Claude、文心一言等多种 LLM 模型。


特点

  • 高效性:经过优化,能够快速生成高质量内容,适合实时性要求较高的场景。
  • 开源性:遵循附加条件的 Apache License 2.0 开源协议,用户可以进行二次开发。
  • 个性化与定制化:可以根据具体业务需求定制训练,调整语言风格、语气或行业专用术语。
  • 数据处理能力强:能够整合大量非结构化数据,自动优化答案质量和查询效率。
  • 用户友好:对话流畅,具备自然的语义理解能力,适合长对话和复杂任务。

1.2 工程所需前置环境

服务器的配置:ubuntu 22.04、Tesla V100-SXM2-32GB、CUDA Version12.2

lsb_release -a
nvidia-smi

在这里插入图片描述
fastgpt的安装和使用的前提环境:

  • docker 的安装:参考 【环境配置】ubuntu中 Docker的安装
  • LLMs 的语言大模型:deepseek-r1:32b。参考链接 【大模型】Ubuntu下安装ollama,DeepSseek-R1:32b的本地部署和运行
  • 向量模型:m3e-large。参考链接 【大模型】Xinference的安装和部署。当然向量模型也可以选择ollama启动bge-large模型。

1.3 fastgpt 的配置文件

yml 文件和 json 文件的最新版本下载,参考链接 https://doc.tryfastgpt.ai/docs/development/docker/ 中给出了下载命令如下。

mkdir fastgpt
 cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
		
# pgvector 版本(测试推荐,简单快捷)
curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml
# milvus 版本
# 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


个人使用该版本在使用时报错。所以这里直接给出 fastgpt:v4.8.8-fix2 使用的 yml 和json 的文件,将其放置在路径fastgpt下。

config.json】 文件内容如下。

  • 其中 llmModels中,填写自己调用的chat模型的信息。直接复制已有的内容,然后修改 modelname 的内容。
  • vectorModels 中,填写自己调用的向量模型。与上相同,直接复制已有的内容,然后修改 modelname 的内容。
{
  "feConfigs": {
    "lafEnv": "https://laf.dev"
  },
  "systemEnv": {
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgHNSWEfSearch": 100
  },
  "llmModels": [
    {
      "model": "deepseek-r1:32b",
      "name": "deepseek-r1:32b",
      "avatar": "/imgs/model/deepseek.svg",
      "maxContext": 128000,
      "maxResponse": 128000,
      "quoteMaxToken": 32000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": false,
      "datasetProcess": true,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": false,
      "functionCall": false,
      "customCQPrompt": "",
      "customExtractPrompt": "",
      "defaultSystemChatPrompt": "",
      "defaultConfig": {}
    }
  ],
  "vectorModels": [
    // 如果需要多语言支持和高精度语义检索,推荐 BGE-M3。
    // 如果主要处理中文文本,且资源受限,推荐 M3E。
    // 如果需要中英文混合处理且对精度要求较高,推荐 BGE-Large。
    {
      "model": "bge-large:latest",
      "name": "bge-large:latest",
      "charsPointsPrice": 0,
      "defaultToken": 256,
      "maxToken": 512,
      "weight": 100,
      "defaultConfig": {},
      "dbConfig": {},
      "queryConfig": {}
    },
    {
      "model": "m3e-large",
      "name": "m3e-large",
      "charsPointsPrice": 0,
      "defaultToken": 256,
      "maxToken": 512,
      "weight": 100,
      "defaultConfig": {},
      "dbConfig": {},
      "queryConfig": {}
    }
  ],
  "reRankModels": [
  ],
  "audioSpeechModels": [

  ],
  "whisperModel": 
  [  
]

}


docker-compose.yml】 内容如下:
如果原本的镜像下载过慢或者超时,将其注释,再把下一行的阿里云镜像解注释。

# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)

# version: '3.3'
services:
  # db
  pg:
    image: pgvector/pgvector:0.7.0-pg15 # docker hub
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云
    container_name: pg
    restart: always
    ports: # 生产环境建议不要暴露
      - 5432:5432
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=postgres
    volumes:
      - ./pg/data:/var/lib/postgresql/data
  mongo:
    image: mongo:5.0.18 # dockerhub
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    # image: mongo:4.4.29 # cpu不支持AVX时候使用
    container_name: mongo
    restart: always
    ports:
      - 27017:27017
    networks:
      - fastgpt
    command: mongod --keyFile /data/mongodb.key --replSet rs0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=myusername
      - MONGO_INITDB_ROOT_PASSWORD=mypassword
    volumes:
      - ./mongo/data:/data/db
    entrypoint:
      - bash
      - -c
      - |
        openssl rand -base64 128 > /data/mongodb.key
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        echo 'const isInited = rs.status().ok === 1
        if(!isInited){
          rs.initiate({
              _id: "rs0",
              members: [
                  { _id: 0, host: "mongo:27017" }
              ]
          })
        }' > /data/initReplicaSet.js
        # 启动MongoDB服务
        exec docker-entrypoint.sh "$$@" &

        # 等待MongoDB服务启动
        until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do
          echo "Waiting for MongoDB to start..."
          sleep 2
        done

        # 执行初始化副本集的脚本
        mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js

        # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
        wait $$!

  # fastgpt
  sandbox:
    container_name: sandbox
    image: ghcr.io/labring/fastgpt-sandbox:v4.8.20-fix2 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.20-fix2 # 阿里云
    networks:
      - fastgpt
    restart: always
  fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:v4.8.8-fix2 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.20-fix2 # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    environment:
      # 前端访问地址: http://localhost:3000
      - FE_DOMAIN=http://localhost:3000
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=1234
      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
      - OPENAI_BASE_URL=http://oneapi:3000/v1
      # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)
      - CHAT_API_KEY=sk-fastgpt
      # 数据库最大连接数
      - DB_MAX_LINK=30
      # 登录凭证密钥
      - TOKEN_KEY=any
      # root的密钥,常用于升级时候的初始化请求
      - ROOT_KEY=root_key
      # 文件阅读加密
      - FILE_TOKEN_KEY=filetoken
      # MongoDB 连接参数. 用户名myusername,密码mypassword。
      - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin
      # pg 连接参数
      - PG_URL=postgresql://username:password@pg:5432/postgres
      # sandbox 地址
      - SANDBOX_URL=http://sandbox:3000
      # 日志等级: debug, info, warn, error
      - LOG_LEVEL=info
      - STORE_LOG_LEVEL=warn
      # 工作流最大运行次数
      - WORKFLOW_MAX_RUN_TIMES=1000
      # 批量执行节点,最大输入长度
      - WORKFLOW_MAX_LOOP_TIMES=100
      # 自定义跨域,不配置时,默认都允许跨域(多个域名通过逗号分割)
      - ALLOWED_ORIGINS=
      # 是否开启IP限制,默认不开启
      - USE_IP_LIMIT=false
    volumes:
      - ./config.json:/app/data/config.json

  # oneapi
  mysql:
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云
    image: mysql:8.0.36
    container_name: mysql
    restart: always
    ports:
      - 3306:3306
    networks:
      - fastgpt
    command: --default-authentication-plugin=mysql_native_password
    environment:
      # 默认root密码,仅首次运行有效
      MYSQL_ROOT_PASSWORD: oneapimmysql
      MYSQL_DATABASE: oneapi
    volumes:
      - ./mysql:/var/lib/mysql
  oneapi:
    container_name: oneapi
    image: ghcr.io/songquanpeng/one-api:v0.6.7
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云
    ports:
      - 3001:3000
    depends_on:
      - mysql
    networks:
      - fastgpt
    restart: always
    environment:
      # mysql 连接参数
      - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi
      # 登录凭证加密密钥
      - SESSION_SECRET=oneapikey
      # 内存缓存
      - MEMORY_CACHE_ENABLED=true
      # 启动聚合更新,减少数据交互频率
      - BATCH_UPDATE_ENABLED=true
      # 聚合更新时长
      - BATCH_UPDATE_INTERVAL=10
      # 初始化的 root 密钥(建议部署完后更改,否则容易泄露)
      - INITIAL_ROOT_TOKEN=fastgpt
    volumes:
      - ./oneapi:/data
networks:
  fastgpt:

1.4 启动容器

在路径fastgpt下的终端运行

docker compose up -d

待结束后,查看容器情况。结果如下则说明工程正确启动。
在这里插入图片描述

过程中可能遇到错误

  1. 现象:端口 3306 被占用:
    在这里插入图片描述
    问题查看:使用下面命令查看端口被占用情况。
    发现端口 3306 被本地的 mysqld 进程(PID 1203)占用了。这是一个独立的 MySQL 服务,运行在宿主机上,而不是 Docker 容器中。

    sudo lsof -i :3306
    

    解决:停止宿主机上的 MySQL 服务。然后重新启动容器

    sudo systemctl stop mysql  
    # sudo kill -9 1203  (或者直接杀掉进程)
    
    docker compose up -d
    
  2. oneapi没有启动起来:
    该问题个人没有遇到。但较多人遇到过,这里记录下解决方法:

    # 等待10s,OneAPI第一次总是要重启几次才能连上Mysql
    sleep 10
    # 重启一次oneapi(由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次解决)
    docker restart oneapi
    

2 oneapi 配置


2.1 oneapi 的简介

OneAPI 是一个统一的接口管理与分发系统,旨在通过提供一个单一、统一的接口,简化对多个后端服务或数据源的访问。
它具备以下核心功能和特点:

核心功能

  • 集中式 API 密钥管理:
    提供集中式的 API 密钥管理和二次分发功能,确保安全性和灵活性。
    支持令牌的过期时间、额度和 IP 范围管理。
  • 多系统功能整合:
    将来自不同系统的功能和服务整合在一起,开发者只需与一个接口交互,无需分别处理多个不同的 API。
    支持多种主流 AI 模型和服务,包括 OpenAI、百度文心一言、阿里通义千问等。
  • 简化开发与管理:
    简化开发过程,提高开发效率。
    便于维护和管理,支持动态更新和跨平台同步。

特点

  • 一键部署:
    打包成单个可执行文件,提供 Docker 镜像,实现一键部署和开箱即用的便捷体验。
    支持多种部署方式,包括本地部署、Docker 部署和面板部署。
  • 适用场景:
    适用于企业、开发者和研究者,简化多 AI 服务的接入和管理。
    支持负载均衡、流式传输和多机部署,提升系统可用性和性能。

2.2 oneapi 的配置

在浏览器访问 http://127.0.0.1:3001,使用默认账号 root 和密码 123456 登录。
在这里插入图片描述

2.2.1 oneapi 的渠道

OneAPI 的渠道管理功能允许用户将不同的大模型 API(如 OpenAI、百度文心一言、阿里通义千问等)统一接入到 OneAPI 平台中。每个渠道对应一个 API Key,用户可以通过以下步骤添加和管理渠道。

  • ollama部署的模型 的oneapi的渠道配置
    在控制台中点击【渠道】选项卡,选择【添加新的渠道】。
    在这里插入图片描述
    然后界面如下图:
    在这里插入图片描述
    • 类型】选择对应的模型类型 ollama。
    • 名称】自定义渠道名称。这里填写了【ollama】。
    • 模型】选择或填入支持的模型。若是填入的方式,一定注意名称的正确填写,可使用命令【ollama list】查看ollama下载的模型。这里填写【deepseek-r1:32b、bge-large:latest】
      在这里插入图片描述
    • 密钥】这里是本地部署的模型,密钥随便填写。
    • 代理】这里填写部署ollama模型的地址。
    • 提交】点击“提交”完成渠道添加。

      测试】如下图,配置正确的话,点击绿色框的测试,界面会弹出 “测试成功” 的字样。
      需要注意的是,如果仅添加向量模型,这里是无法测试通的。
      在这里插入图片描述
  • xinference 部署的模型 的oneapi的渠道配置
    在这里插入图片描述

2.2.2 oneapi 的令牌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制这里的令牌。

3 fastgpt 的基本使用


3.1 fastgpt 的重启

  1. 在 文件 docker-compose.yml 中,搜索 CHAT_API_KEY,将前面复制的令牌粘贴到这里
          # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)
          - CHAT_API_KEY=sk-fastgptsk-enxd9BewOzi0eaoGB2AdD5BdEf834a5e9b0e269780703dD8
    
  2. 重启容器
    docker compose down
    docker compose up -d
    

重启了后,就可以在服务器中访问 http://127.0.0.1:3000,使用默认账号 root 和密码 1234 登录。
登录后界面如下图。功能测试主要在左侧的【工作台】【知识库】。操作流程如下。


3.2 知识库

  1. 新建知识库,【+新建】、【知识库】、【通用知识库】、命名、选择配置好的向量模型。
    在这里插入图片描述
    在这里插入图片描述
  2. 成功后界面左侧,【数据集】【搜索测试】【配置】三项。
    【数据集】界面中,右上角【新建/导入】、这里测试【文本数据集】、【本地文件】… 后续的操作流程如下图所示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 文件添加成功后,可以点进文件名称,如上图。点进去后,可以看到文档分割成块后的数据。通过这里的数据,可以看到分割的是否OK。
    在这里插入图片描述
  4. 然后在【搜索测试】中,可以测试 问题检索出好坏。在下图中【语义检索】中,可以进一步勾选,这里默认不变。
    在这里插入图片描述
  5. 在【配置】中,可以修改模型的选择。
    在这里插入图片描述

3.3 工作台

  1. 创建一个【简易应用】。操作如下图: 在这里插入图片描述
    在这里插入图片描述
  2. 配置关联的知识库,然后进行问答。如下图
    在这里插入图片描述
  3. 然后进行 应用发布,点击右上角的【发布】
    在这里插入图片描述
  4. 点击【发布渠道】界面,然后【创建新链接】、【开始使用】、【复制链接】在浏览器中打开。
    在这里插入图片描述
    在这里插入图片描述
  5. 链接的界面下,进行问答。
    在这里插入图片描述
  6. 若想其他电脑都能访问,则需完成 在服务启动时绑定到公网IP,开放防火墙端口等操作。

http://www.niftyadmin.cn/n/5868761.html

相关文章

jdk21下载、安装(Windows、Linux、macOS)

Windows 系统 1. 下载安装 访问 Oracle 官方 JDK 下载页面 或 OpenJDK 下载页面,根据自己的系统选择合适的 Windows 版本进行下载(通常选择 .msi 安装包)。 2. 配置环境变量 右键点击 “此电脑”,选择 “属性”。 在左侧导航栏…

vLLM专题(十四)-自动前缀缓存

一、介绍 自动前缀缓存(Automatic Prefix Caching,简称 APC)缓存现有查询的 KV 缓存,以便新查询如果与现有查询共享相同的前缀,可以直接重用 KV 缓存,从而跳过共享部分的计算。 注意 有关 vLLM 如何实现 APC 的技术细节,请参阅此处。 二、在 vLLM 中启用 APC 在 vLLM …

防火墙双机热备---VRRP,VGMP,HRP(超详细)

双机热备技术-----VRRP,VGMP,HRP三个组成 注:与路由器VRRP有所不同,路由器是通过控制开销值控制数据包流通方向 防火墙双机热备: 1.主备备份模式 双机热备最大的特点就是防火墙提供了一条专门的备份通道(心…

low rank decomposition如何用于矩阵的分解

1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解(Low Rank Decomposition)是其中一种方法,旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积,从而降低复…

网络安全防御:蓝队重保备战与应急溯源深度解析

课程目标 本课程旨在培养专业的网络安全蓝队成员,通过系统化的学习和实战演练,使学员能够掌握网络安全防御的核心技能,包括资产测绘、应急响应、系统安全应急溯源分析、网络层溯源分析以及综合攻防演练等。学员将能够熟练运用各种工具和技术…

Deepseek-ClickHouse数据库的安全策略

简介 ClickHouse是一个高性能的列式数据库管理系统,旨在处理大量数据的实时分析和查询。它的设计目标是提供快速、高效的查询性能,同时保证数据的安全性和可靠性。近期,DeepSeek的ClickHouse数据库因未经身份验证的访问漏洞,意外…

kubernetes学习笔记(3)——存储抽象

挂载 nfs是kubernetes存储层可选其中一种网络存储方式。 原生方式数据挂载 apiVersion: apps/v1 kind: Deployment metadata:labels:app: nginx-pv-demoname: nginx-pv-demo spec:replicas: 2selector:matchLabels:app: nginx-pv-demotemplate:metadata:labels:app: nginx-p…

Golang学习笔记_38——享元模式

Golang学习笔记_35——代理模式 Golang学习笔记_36——装饰器模式 Golang学习笔记_37——外观模式 文章目录 享元模式(Flyweight Pattern)详解一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 文字编辑器2. 游戏开发3. …