首页 > 其他分享 >FastGPT及大模型API(Docker)私有化部署指南

FastGPT及大模型API(Docker)私有化部署指南

时间:2025-01-14 21:00:04浏览次数:1  
标签:FastGPT mongo api fastgpt API pg new Docker data

FastGPT及大模型API(Docker)私有化部署指南

image

  经过优化,在不影响FastGPT功能的情况下,大幅降低了部署的设备配置要求,仅需1c1h即可正常部署使用。

  官方要求配置:

image

  优化后的实际占用情况:

  运行内存仅需370M(测试学习场景下)

image

  官方推荐部署容器:

  ​pg

  ​mongo

  ​sandbox

  ​fastgpt

  ​mysql

  ​oneapi

  优化后实际部署容器:

  ​fastgpt

  ​new-api

  ​mongo

  ​sandbox

  ​pg

  优化内容:

  删除mysql容器,降低内存占用。

  将oneapi更换为new-api,原使用的mysql数据库更换为pg数据库。

  使用pg容器作为公共数据库,存储FastGPT的向量数据和new-api的数据。

  ‍

  ‍

  并且优化后不会影响FastGPT的更新及使用。

  ‍

开始部署

  部署前,需要提前配置好docker环境

image

准备配置文件

  首先下载配置文件

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

  这个暂时不用修改

  创建docker-compose.yml​编排文件,写入以下内容(可根据情况自行更改参数)

  默认对外开放端口:

  12002:FastGPT

  12003:new-api

  12004:pg数据库

# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 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: # 生产环境建议不要暴露
      - 12005: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.17 # git
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.17 # 阿里云
    networks:
      - fastgpt
    restart: always
  fastgpt:
    container_name: fastgpt
    # image: ghcr.io/labring/fastgpt:v4.8.17 # git
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.17 # 阿里云
    ports:
      - 12002:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    cpus: '0.65'  # 限制最多使用 1 个 CPU 核心
    environment:
      # 前端访问地址: http://localhost:3000
      - FE_DOMAIN=http://localhost:12002
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=1234
      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
      - OPENAI_BASE_URL=http://new-api: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
    volumes:
      - ./config.json:/app/data/config.json

  # new-api
  
  new-api:
    image: 1ms.run/calciumion/new-api:latest
    container_name: new-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - 12003:3000
    volumes:
      - ./newapi:/data
      - ./napi-logs:/app/logs
    networks:
      - fastgpt
    environment:
      - SQL_DSN=postgres://username:password@pg:5432/new-api  # Point to the mysql service
      # - REDIS_CONN_STRING=redis://redis
      - TZ=Asia/Shanghai
    #      - SESSION_SECRET=random_string  # 多机部署时设置,必须修改这个随机字符串!!!!!!!
    #      - NODE_TYPE=slave  # Uncomment for slave node in multi-node deployment
    #      - SYNC_FREQUENCY=60  # Uncomment if regular database syncing is needed
    #      - FRONTEND_BASE_URL=https://openai.justsong.cn  # Uncomment for multi-node deployment with front-end URL
    healthcheck:
      test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]
      interval: 30s
      timeout: 10s
      retries: 3
networks:
  fastgpt:

  需要重点修改的是fastgpt​容器的环境变量

FE_DOMAIN=  // 前端访问地址
DEFAULT_ROOT_PSW= // 登录密码
OPENAI_BASE_URL= // AI模型的API地址哦。务必加 /v1。编排文件这里默认填写了OneApi的访问地址。
CHAT_API_KEY= //  AI模型的API Key。

  其他内容不重要,按需修改即可

启动容器

  在 docker-compose.yml 同级目录下执行。请确保docker-compose​版本最好在2.17以上,否则可能无法执行自动化命令。

# 启动容器
docker-compose up -d

  打开 ip:12002​ 即可访问FastGPT页面

  后面会继续更新如何添加其他自定义模型

image

标签:FastGPT,mongo,api,fastgpt,API,pg,new,Docker,data
From: https://www.cnblogs.com/runyuai/p/18671697/privatization-deployment-fastgpt-and-large-mode

