前言
本次安裝的版本為 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 fastgptcd 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模型的信息。直接復制已有的內容,然后修改model
和name
的內容。vectorModels
中,填寫自己調用的向量模型。與上相同,直接復制已有的內容,然后修改model
和name
的內容。{"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:# dbpg:image: pgvector/pgvector:0.7.0-pg15 # docker hub# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云container_name: pgrestart: alwaysports: # 生產環境建議不要暴露- 5432:5432networks:- fastgptenvironment:# 這里的配置只有首次運行生效。修改后,重啟鏡像是不會生效的。需要把持久化數據刪除再重啟,才有效果- POSTGRES_USER=username- POSTGRES_PASSWORD=password- POSTGRES_DB=postgresvolumes:- ./pg/data:/var/lib/postgresql/datamongo: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: mongorestart: alwaysports:- 27017:27017networks:- fastgptcommand: mongod --keyFile /data/mongodb.key --replSet rs0environment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypasswordvolumes:- ./mongo/data:/data/dbentrypoint:- bash- -c- |openssl rand -base64 128 > /data/mongodb.keychmod 400 /data/mongodb.keychown 999:999 /data/mongodb.keyecho 'const isInited = rs.status().ok === 1if(!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; doecho "Waiting for MongoDB to start..."sleep 2done# 執行初始化副本集的腳本mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js# 等待docker-entrypoint.sh腳本執行的MongoDB服務進程wait $$!# fastgptsandbox:container_name: sandboximage: ghcr.io/labring/fastgpt-sandbox:v4.8.20-fix2 # git# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.20-fix2 # 阿里云networks:- fastgptrestart: alwaysfastgpt:container_name: fastgptimage: ghcr.io/labring/fastgpt:v4.8.8-fix2 # git# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.20-fix2 # 阿里云ports:- 3000:3000networks:- fastgptdepends_on:- mongo- pg- sandboxrestart: alwaysenvironment:# 前端訪問地址: 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=falsevolumes:- ./config.json:/app/data/config.json# oneapimysql:# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云image: mysql:8.0.36container_name: mysqlrestart: alwaysports:- 3306:3306networks:- fastgptcommand: --default-authentication-plugin=mysql_native_passwordenvironment:# 默認root密碼,僅首次運行有效MYSQL_ROOT_PASSWORD: oneapimmysqlMYSQL_DATABASE: oneapivolumes:- ./mysql:/var/lib/mysqloneapi:container_name: oneapiimage: ghcr.io/songquanpeng/one-api:v0.6.7# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云ports:- 3001:3000depends_on:- mysqlnetworks:- fastgptrestart: alwaysenvironment:# 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=fastgptvolumes:- ./oneapi:/data networks:fastgpt:
1.4 啟動容器
在路徑fastgpt下的終端運行
docker compose up -d
待結束后,查看容器情況。結果如下則說明工程正確啟動。
?【過程中可能遇到錯誤】
現象:端口 3306 被占用:
問題查看:使用下面命令查看端口被占用情況。
發現端口 3306 被本地的 mysqld 進程(PID 1203)占用了。這是一個獨立的 MySQL 服務,運行在宿主機上,而不是 Docker 容器中。sudo lsof -i :3306
解決:停止宿主機上的 MySQL 服務。然后重新啟動容器
sudo systemctl stop mysql # sudo kill -9 1203 (或者直接殺掉進程)docker compose up -d
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 的重啟
- 在 文件 docker-compose.yml 中,搜索
CHAT_API_KEY
,將前面復制的令牌粘貼到這里# AI模型的API Key。(這里默認填寫了OneAPI的快速默認key,測試通后,務必及時修改)- CHAT_API_KEY=sk-fastgptsk-enxd9BewOzi0eaoGB2AdD5BdEf834a5e9b0e269780703dD8
- 重啟容器
docker compose down docker compose up -d
重啟了后,就可以在服務器中訪問 http://127.0.0.1:3000,使用默認賬號 root 和密碼 1234 登錄。
登錄后界面如下圖。功能測試主要在左側的【工作臺】【知識庫】。操作流程如下。
3.2 知識庫
- 新建知識庫,【+新建】、【知識庫】、【通用知識庫】、命名、選擇配置好的向量模型。
- 成功后界面左側,【數據集】【搜索測試】【配置】三項。
【數據集】界面中,右上角【新建/導入】、這里測試【文本數據集】、【本地文件】… 后續的操作流程如下圖所示
- 文件添加成功后,可以點進文件名稱,如上圖。點進去后,可以看到文檔分割成塊后的數據。通過這里的數據,可以看到分割的是否OK。
- 然后在【搜索測試】中,可以測試 問題檢索出好壞。在下圖中【語義檢索】中,可以進一步勾選,這里默認不變。
- 在【配置】中,可以修改模型的選擇。
3.3 工作臺
- 創建一個【簡易應用】。操作如下圖:
- 配置關聯的知識庫,然后進行問答。如下圖
- 然后進行 應用發布,點擊右上角的【發布】
- 點擊【發布渠道】界面,然后【創建新鏈接】、【開始使用】、【復制鏈接】在瀏覽器中打開。
- 鏈接的界面下,進行問答。
- 若想其他電腦都能訪問,則需完成 在服務啟動時綁定到公網IP,開放防火墻端口等操作。