【Python】Ollamaで構築したLLMをGUIで表示する方法
1. はじめに
本記事では、Ollamaで構築した日本語対応のローカルLLMをGUIで表示する方法を解説します。
LLMの構築は、OpenAI等のWebAPIを用いて実装する方法と、自分のPCにモデルをダウンロードして実装する方法があります。今回は後者の方法(ローカルLLMの構築)を解説しつつ、ChatGPTライクなGUIで表示してみます。
ローカルLLMを構築すると、CUIで実行できますが、一般利用には向かないです。そのため、ChatGPTのようなGUIに表示して利用してみます。GUIで表示する方法は少し設定が難しいので、それも含めて記事にしてみました。
2. 動作環境
- Ubuntu 22.04
- メモリ32GB
- NVIDIA GeForce RTX 4090
3. 構成
- ローカルLLMの構築
- Ollamaを利用
- Ollamaのデフォルトポート:11434
- ホストマシン上に構築
- ホストマシンのIPアドレス:192.168.0.114
- huggingfaceのモデルを利用(日本語対応LLM)
- GUIの構築
- OpenWebUIを利用
- OpenWebUIのデフォルトポート:8080
- docker上に構築
- docker NW:172.16.0.0/16
- dockerポート:3000にアクセスするとポート:8080にマッピング
4. 環境構築
dockerのインストール
公式サイトの通りにインストールすれば大丈夫です。
Ubuntuだと、下記の通りコマンドを実行するとDockerをインストールできます。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
sudo apt install docker-compose
ollamaのインストール
次に、ollamaをインストールします。公式サイトの通りにインストールすれば大丈夫です。
ubuntuでは、下記の通りインストールします。
curl -fsSL https://ollama.com/install.sh | sh
試しに、qwen3:1.7bのモデルをダウンロード・実行してみます。下記のコマンドでモデルのダウンロード、実行ができます。
ollama run qwen3:1.7b
Pythonライブラリのインストール
Pythonからollama, huggingfaceを利用するために、下記のコマンドでライブラリをインストールします。
pip3 install ollama huggingface-hub
huggingfaceの設定
公式サイトの通りに設定すれば大丈夫です。huggingfaceのアカウント作成・アクセストークンを発行しておく必要があります。
ollamaでhuggingfaceのモデルをダウンロードするには、下記のコマンドでhuggingfaceにログインする必要があります。その際に、発行したアクセストークンを入力します。
huggingface-cli login
日本語対応のLLMをダウンロードしておきます。
ollama run hf.co/mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-32B-Japanese-gguf:Q4_K_M
5. OpenWebUIの設定
OpenWebUI用のDockerコンテナ作成
docker-compose.ymlを作成します。
services:
openwebui:
container_name: openwebui_host
image: ghcr.io/open-webui/open-webui:main
environment:
GLOBAL_LOG_LEVEL: "debug"
RAG_EMBEDDING_ENGINE: "ollama"
RAG_EMBEDDING_MODEL: "hf.co/mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-32B-Japanese-gguf:Q4_K_M"
RAG_OLLAMA_BASE_URL: "http://172.17.0.1:11434"
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:
項目 | 値 / 内容 | 説明 |
---|---|---|
services | openwebui |
サービス名。Docker Compose で管理されるアプリケーション単位。 |
container_name | openwebui_host |
コンテナの名前。docker ps 実行時にこの名前で表示される。 |
image | ghcr.io/open-webui/open-webui:main |
使用するコンテナイメージ。GitHub Container Registry から取得。 |
environment | GLOBAL_LOG_LEVEL=debug |
ログ出力レベルを詳細表示(debug)に設定。 |
RAG_EMBEDDING_ENGINE=ollama |
RAG 機能の埋め込みエンジンとして Ollama を使用。 | |
RAG_EMBEDDING_MODEL=hf.co/mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-32B-Japanese-gguf:Q4_K_M |
Ollama に渡す埋め込みモデルの指定。日本語対応の大規模モデル。 | |
RAG_OLLAMA_BASE_URL=http://172.17.0.1:11434 |
Ollama サーバの接続先 URL(Docker ホスト内部IP + ポート番号)。Ollama サーバのデフォルトポートは11434。 | |
ports | 3000:8080 |
ホストのポート3000 → コンテナのポート8080 に接続。 |
volumes | open-webui:/app/backend/data |
Docker 永続化ボリューム open-webui をコンテナ内の /app/backend/data にマウント。 |
volumes(下段定義) | open-webui |
Docker が管理する名前付きボリューム。データを永続化。 |
下記の通り、コンテナを起動します。
sudo docker-compose up -d
外部からOpenWebUIにアクセスできるか確認します。
http://192.168.0.114:3000/
6. Ollamaの設定
外部からのアクセスを許可する設定をします。
① 一時的な設定の場合
OLLAMA_HOST=0.0.0.0 ollama serve
② 永続的な設定の場合
sudo systemctl edit ollama.service
### Editing /etc/systemd/system/ollama.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service] # 追加
Environment="OLLAMA_HOST=0.0.0.0" # 追加
### Lines below this comment will be discarded
### /etc/systemd/system/ollama.service
# [Unit]
# Description=Ollama Service
# After=network-online.target
#
# [Service]
# ExecStart=/usr/local/bin/ollama serve
# User=ollama
# Group=ollama
# Restart=always
# RestartSec=3
# Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
#
# [Install]
# WantedBy=default.target
Olllamaサービスを再起動します。
sudo systemctl restart ollama
外部からアクセスできるか確認してみます。
curl http://192.168.0.114:11434/api/tags
dockerコンテナからアクセスできるか確認してみます。
sudo docker exec -it openwebui_host curl http://172.17.0.1:11434/api/tags
7. OpenWebUIとOllamaの接続
OpenWebUIにアクセスして、Ollamaと接続する設定をします。
[設定] > [管理者設定] > [接続]に移動し、下記の画像の通り設定します。
- OpenAI API -> Off
- Ollama API接続の管理
- Connection Type -> 外部
- URL -> http://192.168.0.114:11434
このようにして、OpenWebUI側でOllamaのモデルを認識できるようになります。
8. おまけ
下記の通り、ollamaのモデル名を変更することもできます。
ollama cp hf.co/mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-32B-Japanese-gguf:Q4_K_M my-LLM
今後は、Ollama, dockerコンテナを立ち上げている状態であれば、下記のURLにアクセスすることでGUIでLLMを使用できます。
Discussion