Open WebUIからOllamaとAIチャットしてみる時の手順

表題の件、やってみた。

条件

以下の通り

  • すでにOllamaはdockerで起動済み(下記記事参照)
  • Open WebUIもOllama同様にdockerで動かす

meganedesu.com

準備

Ollamaを起動している前提で話を進める。

Open WebUIを参考に、自分の環境に合わせて少しオプションをいじったうえで、ホストのターミナルで以下を実行。

docs.openwebui.com

docker run -d -p 44445:8080 -e WEBUI_AUTH=False -e OLLAMA_BASE_URL=http://host.docker.internal:44444 -v open-webui:/app/backend/data --name open-webui --add-host=host.docker.internal:host-gateway ghcr.io/open-webui/open-webui:main

自分で追加したもの

  • --add-host=host.docker.internal:host-gateway: ホストのポートにアクセスするために、追加したもの。今回はすでに立てたollamaのコンテナにアクセスするために、ホストの44444ポートにアクセスするためにこれが必要。
  • -e WEBUI_AUTH=False: 今回は自分しか使わないので、ログイン機能はオフにした。
  • -e OLLAMA_BASE_URL=http://host.docker.internal:44444: ollamaはホストの44444ポートにアクセスできるように、事前にコンテナを起動したので、そのように設定する。

上記オプションは、公式ページ以外に、以下のページを参考にした。

zenn.dev

zenn.dev

Open WebUIにアクセス

コマンドを実行したら、ホストのブラウザで、以下をURLに入力する。

http://localhost:44445

※ホストの44445ポートで公開するように、コンテナを実行したので、44445ポートにアクセスする。

そうすると、初回はいくつかポップアップが出るらしく、それを良しなにOKしたりすれば、以下のような画面に到達する。

モデルを選択する

画面左端の赤丸のところをクリックすると、チャットに使用するモデルが選択できる。

自分の環境では、deepseekの7B、8B、14B、cyberagentが日本語で学習させたdeepseek14Bモデルがそれぞれ並んでいることがわかる。

今回は、初期選択されていたcyberagentのモデルをそのまま使うこととする。

チャットしてみる

適当な文章をポジネガ判定してもらった。結果は期待したもの(ポジティブ)と一致した。

日本の都道府県をjsonで返してもらった。プロンプト↓

日本の全都道府県をjsonで返して。
ただし、回答にはkeyを番号、valueを都道府県名とするjsonのみ含めて、それ以外の文字は含めないでください。

結果↓

{
  "1": "北海道",
  "2": "青森県",
  "3": "岩手県",
  "4": "宮城県",
  "5": "秋田県",
  "6": "山形県",
  "7": "福島県",
  "8": "茨城県",
  "9": "栃木県",
  "10": "群馬県",
  "11": "埼玉県",
  "12": "千葉県",
  "13": "東京都",
  "14": "神奈川県",
  "15": "新潟県",
  "16": "富山県",
  "17": "石川県",
  "18": "福井県",
  "19": "岐阜県",
  "20": "静岡県",
  "21": "愛知県",
  "22": "滋賀県",
  "23": "京都府",
  "24": "大阪府",
  "25": "兵庫県",
  "26": "奈良県",
  "27": "和歌山県",
  "28": "鳥取県",
  "29": "島根県",
  "30": "岡山県",
  "31": "広島県",
  "32": "山口県",
  "33": "徳島県",
  "34": "香川県",
  "35": "高知県",
  "36": "福岡県",
  "37": "佐賀県",
  "38": "長崎県",
  "39": "熊本県",
  "40": "大分県",
  "41": "宮崎県",
  "42": "鹿児島県",
  "43": "沖縄県",
  "44": "青森県",
  "45": "岩手県",
  "46": "山形県",
  "47": "福島県"
}

パット見た感じ、福島県山形県岩手県がかぶっているな、、、うーん、モデルを変えたらちゃんと返してくれるのかな。 とはいえ、回答にはjsonのみ含めてねという指示をしたら、その指示は理解してくれてちゃんと返してくれたのは評価できる。