前回は、Open WebUI Desktopのインストールまで行った。普通に入れるだけならインストーラーだけで動く。楽に使いたいなら、Open WebUIのllama.cppを使うのではなく、ollamaを使う方が楽かもしれない。
前回の続き
-
Open WebUIへのネットワークアクセス
-
追加コンポーネント
-
Agent AIモード
Open WebUIへのネットワークアクセス
Open WebUI Desktopはhttp://localhost:8080でローカルホストからのみの接続を受け付けている。アプリからでもブラウザからでも接続できる。外部からは接続できない。つまりサーバ利用はできない
このhttp://localhost:8080という設定にすごく意味がある。
http://localhostだと、証明書がなくてもマイク入力が使えるようになる。Open WebUIをサーバで立てて、マイク入力を使う場合、必ず公的なSSL証明書を経由する必要があるが、http://localhostの場合は不要。
追加コンポーネント
標準インストールで問題なく使うことができるが、Web検索連携、音声読み上げ、OCRを使う場合は、いくつかの追加コンポーネントが必要で、Open WebUI Desktopには入っていない。RAGのインポートでOCR機能を使いたい場合はTikaを用意する必要がある。以下に不足分のコンポーネント(ComfyUIを除く)を追加で設置するDocker Composeと設定ファイルを作っておいた。このcompose.ymlのLLMは、Open WebUIのllama.cppの設定をベースにしているので、ollamaをバックエンドにしている場合はCompose.ymlやUIの設定を調整したほうがいいと思う。
Docker Composeで起動すると、ローカルホストからのみのコンポーネントが立ち上がってくる。Docker ComposeのようにEnvironmentで設定できないので、必要に応じてUIから設定する必要がある。
Admin Panel -> Settingsで設定する。以下の設定は、このcompose.ymlでの設定。
あるいといいもの。必要に応じて設定する。
Web検索
Web検索と連携したい場合。
生成されるコンテナ: searxng/valkey
設定場所:Integrations –> Web Search
Web Search Engine: searxng
Searxng Query URL: http://127.0.0.1:8088/search
音声読み上げ

読み上げを使いたい場合。
生成されるコンテナ: openai-edge-tts
設定場所:Integrations –> Audio
Text-to-Speech Engine: Open AI
URL: http://127.0.0.1:8880/v1
API Key: Change_Me_tts_api_key
OCR機能
Knowlege Baseにインポートをする際、PDFなどにOCRをかけたい場合。compose.ymlの設定は英語版にしてあるが、tikaコンテナをビルドしなおすと日本語対応にできる。
生成されるコンテナ: tika
設定場所:Integrations –> Document
Content Extraction Engine: Tika
URL: http://127.0.0.1:9998
なくてもいいもの。必要に応じて
Pipeline
パイプラインを使いたい場合。
生成されるコンテナ: pipeline
設定場所:Connections
OpenAI
URL: http://127.0.0.1:9099
API key: Change_Me_Pipeline_api_key
MCPコンテナ
MCPを使いたい場合。ただし、デフォルトで設定してあるものは全てAgent AIモードでことが足りる。本当に外部連携が必要な場合のみ必要。
生成されるコンテナ: mcpo
設定場所:Integrations –> Manage Tool Servers
MCP (memory/time/fetch/calculator/filesystem/sequential-Thinking)
Name: mcp.XXXX
Description: XXXX
URL: http://127.0.0.1:8000/XXXX
Chat Terminal
チャットからターミナルをアクセスしたい場合。セキュリティリスクがあるので使うかどうかは自己判断。使わない場合は、コンテナは落とすか、compose.ymlから消しておく。
Open Terminal
ChatからTerminalを呼び出す
生成されるコンテナ: openwebui-terminals
設定場所:Integrations –> Manage Tool Servers
Name: Chat Terminal
URL: http://127.0.0.1:3001
API Key: Change_Me_terminal_api_key
画像生成と編集
ComfyUIがあれば、UIで以下の設定をすることで連携ができる。
設定場所:Image
複雑なのでキャプチャーを掲載する。
注意点
モデルは、CheckpointsにrealvisxlV50_v50Bakedvae.safetensorsを落としておき、model.safetensorsとして保存あるいはリンクを貼っておく。
画像生成のワークフローは、デフォルトで入っているが、画像編集のワークフローは入っていないので、別途ワークフローを入れておく必要がある。

