🍣

【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にマッピング

image.png

4. 環境構築

dockerのインストール

公式サイトの通りにインストールすれば大丈夫です。

https://docs.docker.com/engine/install/ubuntu/

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をインストールします。公式サイトの通りにインストールすれば大丈夫です。

https://ollama.com/download/linux

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のアカウント作成・アクセストークンを発行しておく必要があります。

https://huggingface.co/docs/huggingface_hub/quick-start

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と接続する設定をします。

http://192.168.0.114:3000/

[設定] > [管理者設定] > [接続]に移動し、下記の画像の通り設定します。

スクリーンショット 2025-07-11 8.08.35.png

このようにして、OpenWebUI側でOllamaのモデルを認識できるようになります。

スクリーンショット 2025-07-11 8.11.49.png

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を使用できます。

http://192.168.0.114:3000/

Discussion