見出し画像

Open WebUI(旧 Ollama WebUI)をインストールして使ってみる

Ollama関係の話の続きですが、有名な OpenWebU をインストールしてみました。その覚え書きです。

Open WebUI is ChatGPT-Style WebUI for various LLM runners, supported LLM runners include Ollama and OpenAI-compatible APIs.

GitHubはこちら

私の場合、MacOSなので、それに従ってやってみました。
Ollamaはすでにインストール・常駐しているので、Docker Desktopをインストールします。以下がオフィシャルサイト

Dockerは、アプリケーションを小さなコンテナと呼ばれる単位にパッケージ化するためのツールです。これにより、アプリケーションは環境に依存せずにどこでも実行することができます。

コンテナは、アプリケーションが動作に必要なコード、ライブラリ、依存関係などをひとまとめにしたパッケージのようなものです。これは従来の仮想マシンよりも軽量で、システムの他の部分から分離されているため、互いに影響を与えることなく、同じマシン上で複数のコンテナを実行できます。

Dockerを使用する利点は以下の通りです:

- **環境の一貫性**: 開発、テスト、本番環境間での環境の差異による問題を減らすことができます。
- **迅速なデプロイメント**: コンテナは迅速に起動するため、スケールアップや新しいアプリケーションのデプロイメントが素早く行えます。
- **移植性**: どのDockerがインストールされた環境でも、同じコンテナが実行できます。
- **分離**: アプリケーションが互いに分離されているため、セキュリティと管理が向上します。
- **軽量性**: コンテナは仮想マシンよりもリソースを少なく使用し、より効率的です。

Dockerは以下の主要なコンポーネントで構成されています:

- **Dockerファイル**: アプリケーションのビルド方法を記述したテキストファイルです。
- **イメージ**: Dockerファイルからビルドされる、コンテナを生成するための静的なスナップショットです。
- **コンテナ**: Dockerイメージから実行される実際のインスタンスです。アプリケーションが実行される場所です。
- **Docker Hub**: イメージを公開、共有、保存するためのDockerの公式レジストリです。

Dockerコマンドを使って、イメージをビルド、実行、停止、削除などの操作を行うことができます。

GPT-4

ということで、Open WebUIが確実に動くためのものだそうです。
普通にダウンロードして、インストールです。途中サインインするかどうか求められましたが、サインインせずに続けました。

立ち上げて、無事に動くことを確認します。


次に、Ollama のバージョンは最新であることを確認して次に進みます。

次は、terminal で以下のコマンドを実行です。このコマンドは一回実行するだけです。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

この `docker run` コマンドはDockerで新しいコンテナを作成し、起動するためのものです。それぞれのオプションと引数について解説します:

- `-d`: これは "detached" モードを意味し、コンテナをバックグラウンドで実行します。
- `-p 3000:8080`: ポートマッピングの指定です。ホストの3000番ポートをコンテナの8080番ポートにマッピングします。これにより、ホストマシンの3000番ポートを通じてコンテナの8080番ポートにアクセスできるようになります。
- `--add-host=host.docker.internal:host-gateway`: このオプションはコンテナの `/etc/hosts` ファイルに `host.docker.internal` というエントリを追加し、ホストマシンの特別なゲートウェイアドレスに解決するように設定します。これにより、コンテナ内からホストマシンに簡単にアクセスできるようになります。
- `-v open-webui:/app/backend/data`: ボリュームマウントを指定します。`open-webui` という名前のボリュームをコンテナの `/app/backend/data` ディレクトリにマウントします。これにより、このディレクトリに保存されたデータはコンテナ間で永続化し、共有されます。
- `--name open-webui`: このコンテナに `open-webui` という名前を割り当てます。これにより、後から `docker stop open-webui` や `docker start open-webui` といったコマンドでコンテナを指定できるようになります。
- `--restart always`: コンテナが停止した場合(Dockerデーモンの起動時やコンテナの終了時など)、常に再起動するように設定します。これにより、システムが再起動した後も自動的にコンテナが再起動されることを意味します。
- `ghcr.io/open-webui/open-webui:main`: これはコンテナのイメージを指定します。`ghcr.io` はGitHub Container Registryを表し、`open-webui/open-webui` はリポジトリ名、`main` はタグ名(この場合はおそらくメインブランチの最新イメージを指します)です。

このコマンド全体で、GitHub Container Registryから `open-webui` の最新イメージを取得し、新しいコンテナをデタッチドモードで起動し、指定されたポートマッピングとボリュームマウントで実行し、特定のホスト名でホストマシンにアクセスできるようにし、`open-webui` という名前をつけ、システムが再起動しても常にコンテナを再起動するように設定します。