Agent AIモード
これがこのページで一番重要かもしれない。これは、Open WebUI Desktopだけではなく、Open WebUI全体に言えること。
Open WebUIは、Ollamaとセットで使う、高機能GUI LLMフロントエンド的な位置付けで考えられているかもしれない。実はちょっと違って、OpenAIのAPIも受け付けるし、Ollamaに関しては、OpenAI APIではなく、OllamaネイティブAPIが使えるので、Open WebUI上でモデルのダウンロードができる。ちょうどLMStudio的な使い方ができる。
また、チャットのUIで、MCPコンテナを設定したらMCPでメモリや時間取得ができる。(そこまでやる人いないかもしれないが。)TIKAコンテナを設定したらドキュメントのOCRができる。しかし、その手のツールを使う時は、「ツールを使ってXXXをして」など入れる必要があり、モデルによってはうまく使ってくれない。(個人的には使ってくれるかどうかは運かもと思っている。)
最近のOpen WebUIは、Agent AIのモードが付いている。
Agent AIのモードで立ち上げると、MCPで作っていたメモリとか時間取得などのツールがいらなくなったり、もっと簡単にツールを使ってくれるようになる。Open WebUIには実は、ビルトインのツールも入っている。
モデルの設定をみると

CapabilityとBuiltin Toolがある。これらを使いこなすことによって複雑なことをやってくれる。
また、この画面には、MCPでTimeとかメモリとかあるが、Builtin Toolにも同等の機能がある。つまり、Capabilityを通して、Builtin Toolを使えば、ここに表示されているほとんどのMCP(自作したもの)は実は不要。
何も設定していない状態だとOpen WebUI的には、Defaultモード。通常のLLMチャットを使うには、これでOKだが、何かと連携させるとなるとNativeモードに切り替えなければならない。
https://docs.openwebui.com/features/extensibility/plugin/tools/#tool-calling-modes-default-vs-native
連携をするということにおいては、Defaultモードは、レガシーらしい。
OllamaなどのChat UIレベルで使うなら、何も気にしなくていいが、MCPとかと連携をさせるのであれば、Nativeモードのほうが圧倒的にいい。
どこで変えるかというと、チャット画面で以下のFunction CallingをNativeにする。

このFunction Callingは、モデルの設定でも変えられる。

この設定が使えるのは、ロードされているモデル自体がfunctionをサポートしている必要がある。
{
“result”: “OK”,
“tool_calls”: [
{
“function”: {
“name”: “get_time”,
“arguments”: “{\”timezone\”:\”Asia/Tokyo\”}”
}
}
]
}
実際に連携機能を利用する場合のDefaultモードとNativeモードの違いは、以下のプロンプトでわかる
「今の時間は?」
-
Defaultモード: わからない
-
Defaultモード+MCPオン:「mcpのツールを使って調べて?」ー>モデルによっては、MCPに時間取得を利用して答えるかも。
-
Nativeモード: 「XX時XX分です。」ー>MCPをオンにする必要はなく、Built-in Toolで調べる
自分の作った、timeやらmemoryのMCPモジュールが不要になってしまった。
さらに、プロンプト「明日15時に床屋へいく予定をカレンダーに登録しといて」といれると、OpenWebUIのカレンダーにスケジュールが登録される。結構すごいのだが、あくまでもOpen WebUIのカレンダーだけでGoogleカレンダーとかではないのが惜しい。