执门文章
FastGTP环境搭建,可直接使用在项目上
于 2024-04-28 23:01:31 发布
访问430
收藏0
文章标签:
大语言模型
LLM
ollama
通义千问
FastGPT

主要是分享FastGTP开源项目实现方案,FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,它有简单易用的可视化界面、自动数据预处理、工作流编排、强大的 API 集成等功能

一、系统架构图如下:

二、准备工作

1、搭建过程共分为四步,分别如下:LLM语言模型搭建、M3E向量模型搭建、ONE-API搭建、FastGTP环境搭建

本环境采用docker布署,对应docker和docker-compose版本如下:

docker:Docker version 26.0.1, build d260a54

docker-compose:Docker Compose version v2.20.3

三、LLM语言模型搭建

1、ollama安装

docker pull ollama/ollama
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

页面访问:http://192.168.137.202:11434/ ,ip改为对应服务器的ip,页面显示如下,Ollama is running 表示成功

2、Open WebUI安装(可以方便的在界面上操作,下载语言模型、测试等)

docker pull ghcr.io/open-webui/open-webui:main
docker run -d -p 8080:8080 -e OLLAMA_BASE_URL=http://192.168.137.202:11434 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

  上面的OLLAMA_BASE_URL改为ollama环境服务器的ip,然后登陆页面

    http://192.168.137.202:8080

   3、Open WebUI下载大模型通义千问qwen:0.5b,如下截图(第一次先注册登陆)

检测连接ollama环境是否连通,如下截图

下载通义千问qwen:0.5b语言模型

等下载完也之后,测试使用

四、M3E向量模型搭建


docker pull registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api
docker run -d --name m3e -p 6008:6008 registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api
docker ps |grep m3e

容器启动之后,使用如下命令查看

五、ONE-API搭建

1、环境安装

mkdir -p /data/fastgpt/one-api/data
docker pull justsong/one-api
docker run --name one-api -d --restart always -p 13000:3000 -e TZ=Asia/Shanghai -v /data/fastgpt/one-api/data:/data justsong/one-api

打开页面: http://192.168.137.202:13000/ ,然后注册,账号填root,密码填:123456,第一个注册的账号为管理员账号,注册之后就可以登陆了,登陆成功如下截图:

2、创建令牌,此令牌在fastgpt连接one-api时会使用,后面在搭fastgpt环境时,会使用此令牌

3、配置通义千问语言模型qwen:0.5b,和向量模型m3e,如下截图

配置m3e访问,密钥填sk-aaabbbcccdddeeefffggghhhiiijjjkkk,这个是固定的,不能变

4、测试

六、FastGTP环境搭建

fastgpt官方docker布署参考:https://doc.fastai.site/docs/development/docker/

不过官方写的文档比较散,按照我的步骤来布,几乎可以顺利布署成功

mkdir -p /data/fastgpt
cd /data/fastgpt

下载配置文件(可以直接下载,也可以用我下面配好的配置,就不用下载了)

curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml

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

1、docker-compose.yml(里面的配置内容,已经根据我本机的ip修改好了)

# 非 host 版本, 不使用本机代理
# (不懂 Docker 的,只需要关心 OPENAI_BASE_URL 和 CHAT_API_KEY 即可!)
version: '3.3'
services:
  pg:
    image: ankane/pgvector:v0.5.0 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.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: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18
    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
        exec docker-entrypoint.sh $$@
  fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:latest # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
    restart: always
    environment:
      # root 密码,用户名为: root
      - DEFAULT_ROOT_PSW=123456
      # 中转地址,如果是用官方号,不需要管。务必加 /v1
      - OPENAI_BASE_URL=http://192.168.137.202:13000/v1
      - CHAT_API_KEY=sk-WfqE4Tm63opBhMuk943031C1Eb6940C399C086Bb575bD0D2
      - DB_MAX_LINK=5 # database max link
      - TOKEN_KEY=any
      - ROOT_KEY=root_key
      - FILE_TOKEN_KEY=filetoken
      # mongo 配置,不需要改. 用户名myusername,密码mypassword。
      - MONGODB_URI=mongodb://myusername:mypassword@192.168.137.202:27017/fastgpt?authSource=admin
      # pg配置. 不需要改
      - PG_URL=postgresql://username:password@192.168.137.202:5432/postgres
    volumes:
      - ./config.json:/app/data/config.json
networks:
  fastgpt:

2、config.json文件(里面已经配好了qwen:0.5b和m3e向量模型)

