ChatGPTのWebUIをローカル環境で実現できる「Chatbot UI」を試してみた

2023.04.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部のueharaです。

今回は、ChatGPTのWebUIをローカル環境で実現できるChatbot UIを試してみたいと思います。

本家WebUIとの相違点

まず一番大きな違いとして、Chatbot UIはOpenAIのAPI経由でGPTを利用することから、「オプトインしない限りユーザーが送信したデータが学習に利用されることはない」ということが挙げられます。

逆に言うと本家のWebUIを使う場合、入力情報を学習データとして使用させないようにするためにオプトアウトの申請が必要になります。

ChatGPTのAPIリリースに伴う、OpenAIのAPIデータ利用ポリシーの改定は以下でも紹介されているので、気になった方は読んでみて下さい。

また、細かい点は後述しますが、APIならではのパラメータ設定が可能な点や、会話履歴をJSONでエクスポートできる機能など、本家WebUIには無い機能も含まれています。

Chatbot UIは日本語にも対応しております。

準備

今回はdockerを用いて環境構築を行います。

インストールがまだな方はこちらからご準備下さい。

また、冒頭で述べたように本アプリケーションはGPTとのやりとりにOpenAIのAPIを利用します。

まだ取得がお済みでない方はこちらから発行下さい。

Chatbot UIの起動

まず、Chatbot UIのレポジトリをクローンします。

$ git clone https://github.com/mckaywrigley/chatbot-ui.git

次に、クローンしたフォルダに移動し、以下のコマンドでdockerコンテナの作成を行います。

$ cd chatbot-ui
$ docker build -t chatgpt-ui .

ここまで済んだら、環境構築自体は終了です。とても簡単ですね!

それでは、Chatbot UIの起動を行います。

$ docker run -e OPENAI_API_KEY=sk-xxxxx -e DEFAULT_MODEL=gpt-3.5-turbo -p 3000:3000 chatgpt-ui

sk-xxxxxの部分には、ご自身のOpenAIのAPIキーを入力して下さい。

2023年4月時点では、デフォルトのモデルはgpt-3.5-turboとなっているようですが、一応ここでは明示的にgpt-3.5-turboを使用するよう設定をしています。

お使いのAPIがgpt-4のモデルを利用できる場合、DEFAULT_MODELgpt-4を設定することもできます。(gpt-4のAPI利用についてはこちら

その他設定可能な環境変数については以下の通りです。

環境変数 デフォルト値 説明
OPENAI_API_KEY OpenAI 認証に使用されるデフォルトの API キー。
OPENAI_API_HOST 'https://api.openai.com' Azure の場合は 'https://.openai.azure.com' に置き換えて下さい。
OPENAI_API_TYPE 'openai' API タイプです。オプションは、openai または azure です。
OPENAI_API_VERSION '2023-03-15-preview' Azure OpenAI にのみ適用されます。
AZURE_DEPLOYMENT_ID Azure OpenAI の場合は、Azure OpenAI APIを参照してください。
OPENAI_ORGANIZATION OpenAI 組織 ID。
DEFAULT_MODEL 'gpt-3.5-turbo' 新しい会話に使用されるデフォルトモデル。Azure の場合は gpt-35-turbo に置き換えます。
NEXT_PUBLIC_DEFAULT_SYSTEM_PROMPT こちらを参照 新しい会話で使用されるデフォルトのシステムプロンプト。
NEXT_PUBLIC_DEFAULT_TEMPERATURE 1 新しい会話で使用されるデフォルトのTemperature。
GOOGLE_API_KEY カスタム検索 JSON API のドキュメントを参照してください。
GOOGLE_CSE_ID カスタム検索 JSON API のドキュメントを参照してください。

Chatbot UIにアクセス

「http://localhost:3000」 にアクセスすると、Chatbot UIの画面が表示されます。

画面左のメニューを見てみると、左上から新規のチャットを開始できるのは本家と一緒ですが、「会話履歴をインポート/エクスポート」ができたり、「過去のチャットをキーワード検索できる」点、そしてチャット履歴のフォルダ分けが可能なことが分かります。

また、チャットの新規開始時には以下を設定することができます。

  • モデル
  • システムのプロンプト
  • Temperature

試しに以下のように簡単な質問をしてみましたが、本家と同様スラスラと回答をしてくれました。

また、画面右のメニューを見てみると、システムのプロンプトを保存しておくことができることが分かります。

例えば、「PythonCode」として以下のように設定してみます。その際、変数は{{}}で括ります。

設定が完了すると、入力画面で/を入力すると前方一致で候補が表示され、プロンプトを呼び出すことができます。

プロンプトを呼び出すと、以下のように変数を設定しプロンプトの作成をショートカットすることができます。

上記より、AWS S3からバケット一覧の取得を実行するPythonコードをStep by Stepで教えて下さい。というプロンプトを瞬時に作成することができます。

頻繁に使用するプロンプトや、プロンプトが長くなるケースは保存しておくと便利です。

補足

Chatbot UIのホスティングに対し、OpenAIから取り下げの要請があったことから、「OpenAIがChatbot UIに対して怒っている」という話が出ましたが、OpenAIと開発者の間で問題は解決しているようです。

※どうやら、開発者のツイートによると紛争の観点は以下だったようです。

最後に

今回は、ChatGPTのWebUIをローカル環境で実現できるChatbot UIを試してみました。

環境構築が簡単にでき、それでいてAPIを利用していることから細かいパラメータの設定もできるので、使い勝手は非常に良いと思います。(しかもMITライセンスなので自由に使うことができます。)

類似のOSSとして、BetterChatGPTなどもありますので、気になった方は調べて見て下さい。

本記事がどなたかの参考になりましたら幸いです。

参考文献