こんにちは。
今日は、Open WebUI というツールを使って、 前回建てた Ollama を利用してみたので、その記録です。
Open WebUI とは
Open WebUI とは、 OSS で ChatGPT 風の AI インターフェースを提供してくれているツールです。
さまざまな LLM に対応しており、OpenAI などのAPI を利用したり、 Ollama などの Local で動かしている LLM にも対応しています。
まだしっかり触れてないですが、個人的に感じた特徴としては下記になります。
- UI がかなり ChatGPT によされていて、しっかり作り込まれているので使いやすい
- マルチユーザー対応と権限管理機能
- PWA 対応
- チャット以外の機能が非常に豊富
Open WebUI を選んだ理由
今回 Open WebUI を試そうと思った理由は、 3つあります。
1つ目は、Ollama を気軽に試せる環境を用意したかったためです。Open WebUI 経由で Ollama とやりとりをして、 llama の model をダウンロードしたり、LLM を動かしたりすることができます。
2つ目は、妻(非エンジニア) にも使わせてあげたかったためです。Open WebUI にはマルチアカウント管理機能が備わっているので、妻のアカウントを発行してあげれば、妻も僕の PC 上で動いている Open WebUI に妻のアカウントでログインすることができます。
妻は、最近 ChatGPT を無料プランで利用し始めていたのですが、利用上限に達してしまうことがありました。$20 は払いたくないとのことだったので、何か方法がないかなと思った時に Open WebUI から Open AI の API を利用すれば、かなり安く ChatGPT が使えるというのを思いつきました。
OpenAI の API 経由なら従量課金だし、事前にクレジットを買ってからそれを消費するスタイルなので、使い過ぎてしまうこともなく、安心して利用できます。
3つ目は、チャット以外の機能が豊富な点です。まだちゃんと調べたり試したりできてないですが、ドキュメントを upload して RAG ができたり、 URL を渡せばそのページをスクレイプしてコンテキストに含めたり、チャット上で Python のコードが動かせたりなど、本当に色々なことができます。これらの豊富な機能と Local LLM を組み合わせれば色々遊びがいがありそうだなと思いました。
Open WebUI を Docker 上に立ち上げる
今回も Docker で Open WebUI を立ち上げました。ゴールは、前回立ち上げた Ollama と通信して Open WebUI から local LLM が実行できるところまでです。
起動自体は、非常に簡単でドキュメント に沿ってコマンドを実行すれば起動できました。
$ docker pull ghcr.io/open-webui/open-webui:main $ docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
localhost:3000 にアクセスすればログイン画面が表示され、 Admin Account を作成することができます。
ログイン後は、 Ollama に繋ぐための設定をします。
ここのドキュメントに沿って設定をします。
docs.openwebui.com
ドキュメントと違う点は、OpenWebUI と Ollama をコンテナ上で立ち上げているため、Ollama への通信はコンテナ間通信になります。
そのため、 docker inspect などで ollama の ip address を調べて、下記の画像のように設定する必要があります。

ハマったポイント
設定している途中ではまったポイントがあったので共有しておきます。
ハマったポイントは、 User role のアカウントから LLM の Model を選択することができない点でした。
Admin role のユーザーからは LLM Model を選択できるのですが、 User role のアカウントは、下記の画像のように Model の選択肢が表示されませんでした。

バグなのかなと思って、 issue などを調べていたら、下記の discussions を見つけました。
どうやら Model ごとに User role からアクセス可能かどうか設定できるようになっており、デフォルトだと全て User role からアクセスできなくなっているようでした。
下記の画像のように、Model ごとに 有効 / 無効 の設定ができるだけでなく、

Model の詳細設定画面に行くと、 Visibility という設定項目が用意されています。
Visibility はデフォルトだと Private になっており、 Model を有効にしただけでは Admin role の人しか利用できないようになっていました。

なので、下記の画像のように Private から Public へ設定を変更したら、 User role からもアクセス可能になりました。

まとめ
今日は、 Open WebUI をマルチアカウントで利用できるところまで設定するところを記録しておきました。
個人的には、若干ハマりポイントがあったので、他の人の参考にもなればいいかなと思います。
妻がうまく Open WebUI を活用してくれるかはしばらく見守ってみます。
Open WebUI はかなり機能が豊富で遊びがいがありそうなので、次はいろいろ試してみてその辺りをまとめてみようかなと思います。