ChatGPT 無料/Plus版は、やりとりしたデータが学習に利用されてしまうので会社などでは使いづらいですよね。ChatGPT APIであれば、やりとりしたデータは「学習に利用されない」ので会社で活用できる可能性も高くなります。

ただ、ChatGPT APIは、その名の通り「APIでの提供」なので、一般ユーザーには利用ハードルが高かったりします。

そこで、ChatGPT UIのクローンである「Chatbot UI」をローカル環境で試してみました。

📌Chatbot UIって?

Chatbot UIはオープンソースで公開されている「ChatGPTのUI」を再現した、独自のクライアントです。(ChatGPTのUIクローン)
https://github.com/mckaywrigley/chatbot-ui 

このChatbot UIはChatGPT APIで動作するので、APIキーさえ用意すれば、ChatGPTそっくりのUIをそのままローカル環境などで動かすことが可能になります。

📌動かす環境(今回の前提環境)

今回は、ローカルPC上で「Chatbot UI」を動かしてみます!
色々な動かし方があるのですが、今回は「docker上」でChatbot UIを動かします。

前提条件として、以下の環境が整っているところから始めたいと思います。
・Dockerがインストールされていること
・gitコマンドが利用できること
・ChatGPTのAPIキーを発行していること

💡もしdockerのインストール方法を知りたい・・・というような需要が多ければ、Windows上にdocker環境などを作成する手順なども公開したいと思います。もし興味ある方は、コメントなどで教えていただければ対応します!

💡私はWindows 11のWSL上にUbuntuを入れて、そのUbuntu上でdockerを動かしています


📌セットアップ方法&実行方法

1. ソースコードの取得
gitを使って、任意のフォルダにChatbot UIのソースコードをcloneしてきます。
> git clone --depth 1 https://github.com/mckaywrigley/chatbot-ui.git
> cd chatbot-ui


2. dockerイメージのビルド
dockerコマンドで取得したソースからdockerイメージをビルドします。
WSLなどを使っている場合は「wsl」コマンドでwslのコンソール側に切り替えておくと良いです。またWSL上で一般ユーザにdocker操作権限を与えていない場合は、dockerコマンドの前に「sudo」を付けてrootユーザで実行してください。
Windows版のDocker Desktop for Windowsなどを使っている場合は、そのままコマンドプロンプトからdockerコマンドを入力すればOKです。

# 最後にドット「.」が付くので見落とさないように注意!
$ docker build -t chatgpt-ui .


3. Chatbot UIの起動
取得済みのAPIキーを指定してdockerイメージを実行します。コマンドのXXXXXX部分には、各自で取得したChatGPTのAPIキーを指定してください。

$ docker run -e OPENAI_API_KEY=XXXXXX -p 3000:3000 chatgpt-ui


4. ブラウザで表示
http://localhost:3000  にアクセスすれば、Chatbot UIの画面が表示されます。

chatbot_ui.png 109.22 KB

終了する場合は、dockerを起動したコンソール画面で「Ctrl+C」キーなどをクリックしてdockerを終了させればOKです。





📌参考:WSLでdockerを起動する方法

Linux系のシステムでdockerサービスを起動するには「systemctl」などを利用するのですが、そのままだと「WSLではsystemctl」が使えません。systemctlは「PID 1がsystemctl」である必要があるのですが、WSLの場合「PID 1=init」になってしまっているので、systemctlが使えないのです。

そこで、ご参考までに「WSLでdockerを起動する方法」(目的はsystemctlを動かすことではなくてdockerを起動することだと思うので)を2つくらい紹介したいと思います。

🧿方法1:他のコマンドでdockerを起動する

systemctlが使えないなら、他のコマンドでdockerを起動してしまおうという形です。Ubuntu系を使っていれば、この方法が使えるはずです。
やり方は簡単で、systemctlの代わりに「service」を使います。

# dockerサービス起動
sudo service docker start

🧿方法2:systemctlが動くようにする

2つ目の方法は、WSL上でsystemctlが動かせるようにする方法です。
昔は、面倒な手順で「PID 1をsystemctlにする」方法がとられていたのですが、最新のMicrosoft Store版のWSLでは、「簡単な方法でsystemctlを動かせる」ようになっているので、この方法を紹介します。
https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/ 

まず「Microsoft Store版のWSL」を使う必要があるので、コマンドプロンプトから以下のコマンドを実行して、WSLを最新化します。
> wsl --update


WSLのアップデート後、WSLを起動して「/etc/wsl.conf」に以下の設定を追加します。(wsl.confの編集は、sudo vim /etc/wsl.conf などでできます)

[boot]
systemd=true


編集が完了したらWSLを抜け、WSLを再起動します。
> wsl --shutdown
> wsl

これで、WSL上からもsystemctlが使えるようになっているはずです!