赞
踩
下载yml和json文件
cd ~/
sudo mkdir fastgpt
cd 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
修改yml文件,打开下载的docker-compose.yml
文件,修改fastgpt端口为3200:3000
(其中外部暴露端口3200可以任意)
拉去镜像,这个过程稍微比较长,如果timeout,重新拉去,或者更改docker镜像源,如何修改请自行百度
sudo docker-compose pull && sudo docker-compose up -d
手动初始化mongo(fastgpt 4.7版本不需要初始化,可以进入容器先查询)
查看mongo容器是否正常运行
sudo docker ps
进入容器
sudo docker exec -it mongo bash
链接数据库(这里需要填mongo用户名和密码)
mongo -u myusername -p mypassword --authenticationDatabase admin
直接查询初始化副本集的状态,如果提示rs0状态,则代表成功
rs.status() # 成功则退出
exit()
浏览器访问 http://localhost:3020 则可以访问fastgpt的页面,默认账号是 root
,密码是 1234
下载文件和模型:
程序文件下载地址:链接 https://pan.baidu.com/s/1JjIUkQohjDMyurapD5gfqg?pwd=lky0
模型下载(模型文件将整个文件夹的内容都下载,耗时比较长):
修改chatglm3程序文件的bat
程序文件解压后,鼠标右键编辑02启动api.bat
文件
复制下载好模型的绝对路径
将复制好的路径替换bat文件的模型路径(set MODEL_PATH),并保存退出
@echo off chcp 65001 >null echo 启动中,请耐心等待 set PYTHON=..\glut\python.exe set SC_PATH=..\glut\Scripts set CU_PATH=..\glut\Lib\site-packages\torch\lib set PATH=%SC_PATH%;%CU_PATH%;%PATH% set HF_ENDPOINT=https://hf-mirror.com set HF_HOME=..\huggingface set MODEL_PATH=..\..\chatglm3-6b-32k # 我上面使用的相对路径,也可以使用绝对路径 # set MODEL_PATH=E:\LLM\chatglm3-6b-32k CD openai_api_demo %PYTHON% openai_api.py pause
双击启动02启动api.bat
文件,启动完成之后就能看到使用的是http://0.0.0.0:8000
,请勿关闭这个cmd窗口。
注意:请勿使用右键管理员运行,会报错:The system cannot find the path specified.
实现本地私有部署,并调用本地LLM,则需要本地的想量化模型处理文本资料,选择M3E小模型,占用资源不高,CPU也可运行。
stawky/m3e-large-api:latest
registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
端口号: 6008 环境变量确认端口是否被占用,m3e默认使用6008端口,使用下面命令查看是否被占用
netsh int ipv4 show excludedport tcp
部署m3e(本人使用gpu来运算)
使用cpu运行
sudo docker run -d -p 6008:6008 --name=m3e-large-api registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
使用gpu运行
sudo docker run -d -p 6008:6008 --gpus all --name=m3e-large-api registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
源镜像(推荐)
sudo docker run -d -p 6008:6008 --gpus all --name=m3e-large-api stawky/m3e-large-api:latest
其中 --gpus all
是使用gpu来运行,此过程比较慢,等待部署完成
运行并访问oneapi:访问 http://localhost:3000/ 并登录。初始账号用户名为 root
,密码为 123456
点击令牌,添加新的令牌
如图所示:
复制ChatGPT Next Web
# 这是我的令牌
https://app.nextchat.dev/#/?settings={"key":"sk-kuI2uEsxnJV8XgIN69493c7088D544Aa9b9d645d950e85F7","url":"http://localhost:3000"}
# 其中key为:sk-kuI2uEsxnJV8XgIN69493c7088D544Aa9b9d645d950e85F7
# url:http://localhost:3000
通常一般教程会让大家去配置渠道,但是我们是用的windows wsl ubuntu 和docker-desktop,后续配置m3e渠道测试的时候会访问不通,会出现connect: 192.168.0.137:6008 connection refused
(如图),所以我们需要重新配置docker-compose.yml
docker-compose.yml,其中OPENAI_BASE_URL
无修修改就是用默认的http://oneapi:3000/v1
,CHAT_API_KEY
为上面复制ChatGPT Next Web
的 key
,还需要在oneapi
中增加一个 extra_hosts
, 详细配置如下:
docker-compose.yml
# 数据库的默认账号和密码仅首次运行时设置有效 # 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~ # 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。 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 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: container_name: fastgpt # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 # git image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 # 阿里云 ports: - 3020:3000 networks: - fastgpt depends_on: - mongo - pg restart: always environment: # 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-kuI2uEsxnJV8XgIN69493c7088D544Aa9b9d645d950e85F7 # 数据库最大连接数 - 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 volumes: - ./config.json:/app/data/config.json - ./fastgpt/tmp:/app/tmp mysql: 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:latest ports: - 3001:3000 depends_on: - mysql networks: - fastgpt # oneapi中测试不通的话,增加下面代码 extra_hosts: - host.docker.internal:host-gateway 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:
config.json
需要在llmModels
中增加chatglm3
的模型,在vectorModels
中增加m3e
,全部配置如下:
{ "feConfigs": { "lafEnv": "https://laf.dev" }, "systemEnv": { "openapiPrefix": "fastgpt", "vectorMaxProcess": 15, "qaMaxProcess": 15, "pgHNSWEfSearch": 100 }, "llmModels": [ { "model": "chatglm3", "name": "chatglm3", "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": "qwen", "name": "qwen", "maxContext": 32000, "avatar": "/imgs/model/qwen.svg", "maxResponse": 5000, "quoteMaxToken": 5000, "maxTemperature": 1.2, "charsPointsPrice": 0, "censor": false, "vision": false, "datasetProcess": true, "usedInClassify": true, "usedInExtractFields": true, "usedInToolCall": true, "usedInQueryExtension": true, "toolChoice": true, "functionCall": false, "customCQPrompt": "", "customExtractPrompt": "", "defaultSystemChatPrompt": "", "defaultConfig": {} }, { "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": {} } ], "vectorModels": [ { "model": "text-embedding-ada-002", "name": "Embedding-2", "avatar": "/imgs/model/openai.svg", "charsPointsPrice": 0, "defaultToken": 512, "maxToken": 3000, "weight": 100, "dbConfig": {}, "queryConfig": {} }, { "model": "m3e", "name": "m3e", "avatar": "/imgs/model/openai.svg", "charsPointsPrice": 0, "defaultToken": 700, "maxToken": 3000, "weight": 100 } ], "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 } }
保存之后在你的windows系统或者Ubuntu中运行以下代码:
# windows
docker-compose down && docker-compose pull && docker-compose up -d
# Ubuntu
sudo docker-compose down && sudo docker-compose pull && sudo docker-compose up -d
访问 http://localhost:3000/ 并登录。初始账号用户名为 root
,密码为 123456
,点击渠道
并添加新渠道,如图:
添加chatglm3和m3e渠道,
chatglm3渠道的默认key: sk-key
m3e渠道的默认key:sk-aaabbbcccdddeeefffggghhhiiijjjkkk
切记:Base Url后面的端口要是你docker或者api暴露端口,例如是m3e在docker run -p 6009:6008, 那么m3e模型的端口就是http://host.docker.internal:6009
(只是举例)
在渠道列表页面点击测试,其中m3e没有chat测试,所以返回404为正常。如图所示:
打开浏览器访问 http://localhost:3020
, 输入账号root
,密码1234
如图所示
这里的索引模型我们选择刚才添加的m3e,文件处理模型选择 chatglm3
我的示例文档是一个txt文件,所以我选择文本数据集
然后点击下一步,上传。上传之后你的文档会索引,这时候你开启的chatglm3的cmd窗口中会出现如图的训练代码,索引中你的显卡(因为之前m3e是显卡训练)占用率很高,直到训练完成,训练完成之后会出现下图的显示:
知识库已就绪之后,创建聊天应用。
这样我们就完成了整个部署。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。