GPT-4

Docker desktop でこんな画面になったと思います。

右端のActionsで停止できたり、動かしたりできる

PortのところのURLをクリックするとブラウザーがたちがって、Open WebUIの画面が立ち上がります。

Sign upでアカウント(氏名・Email ・Password)を入れて使えるようにします。

あとは、ほとんどChatGPTと同じ画面なので迷わないと思います。左端のボッチを見逃さなければ大丈夫でしょう。

Promptsを取り入れたり、Documentsを入れてそれにそった応答させるとか、いろいろとできるみたいです。おいおい試してみたいとは思います。

Setting画面は以下。System Promptも入れられます。

Advancedはいろいろパラメータの設定も可能みたいです。

ModelではOllama上のモデルが選べます。ollamaのライブラリにあるモデル名(例えば、solar )を入れるだけで、pull ができます。モデル削除もできます。
Externalは以下のように、OpenAI API Keyを入れたら、そのままGPTのいろいろが使えるようです。

試していませんが、STTもTTSもできます。
Conversation mode をonにして、マイクを押すとSTTが動きます。また3秒の空白時間で自動でsubmitされます。TTSの場合、日本語でも英語でも、すべて出力表示されてから、日本語で発話されました。

Interface, Chats, Accountはそのままの内容なのでお好みで変更すればいいと思います。

普通に、Ollamaをバックエンドとして動いてくれました。日本語も何も問題なく表示されます。日本語入力も変な挙動はせずにスムーズに変換・確定・送信ができました。

気になったのは終わり方ですが、どこにも説明がありませんでした。
ChatGPTに聞いて、シンプルなのは、Docker Desktop の 右端あたりのActions で止めたり、動かしたりできるということです。

あと以下のように Terminalでのコマンドでも停止、スタートできるようです。

Docker Desktopを使用している場合も、基本的にはコマンドラインを使用してコンテナを停止および再起動することができます。Docker Desktopは、macOSのDockやメニューバーからアクセスできるGUIツールですが、内部的には同じDockerエンジンを使用しており、CLIコマンドは同じように機能します。

以下に、Docker Desktopを使用している場合の手順を示します。

1. **コンテナの停止**:
ターミナルを開いて、以下のコマンドで実行中のコンテナのリストを表示します。

```sh
docker ps
```

`openwebui`コンテナを探し、以下のコマンドを実行して停止します。`<container_name_or_id>`は実際のコンテナ名またはコンテナIDに置き換えてください。

```sh
docker stop <container_name_or_id>
```

例:

```sh
docker stop open-webui
```

2. **コンテナの再起動**:
同じくターミナルで、以下のコマンドを実行してコンテナを再起動します。

```sh
docker start <container_name_or_id>
```

例:

```sh
docker start open-webui
```

また、Docker DesktopにはGUIも含まれており、Dockerのコンテナを視覚的に管理することができます。これを使用してアプリを停止および再起動するには、以下の手順を実行します。

1. **Docker DesktopのGUIを開く**:
- Docker Desktopアイコンをクリックしてアプリケーションを開きます。
- 「Containers/Apps」タブを選択して、実行中のコンテナのリストを表示します。

2. **コンテナを停止する**:
- `open-webui`コンテナを見つけます。
- コンテナの横にある「Stop」ボタン(一時停止マークのアイコン)をクリックします。

3. **コンテナを再起動する**:
- 左側のメニューから「Containers/Apps」を選択して、停止したコンテナのリストを表示します。
- `open-webui`コンテナを見つけます。
- コンテナの横にある「Start」ボタン(再生マークのアイコン)をクリックします。

これらの手順により、Docker DesktopのGUIまたはCLIを使用して、macOS上のDockerコンテナを管理することができます。

ちなみに、Dockerは Ollama と同じように常駐してる感じになのかもしれません。

細かい設定をしたいとか、ローカルLLMと同時に OpenAI のapiを使ってみたいとか、いろいろしてみたい人には良いユーザーインターフェースだろうなと思いました。

関連して、以下のサイトとコミュニティで、いろいろなプロンプトが共有されているようです。Shareしたり、Importして使ったりできるようです。

多機能・高機能なので、自分が使いこなせるか分からない感じで凄いです。
利用方法の詳しい日本語解説があったらぜひとも読みたいところです。


#AI #AIとやってみた #やってみた #ローカルLLM #Huggingface #Olllama #ChatGPT

この記事が参加している募集

やってみた

AIとやってみた

この記事を最後までご覧いただき、ありがとうございます!もしも私の活動を応援していただけるなら、大変嬉しく思います。