fastgpt+ollama搭建本地AI大模型服务

ppylox
·6/15/2024·40 阅读

前段时间了解到了dify这个开源的 LLM 应用开发平台,通过这个平台可以很方便的部署自己的大模型。

尝试在本地电脑上通过docker部署,发现镜像无法拉取,不确定是不是受前段时间docker hub下架的影响。

放弃了dify转而投降了fastgpt,跟dify是同一类产品,虽然据说功能没有dify强大,但是作为个人体验还是不错的。

以下为本地部署步骤,本地电脑配置:rtx3060 12显存+32g内存。


准备 Docker 环境

下载安装docker-desktop

开始部署

1. 下载 docker-compose.yml

非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载配置文件和对应版本的docker-compose.yml


所有 docker-compose.yml 配置文件中 MongoDB 为 5.x,需要用到AUX指令集,部分 CPU 不支持,需手动更改其镜像版本为 4.4.24**(需要自己在docker hub下载,阿里云镜像没做备份)

Linux 快速脚本


mkdir fastgpt\ncd fastgpt\ncurl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json\n\n# pgvector 版本(测试推荐,简单快捷)\ncurl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml\n# milvus 版本\n# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-milvus.yml\n# zilliz 版本\n# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-zilliz.yml\n

2. 修改 docker-compose.yml 环境变量

这一步骤我下载的是docker-compose-pgvector 文件,修改后的配置内容如下:

