FastGPT 是一個基於 LLM 大語言模型的知識庫問答系統,提供開箱即用的資料處理、模型呼叫等能力。同時可以透過 Flow 視覺化進行工作流編排,從而實現複雜的問答場景!
官網地址為:https://github.com/labring/FastGPT
應用場景
具體的玩法是什麼:新增或者採集文章,新增到自己的知識庫,FastGPT會向量化儲存。整合上ChatGPT。
當你提問的內容匹配到自己採集的文章時,會讓AI整合知識庫的內容進行回覆。
比如:下載100篇指定品類的小紅書爆文。配合ChatGPT。
可以讓AI更高質量的產出此品類下的文章 。搭建自己定製化的AI智慧知識助手。
本文參考官方教程,進行佈署,在Mac下的佈署會有一點問題,官方倉庫也沒有issue提到,故記錄。
一、安裝 Docker 和 docker-compose
Docker是一種容器技術,可以快速佈署環境到機器上,並且和主機隔離,應該相當廣泛。
其中最核心的概念有2個,一個是映象images,一個是容器container。
映象就像是一個模板,容器就是利用這個模板建立的環境。
docker-compose則是docker專用的編排工具,就是設計好模板,讓docker按模板來下載、啟動並執行相關的映象。
下面是FastGPT官方的流程。
# 安裝 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安裝 docker-compose
curl -L https://github.com/docker/compose/releases/download/2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 驗證安裝
docker -v
docker-compose -v
實際應用中,Mac安裝會比較簡單,可以參考:https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
docker-compose安裝可以參考:https://docs.docker.com/compose/install/standalone/
下載dmg安裝包,直接就可以安裝上。
Linux會複雜一些。安裝好之後,可以很快速的搭建本機或者線上的環境,比如我本機Mac上,可以快速搭建一個隨用隨開的MySQL資料庫。
只要一行就可以了。先去Docker官方的中央倉庫選好映象。https://hub.docker.com/ ,注意不同的tag代表不同的版本說明。
我選擇mysql8.3進行安裝,複製頁面上的引數命令。https://hub.docker.com/_/mysql/tags
# 1、拉取映象image
docker pull mysql:8.3.0
# 建立本地目錄:
mkdir -p {data,conf,backup,logs,mysql-files}
# 配置埠和對映本地目錄
docker run --name mymysql5.8 \
--restart always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=xxxx \
-v /data/env/mysql/data:/var/lib/mysql \
-v /data/env/mysql/conf:/etc/mysql/conf.d \
-v /data/env/mysql/backup:/backup \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
-d mysql:8.3.0
如果想建立第二個庫,改個新埠,並把-name改個名字,即可執行。
還有很多用法,可以百度一下,很多相關的資料。
二、下載FastGPT
依次執行下面命令,建立 FastGPT 檔案並拉取docker-compose.yml和config.json,執行完後目錄下會有 2 個檔案。
cd ~/MyCodeEnv
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
三、配置修改
修改docker-compose.yml中的
1、OPENAI_BASE_URL 改為你的GPT的連結。預設為https://api.openai.com/v1,如果你有魔法環境,不需要改,如果在國內本地,改為中轉代理地址。
2、CHAT_API_KEY,對應的ChatGPT的key值。
至於中轉代理,可以用Nginx進行中轉或者Clash,也可以購買別人建立好的。當然也可以用OneAPI,同樣使用Docker搭建。不過需要搭建到HK這些節點,國內是訪問不到GPT的API的。
如果直接使用 OneAPI 的話,OPENAI_BASE_URL=OneAPI訪問地址/v1;CHAT_API_KEY=令牌
我在本地搭建了OneAPI,所以填配置為:
OPENAI_BASE_URL=http://localhost:13000/v1
CHAT_API_KEY=sk-xxxxxxxx # OneAPI後臺的Key不是ChatGPT的。特別注意。非OneAPI後臺則是填ChatGPT的key值。
如果有需要還可以修改別的資訊
最後啟動
# 在 docker-compose.yml 同級目錄下執行
docker-compose pull
docker-compose up -d
Mac上有Docker管理工具,安裝好docker之後自帶的。
看到都在Running中代表正常。
如果是Linux系統可以使用docker ps 檢查執行狀態。
四、初始化 Mongo 副本集(4.6.8以前可忽略)
FastGPT 4.6.8 後使用了 MongoDB 的事務,需要執行在副本集上。副本集沒法自動化初始化,需手動操作。
# 檢視 mongo 容器是否正常執行
docker ps
# 進入容器
docker exec -it mongo bash
# 連線資料庫(這裡要填Mongo的使用者名稱和密碼)
mongo -u myusername -p mypassword --authenticationDatabase admin
mongo -u root -p QyhsTech2023 --authenticationDatabase admin
# 初始化副本集。如果需要外網訪問,mongo:27017 可以改成 ip:27017。但是需要同時修改 FastGPT 連線的引數(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
# 檢查狀態。如果提示 rs0 狀態,則代表執行成功
rs.status()
這一步會有很大的問題。官方的倉庫也有大量的人反映 https://github.com/labring/FastGPT/issues/823
官方的解決方案我放到最後了,參考之後並沒有解決。安裝時一切正常。登陸時,卻提示:
Operation users.findOne() buffering timed out after 10000ms
後來反覆刪除安裝依然不行。但是在啟動過程中發現Docker提示:WARNING: MongoDB 5.0+ requires a CPU with AVX support
查了一下,應該是映象不支援Mac M2晶片,但是看介面上mongo容器是正常Running狀態。
於是進入容器檢查
docker exec -it mongo bash
ps aux|grep mongo
發現並沒有mongo程序,查了一下資料目錄,也沒有檔案出來。懷疑是mongo並沒有啟動。
於是重新檢查docker-compose.yml配置檔案。
把image的基礎映象改為官方版本,支援aarm64的Mac映象的。
具體操作為:修改docker-compose.yml
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18
修改為:
image: mongo:5.0.18
儲存並重新安裝:
docker-compose down
docker-compose up -d
這下檢查資料庫有內容了。再回過去,初始化官方要求的副本集。一切正常了。
四、訪問 FastGPT並使用
目前可以透過 ip:3000 直接訪問(注意防火牆)。登入使用者名稱為 root,密碼為docker-compose.yml環境變數裡設定的 DEFAULT_ROOT_PSW。
不修改配置的話,預設為:
http://localhost:3000
預設為:
賬號:root
密碼:1234
如果布到公網可以加一層Nginx,繫結上域名使用。
Mongo 啟動失敗
docker-compose 示例最佳化 Mongo 副本集引數,不需要手動建立再掛載。如果無法啟動,可以嘗試更換下面的指令碼:
1、終端中執行:
openssl rand -base64 756 > ./mongodb.key
chmod 600 ./mongodb.key
chown 999:root ./mongodb.key
2、修改 docker-compose.yml:
mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里雲
container_name: mongo
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
- ./mongodb.key:/data/mongodb.key
3、重啟服務
docker-compose down
docker-compose up -d
4、進入容器執行副本集合初始化(看上方)
最後的介面如圖
可以往裡面匯入文章,FastGPT會自動進行處理了。
如果有別的模型,比如訊飛的,360的。也可以接入,方法,
就是使用OneAPI包裝這幾家的API。
修改config.json,第二步下載的配置檔案之一,增加上對應平臺的model引數即可。
沒有ChatGPT依然可以玩國內的AI,免費的也不少。要不要來一套啊。。。
更多精彩內容,請關注我的公眾號:青塬科技。