相关文章

  • 使用NVENC API编码D3D12材质
    前言  之前在写图形引擎的时候就有个想法,想让我的图形引擎以一个固定的时间步进(DeltaTime)来渲染材质,并且把连续渲染的材质以视频的方式保存下来。其实我很久之前就把这个东西实现了,最近也是修改了下代码,准备写一篇关于这个的随笔。介绍  看了些网上的视频以及相关的文章,把......
  • UnityAPI:利器CullingGroup
    https://docs.unity3d.com/Manual/CullingGroupAPI.html这个API非常强大,可以快速的实现自定义的Occlusionculling和Lod系统,并且性能表现极佳。简要原理CullingGroup为了性能考虑,把所有的物体模拟为球形,传入摄像机后,检测球形与相机视窗的交集,通过onStateChanged通知应用......
  • 无法联网怎么在docker中安装Ribbitmq
    如果无法连接互联网,无法在Docker中安装RabbitMQ。但是,您可以使用本地镜像或者手动下载RabbitMQ的Docker镜像并进行安装。以下是使用本地镜像的步骤:从可以上网的计算机上拉取RabbitMQ的官方Docker镜像:dockerpullrabbitmq:3-management然后,使用dockersave命令将镜像保存为tar......
  • Composition API与Options API的区别
    CompositionAPI相比OptionsAPI的优点主要体现在代码的灵活性、可重用性、逻辑组织等方面,尤其是在大型项目或复杂组件中更为显著。1.更好的逻辑组织在OptionsAPI中,组件的不同逻辑通常分散在data、computed、methods、mounted等不同选项中。当组件逻辑复杂或包含多个功......
  • 使用Nexus搭建Docker仓库
    一、背景Nexus之前已支持了nuget,由于docker仓库和前面几个存在比较大的差异,所以我特此记录下走过的坑。希望能对后来者有所帮助~~(当然,docker私有仓库,大多数是推荐使用harbor,因为我这里的某些历史原因,就沿用nexus)二、建立仓库依次建立代理仓库、私有仓库、组合仓库。需要注意......
  • 诗歌创作 AI 大师 API 数据接口
    诗歌创作AI大师API数据接口AI/文本生成基于AI模型的诗歌创作大师诗歌创作/文学生成。1.产品功能支持根据主题生成高质量原创诗歌;自动识别主题内容,生成符合情感和语境的诗歌;多语言支持,可创作不同语言的诗歌;基于AI模型,持续优化诗歌生成质量;适用于文学创作、......
  • 使用OpenAI GPT-3 API构建智能对话系统
    技术背景介绍在人工智能飞速发展的今天,智能对话系统已经渗透到各个行业中。无论是客服机器人、虚拟助手,还是智能家居控制系统,智能对话系统都展现出了巨大的应用潜力。GPT-3作为目前最先进的自然语言处理模型之一,通过API可以方便地集成到我们的应用中,实现智能对话功能。核......
  • docker 部署clickhouse
    clickhouse部署mkdir-p/home/data/clickhouse/datamkdir-p/home/data/clickhouse/confmkdir-p/home/data/clickhouse/logmkdir-p/home/data/clickhouse/client-confchmod-R777/home/data/clickhouse/dockerrun--rm-d--name=clickhouse--ulimitnofile=262144:2......
  • 【HarmonyOS NAPI 深度探索4】安装开发环境(Node.js、C++ 编译器、node-gyp)
    【HarmonyOSNAPI深度探索4】安装开发环境(Node.js、C++编译器、node-gyp)要使用N-API开发原生模块,第一步就是配置好开发环境。虽然HarmonyOSNext中提供了DevEco-Studio一站式IDE,可以直接帮助我们完成开发环境的搭建,但是为了更深入的了解NAPI,我们用最原始的编译工具一步......
  • SDK与API
    1.1.SDK的定义SDK是SoftwareDevelopmentKit的缩写,翻译成中文是:软件开发工具包。SDK是一组工具、库、文档和示例代码的集合,旨在帮助开发者更轻松地创建应用程序或集成特定服务。SDK通常由硬件平台、操作系统或服务提供商提供,以便开发者能够利用其平台或服务的功能。1.2.SD......