見出し画像

OllamaをWindowsで動かした場合のDocker-OpenWebUIとWSL2内からのネットワークアクセス設定


皆さんローカルLLMツールOllamaはお使いでしょうか。いろいろローカルLLMを触ろうとして思ったのはやはりこのツールは使いやすい、色々わからなくてもローカルLLMを動かすだけならこんなに素晴らしいツールはないだろうと毎日感謝しております。
今回はWindowsでOllamaを動かした場合のネットワークまわりのアクセストラブルと解決方法についてまとめておきます

環境ネットワーク図 今回のやりたいこと

  • Ollama(Ollamaサーバー)はWindowsで起動

  • Open WebUIはDockerで起動

  • Ollamaを利用するプログラムはWSL2内で起動

要するにWindowsにはプログラミング言語をいれたくないという構成です。

Open WebUIの設定


トラブル:Ollamaのモデルがでない!

解決方法:

左下の管理者パネルから
設定ー>接続

接続できない場合、Ollama APIの設定が空白か間違っている可能性があります、今回はDockerで動かしているので

http://host.docker.internal:11434

でOllamaに接続され動くようになりました。

トラブル:WSL2からPythonで接続できない!

PythonからOllamaに接続するプログラムを書いて実行すると・・ネットワーク接続エラー・・

:~/code_wsl/ollama_python_sample$ python3 vision2-tag2-jp.py /mnt/c/Camera/DCIM/102NIKON/DSCN0369.JPG 
Traceback (most recent call last):
  File "/home/penguin/.local/lib/python3.10/site-packages/httpx/_transports/default.py", line 72, in map_httpcore_exceptions
    yield
  File "/home/penguin/.local/lib/python3.10/site-packages/httpx/_transports/default.py", line 236, in handle_request
    resp = self._pool.handle_request(req)
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_sync/connection_pool.py", line 216, in handle_request
    raise exc from None
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_sync/connection_pool.py", line 196, in handle_request
    response = connection.handle_request(
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_sync/connection.py", line 99, in handle_request
    raise exc
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_sync/connection.py", line 76, in handle_request
    stream = self._connect(request)
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_sync/connection.py", line 122, in _connect
    stream = self._network_backend.connect_tcp(**kwargs)
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_backends/sync.py", line 205, in connect_tcp
    with map_exceptions(exc_map):
  File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/penguin/.local/lib/python3.10/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc) from exc
httpcore.ConnectError: [Errno 111] Connection refused


上記に解説が書いていました
公式の資料的には以下です

上記の記載と完全に一致していない気もしますが下記で動きました

Windowsの検索で「環境変数」と検索
OLLAMA_HOSTを0.0.0.0に設定してOllamaを再起動

WSL2側のシェルで

export OLLAMA_HOST=192.168.X.X

192.168.X.XのXは実際のWindows側のIP

Windows側のIPはWSL2のシェルで

nslookup "$(hostname).local"

で出てくるやつを設定

動かす

import ollama
import sys

inputImageFile = sys.argv[1]

response = ollama.chat(
    model='llama3.2-vision:11b',
    messages=[{
        'role': 'user',
        'content': 'これはなんの画像ですか?',
        'images': [inputImageFile]
    }]
)

print(response)

python3 vision1-jp.py /mnt/c/Camera/DCIM/102NIKON/DSCN0723.JPG
{'model': 'llama3.2-vision:11b', 'created_at': '2024-11-17T04:09:00.802314Z', 'message': {'role': 'assistant', 'content': 'この画像は、コロコロやワニなどの動物を撮影したものと思われますね。特に鼻と口の部分が明瞭ですので、ワニのような大型で水生の爬虫類であることがわかります。さらに、歯の数からもワニではないかと考えられます。また、ワニは体色がさまざまな種類があり、黄色いワニや緑色のワニなどを見ることができますが、この画像では青紫色に近い体色をしているので、オーストラリア産ワニである可能性もあります。'}, 'done_reason': 'stop', 'done': True, 'total_duration': 100533175800, 'load_duration': 2768237600, 'prompt_eval_count': 19, 'prompt_eval_duration': 76901000000, 'eval_count': 135, 'eval_duration': 20122000000}

WSL2からWindowsのOllamaに接続できました!!😉😉😉

環境変数はログイン時に読み込まれるようにしておきましょう

vi  ~/.bashrc
末尾に追加
export OLLAMA_HOST=192.168.X.X
いったんbashを抜けて
再度ログイン
echo $OLLAMA_HOST
でIPが出てくればOK




この記事が気に入ったらサポートをしてみませんか?