{
  "systemEnv": {
    "openapiPrefix": "fastgpt",
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgHNSWEfSearch": 100
  },
  "llmModels": [
    {
      "model": "gpt-3.5-turbo",
      "name": "gpt-3.5-turbo",
      "maxContext": 16000,
      "avatar": "/imgs/model/openai.svg",
      "maxResponse": 4000,
      "quoteMaxToken": 13000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": false,
      "datasetProcess": true,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": true,
      "functionCall": true,
      "customCQPrompt": "",
      "customExtractPrompt": "",
      "defaultSystemChatPrompt": "",
      "defaultConfig": {}
    },
    {
      "model": "gpt-4-0125-preview",
      "name": "gpt-4-turbo",
      "avatar": "/imgs/model/openai.svg",
      "maxContext": 125000,
      "maxResponse": 4000,
      "quoteMaxToken": 100000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": false,
      "datasetProcess": false,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": true,
      "functionCall": false,
      "customCQPrompt": "",
      "customExtractPrompt": "",
      "defaultSystemChatPrompt": "",
      "defaultConfig": {}
    },
    {
      "model": "gpt-4-vision-preview",
      "name": "gpt-4-vision",
      "avatar": "/imgs/model/openai.svg",
      "maxContext": 128000,
      "maxResponse": 4000,
      "quoteMaxToken": 100000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": true,
      "datasetProcess": false,
      "usedInClassify": false,
      "usedInExtractFields": false,
      "usedInToolCall": false,
      "usedInQueryExtension": false,
      "toolChoice": true,
      "functionCall": false,
      "customCQPrompt": "",
      "customExtractPrompt": "",
      "defaultSystemChatPrompt": "",
      "defaultConfig": {}
    },
    {
      "model": "qwen:0.5b",
      "name": "qwen:0.5b",
      "avatar": "/imgs/model/openai.svg",
      "maxContext": 128000,
      "maxResponse": 4000,
      "quoteMaxToken": 100000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": true,
      "datasetProcess": true,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": true,
      "functionCall": false,
      "customCQPrompt": "",
      "customExtractPrompt": "",
      "defaultSystemChatPrompt": "",
      "defaultConfig": {}
    }

  ],
  "vectorModels": [
    {
      "model": "text-embedding-ada-002",
      "name": "Embedding-2",
      "avatar": "/imgs/model/openai.svg",
      "charsPointsPrice": 0,
      "defaultToken": 700,
      "maxToken": 3000,
      "weight": 100
    },
    {
      "model": "m3e",
      "name": "m3e",
      "price": 0.2,
      "defaultToken": 700,
      "maxToken": 3000
    }
  ],
  "reRankModels": [],
  "audioSpeechModels": [
    {
      "model": "tts-1",
      "name": "OpenAI TTS1",
      "charsPointsPrice": 0,
      "voices": [
        {
          "label": "Alloy",
          "value": "alloy",
          "bufferId": "openai-Alloy"
        },
        {
          "label": "Echo",
          "value": "echo",
          "bufferId": "openai-Echo"
        },
        {
          "label": "Fable",
          "value": "fable",
          "bufferId": "openai-Fable"
        },
        {
          "label": "Onyx",
          "value": "onyx",
          "bufferId": "openai-Onyx"
        },
        {
          "label": "Nova",
          "value": "nova",
          "bufferId": "openai-Nova"
        },
        {
          "label": "Shimmer",
          "value": "shimmer",
          "bufferId": "openai-Shimmer"
        }
      ]
    }
  ],
  "whisperModel": {
    "model": "whisper-1",
    "name": "Whisper1",
    "charsPointsPrice": 0
  }
}

2、启动

docker-compose up -d
docker ps

启动好了,查看容器应该有fastgpt、pg、mongo,应该有如下容器,其余容open-webui、m3e、one-api、ollama是前面步骤创建的

3、进入mongo容器执行副本集合初始化

# 查看 mongo 容器是否正常运行
docker ps
# 进入容器
docker exec -it mongo bash

# 连接数据库(这里要填Mongo的用户名和密码)
mongo -u myusername -p mypassword --authenticationDatabase admin

# 初始化副本集。如果需要外网访问,mongo:27017 。如果需要外网访问,需要增加Mongo连接参数:directConnection=true
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo:27017" }
  ]
})
# 检查状态。如果提示 rs0 状态,则代表运行成功
rs.status()

4、重启服务命令如下(比如修改配置了,需要重启时):

docker-compose down
docker-compose up -d

七、FastGTP页面配置

1、创建知识库

手动录入知识问题

2、创建应用

大功告成

于 2024-04-28 23:01:31 发布
访问430
收藏0

实力雄厚的技术网站

产品

概述

资源

文档

版权问题

请联系客服

联系我们

联系我们


© 财瑞智能科技 2024蜀ICP备2023018175号-2川公网安备51011202000656号