\n# 数据库的默认账号和密码仅首次运行时设置有效\n# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~\n# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。\n# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)\n\nversion: '3.3'\nservices:\n  # db\n  pg:\n    # image: pgvector/pgvector:latest # docker hub\n    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云\n    container_name: pg\n    restart: always\n    ports: # 生产环境建议不要暴露\n      - 5432:5432\n    networks:\n      - fastgpt\n    environment:\n      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果\n      - POSTGRES_USER=username\n      - POSTGRES_PASSWORD=password\n      - POSTGRES_DB=postgres\n    volumes:\n      - ./pg/data:/var/lib/postgresql/data\n  mongo:\n    image: mongo:latest # dockerhub\n    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云\n    # image: mongo:4.4.29 # cpu不支持AVX时候使用\n    container_name: mongo\n    restart: always\n    ports:\n      - 27017:27017\n    networks:\n      - fastgpt\n    command: mongod --keyFile /data/mongodb.key --replSet rs0\n    environment:\n      - MONGO_INITDB_ROOT_USERNAME=myusername\n      - MONGO_INITDB_ROOT_PASSWORD=mypassword\n    volumes:\n      - ./mongo/data:/data/db\n    entrypoint:\n      - bash\n      - -c\n      - |\n        openssl rand -base64 128 > /data/mongodb.key\n        chmod 400 /data/mongodb.key\n        chown 999:999 /data/mongodb.key\n        echo 'const isInited = rs.status().ok === 1\n        if(!isInited){\n          rs.initiate({\n              _id: "rs0",\n              members: [\n                  { _id: 0, host: "mongo:27017" }\n              ]\n          })\n        }' > /data/initReplicaSet.js\n        # 启动MongoDB服务\n        exec docker-entrypoint.sh "$$@" &\n\n        # 等待MongoDB服务启动\n        until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do\n          echo "Waiting for MongoDB to start..."\n          sleep 2\n        done\n\n        # 执行初始化副本集的脚本\n        mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js\n\n        # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程\n        wait $$!\n\n  # fastgpt\n  sandbox:\n    container_name: sandbox\n    image: ghcr.io/labring/fastgpt-sandbox:v4.8.4 # git\n    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.4 # 阿里云\n    networks:\n      - fastgpt\n    restart: always\n  fastgpt:\n    container_name: fastgpt\n    image: ghcr.io/labring/fastgpt:v4.8.4 # git\n    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.4 # 阿里云\n    ports:\n      - 3060:3000\n    networks:\n      - fastgpt\n    depends_on:\n      - mongo\n      - pg\n      - sandbox\n    restart: always\n    environment:\n      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。\n      - DEFAULT_ROOT_PSW=1234\n      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。\n      - OPENAI_BASE_URL=http://host.docker.internal:3001/v1\n      # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)\n      - CHAT_API_KEY=sk-4RKe66ackr7v7iFxD0E58bDbF2104a92Af81A8De47C643F6\n      # 数据库最大连接数\n      - DB_MAX_LINK=30\n      # 登录凭证密钥\n      - TOKEN_KEY=any\n      # root的密钥,常用于升级时候的初始化请求\n      - ROOT_KEY=root_key\n      # 文件阅读加密\n      - FILE_TOKEN_KEY=filetoken\n      # MongoDB 连接参数. 用户名myusername,密码mypassword。\n      - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin\n      # pg 连接参数\n      - PG_URL=postgresql://username:password@pg:5432/postgres\n      # sandbox 地址\n      - SANDBOX_URL=http://sandbox:3000\n      # 日志等级: debug, info, warn, error\n      - LOG_LEVEL=info\n    volumes:\n      - ./config.json:/app/data/config.json\n\n  # oneapi\n  mysql:\n    image: mysql:latest\n    container_name: mysql\n    restart: always\n    ports:\n      - 3306:3306\n    networks:\n      - fastgpt\n    command: --default-authentication-plugin=mysql_native_password\n    environment:\n      # 默认root密码,仅首次运行有效\n      MYSQL_ROOT_PASSWORD: oneapimmysql\n      MYSQL_DATABASE: oneapi\n    volumes:\n      - ./mysql:/var/lib/mysql\n  oneapi:\n    container_name: oneapi\n    image: ghcr.io/songquanpeng/one-api:latest\n    ports:\n      - 3001:3000\n    depends_on:\n      - mysql\n    networks:\n      - fastgpt\n    restart: always\n    environment:\n      # mysql 连接参数\n      - SQL_DSN=root:oneapimmysql@tcp(host.docker.internal:3306)/oneapi\n      # 登录凭证加密密钥\n      - SESSION_SECRET=oneapikey\n      # 内存缓存\n      - MEMORY_CACHE_ENABLED=true\n      # 启动聚合更新,减少数据交互频率\n      - BATCH_UPDATE_ENABLED=true\n      # 聚合更新时长\n      - BATCH_UPDATE_INTERVAL=10\n      # 初始化的 root 密钥(建议部署完后更改,否则容易泄露)\n      - INITIAL_ROOT_TOKEN=fastgpt\n    volumes:\n      - ./oneapi:/data\nnetworks:\n  fastgpt:\n

主要改动:

1、fastgpt中的OPENAI_BASE_URLdocker地址:

http://host.docker.internal:3001/v1

2、mysql的地址改为:

SQL_DSN=root:oneapimmysql@tcp(host.docker.internal:3306)/oneapi

3. 启动容器

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


# 启动容器\ndocker-compose up -d\n# 等待10s,OneAPI第一次总是要重启几次才能连上Mysql\nsleep 10\n# 重启一次oneapi(由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次解决,等待作者修复)\ndocker restart oneapi\n

特别注意的是过十秒钟再重启oneapi服务。

4. 打开 OneAPI 添加模型

可以通过ip:3001访问OneAPI,默认账号为root密码为123456。

在OneApi中添加合适的AI模型渠道。点击查看相关教程

5. 访问 FastGPT

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

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

首次运行,会自动初始化 root 用户,密码为 1234(与环境变量中的DEFAULT_ROOT_PSW一致),日志里会提示一次MongoServerError: Unable to read from a snapshot due to pending collection catalog changes;可忽略。



开,,开源的 LLM 应用开发平台源的 LLM 应用开发平台源的 L开源的 LLM 应用开发平台LM 应用开发平台开源的 LLM 应用开发平台

评论 (0)

暂无评论,来写第一条吧