Azure OpenAI Service 10 - 使用 BetterChatGPT 在 Azure 部署私有的 ChatGPT 站台

OpenAI 有提供獨立的 ChatGPT 服務,那如果我們想要使用 Azure OpenAI Service ,又想要有類似 ChatGPT 一樣的站台,這時候就可以用 BetterChatGPT 這一個開源的 UI來架設自己的 ChatGPT 站台,並且使用自己的 ChatGPT 模型來執行,雖然也是可以直接用已架設好的服務直接使用,但是透過 App Service 架設自己的站台,還可以加上一些驗證或是防火牆設定等,才可以達到我們要的私有站台,後面就來說明如何建構自己的私有站台囉!

實做

BetterChatGPT 有很多種部署的方式,我選擇用 Docker 的方式來部署,所以先來建立一個 Container Registry 服務把 BetterChatGPT 打包成 Image 部署上去,新建服務搜尋 Container Registry 來建立服務。

建立上也沒有特別的選項,就是基本資源群組、資料中心、服務名稱,就可以很快速的把服務建立起來了。

再來直接透過 CloudShell 在 Azure 上面執行 PowerShell 指令。

建立一個資料夾。

mkdir BetterChatGPT

在資料夾內 Clone BetterChatGPT 來打包成 Image。

cd ./BetterChatGPT/
git clone https://github.com/ztjhz/BetterChatGPT.git

進入程式碼目錄。

cd ./BetterChatGPT/

執行 ACR Build 把原始碼打包成 Image 並且推送到 ACR 裡。

az acr build --registry {youracrname} --image bettergpt:v1 .    

跑了一陣子之後成功之後可以到存放庫確認是否有推上去了。

再來建立 App Service 站台,選擇 Docker 容器,定價層的話建立至少要 B1 ,不然會跑不起來。

然後再第二個設定 Docker 部分選擇單一容器並且選擇到剛剛推上去的 Image,就可以點選建立了。

第一次執行因為要把 Image 抓下來,所以會要等一陣子,好了之後就可以看到站台了。

點選左下的 API 來設定 Azure OpenAI 的端點和金鑰。

輸入的端點和金鑰是存在瀏覽器本地端的,還是要注意電腦是否會和人共用,避免金鑰洩漏。

端點和金鑰可以在 Azure 這邊取得。

但是因為還不支援自訂輸入 Azure 模型名稱,所以建立的時候需要指定名稱 gpt-35-turbo 才會有辦法使用,因為是 Open Source,所以可以自行修改原始碼再重新部署。

設定好之後就可以正常使用了。

接下來如果我們不想讓站台可以隨便讓外部使用者可以使用的話,就可以透過 App Service 的功能來設定驗證或是防火牆。

然後建立 Microsoft 的驗證,就可以指定在 AAD 的使用者才可以存取站台。

這時候要在連到站台就會要驗證才可以使用了。

因為我設定要在 AAD 的使用者才可以登入,所以如果是外部使用者,沒邀請成為來賓就會驗證失敗了,這樣就可以簡單的做好驗證了。

如果要更進一步還可以限制網路 IP 來存取。

結論

本文介紹如何快速的建立出自己的一個私有的 ChatGPT 站台,也包含了基本的驗證,而網路上也還有不少開源的 ChatGPT UI,大家也可以尋找其他覺得不錯的來架設看看囉,目前 BetterChatGPT 針對 Azure 也還有些限制,像是無法自定義模型名稱、Gpt-4 的支援等,不過因為是開源的,大家可以自行修改或是等一陣子應該就會有人修改好了。

參考資料