基於開源的 ChatGPT Web UI 專案,快速構建屬於自己的 ChatGPT 站點

Java極客技術發表於2023-04-01

作為一個技術博主,了不起比較喜歡各種折騰,之前給大家介紹過 ChatGPT 接入微信,釘釘和知識星球(如果沒看過的可以翻翻前面的文章),最近再看開源專案的時候,發現了一個 ChatGPT Web UI 專案。

想著剛好之前沒有將 ChatGPT 接入過 Web UI,有了這個開源專案可以拿來使用,真是不錯,下面是實操的安裝步驟,分享給大家。

安裝

官方在 Github 的專案文件上提供了很多中的安裝方式,包括手動安裝,docker 部署,以及遠端部署等方法,了不起在選擇部署方式的時候,一開始為了簡單想著直接使用 docker 部署就好,可是誰想到在伺服器上面部署好了過後,在網站設定登入賬號密碼後一直會Connection errored out 的問題。

經過翻閱官方的 issue ,看到很多人都有一樣的問題,根據 issue 中提供的方式,透過修改 dockerfile 最終才解決了這個問題。同時為了修改一些頁面的標題所以決定 fork 原始碼,然後自己重新打包映象的方式來部署。

下載原始碼

首先我們將 Github 中的原始碼倉庫 fork 一下,然後再將自己的倉庫克隆下來,git clone https://github.com/自己的 github 賬號/chatgpt-web.git

下載完成過後,我們進入到專案的目錄中,然後進行依賴的安裝,命令如下

cd chatgpt-web
pip install -r requirements.txt

這一步的時候我們可能會出現一些問題,如下所示

  1. pip 不存在:這種的話需要先安裝 Python 環境,這裡不過多介紹;
  2. ERROR: No matching distribution found for tiktoken (from -r requirements.txt (line 4)):這種是自己的 pip 映象中不存在相關依賴的包,需要更換映象

    pip install <package> -i https://pypi.org/simple
  3. 官方提供了一個常見問題的清單,可以參考解決官方提供的一個常見問題列表來進行解決。

正常來說遇到相關問題都可以解決,了不起這邊就遇到了第二個問題,參照更換映象的方式解決了,不過環境不同遇到的問題也不相同,大家可以自己排查一下。

原始碼部署

首先我們嘗試一下,在不修改原始碼的情況下,使用 docker 在伺服器上面部署,看看會有什麼效果。我們在伺服器上面下載完原始碼過後,進入到目錄中,然後進行映象打包

git clone https://github.com/zhuSilence/chatgpt-web.git
cd chatgpt-web
docker build -t chatgpt-ui:ori .

接著我們透過 docker images 檢視下 docker 的映象,如下

接下來我們透過 docker 來執行 chatgpt-web 這個容器,執行如下命令

docker run -d --name chatgpt-ui \
  -e my_api_key="填入自己的 open api key" \
  -e USERNAME="admin" \
  -e PASSWORD="admin" \
  -v ~/chatGPThistory:/app/history \
  -p 7860:7860 \
  chatgpt-ui:ori

然後我們開啟瀏覽器,透過 ip 和埠直接訪問,效果如下,先登入,輸入上面命令中的賬號和密碼

然後就可以進入到系統內部,但是當我們嘗試去測試 ChatGPT 的時候,會發現在右上角報錯了,提示無法連結。

在官方的置頂 issue 裡面,我們可以看到有很多小夥伴也遇到了這個問題,

最終後大佬分析出來是因為在啟用賬號和密碼認證的情況下,用 ip 直接訪問的時候獲取到的 token 有錯誤,導致無法使用。

修改原始碼

找到問題所在過後,也就可以解決問題,在同一個 issue 下面就有人提到如果要在外網部署,要修改的是 Dockerfile 檔案,在裡面 CMD 命令前面加上如下一行

RUN sed -i 's/websocket\.cookies\.get("access-token")/websocket.cookies.get("access-token-unsecure")/' /root/.local/lib/python3.9/site-packages/gradio/routes.py

之所以要加上這一行是因為在伺服器上面部署的時候拿不到正確的 token,而這一行的命令是透過 sed 命令將 routes.py 指令碼中的 access_token_unsecure 替換成 access_token 從而獲取到認證的 token

那麼接下來我們修改一下 Dockerfile ,然後重新構建一個新的映象,再進行啟動,觀察是否可以解決。

透過 vim Dockerfile 命令修改,然後再構建一個新的映象

vim Dockerfile
docker build -t chatgpt-ui:new .
docker images

可以看到,這裡我們有兩個映象了,雖然名子一樣,但是對應的 TAG 是不一樣的,

docker run -d --name chatgpt-ui2 \
  -e my_api_key="填入自己的 open api key" \
  -e USERNAME="admin" \
  -e PASSWORD="admin" \
  -v ~/chatGPThistory:/app/history \
  -p 7861:7860 \
  chatgpt-ui:new

同樣進行登入過後,我們會發現這次正常了,可以愉快的進行玩耍了。

調戲

首先我們可以在官方的 Prompt 模板中選擇一個好玩的,裡面包含的模板有很多。

比如我們可以讓 ChatGPT 充當一個 SQL 終端,然後幫我們執行 SQL 語句。

怎麼樣是不是很神奇?還有很多有趣的模板可以選擇,也可以自己設定一個符合自己工作或者學習的 Prompt 來進行 AI 的調戲。同時因為我們是基於原始碼手動進行構建映象的,可以把一些內容換成自己的,或者自行進行一些二次開發都是可以的。

總結

前面的文章給大家接入瞭如何接入微信,釘釘以及知識星球,今天的文章教大家如何構建一個屬於自己的 ChatGPT 平臺,對於 ChatGPT 這種劃時代的產品,在這麼短的時間裡面已經風靡全球了,各種網際網路公司都投入大模型的研究,更有很多 AI 領域的人都開啟了創業之旅,比如王慧文,李開復等。

這是一個新時代的起點,我們即將經歷一個大的變革!

作為普通人,唯有緊跟時代步伐,才能不被時代拋棄!

相關文章