「Difyを使いたいが、API利用料(従量課金)が気になる」「社内規定でクラウドへのデータ送信が禁止されている」
こうした課題を解決するのが、ローカルLLM(Large Language Model)との連携です。
自社サーバー(またはローカルPC)内で稼働するLLMをDifyのモデルとして登録すれば、通信コストゼロ、かつデータが外部に出ないセキュアな環境を構築できます。
この記事では、Dockerで構築したDify環境に、ローカルLLMを「モデルプロバイダ」として接続する具体的な手順を解説します。
STEP 1:Difyコンテナの通信設定(Docker設定)
まず最初に、Difyのコンテナ(Docker)内から、ホストマシン(あなたのPCやサーバー)で動いているローカルLLMへアクセスできるように設定を変更します。
デフォルトの状態では、コンテナ内部からホスト側のローカルサーバー(例:localhost:3000など)は見えません。
docker-compose.yamlの編集
Difyのインストールフォルダ内にある docker/docker-compose.yaml ファイルを開き、api: セクションに extra_hosts の設定を追記します。
services:
api:
# 既存の設定はそのまま
extra_hosts:
host.docker.internal: host-gateway
この設定により、コンテナ内から host.docker.internal というホスト名を使って、ホストマシンのサービスへ通信できるようになります。
編集が完了したら、以下のコマンドでDifyを再起動し、設定を適用してください。
docker compose down docker compose up -d
STEP 2:ローカルLLMをモデルプロバイダに登録する
Difyが起動したら、実際にローカルLLM(OllamaやLocalAI、Open WebUIなどで稼働しているもの)を接続します。
- Difyの管理画面右上のアイコンから「設定」をクリックします。
- 左メニューの「モデルプロバイダー」を選択します。
- 一覧から「OpenAI-API-compatible」を探し、「モデルを追加(Add model)」をクリックします。
接続情報の入力
以下の情報を入力して保存します。
| モデル名 (Model Name) | 任意の名前(例: local-llama3) |
|---|---|
| API Endpoint URL | http://host.docker.internal:3000/v1 ※ポート番号(3000)は利用しているLLMツールに合わせて変更してください。 |
| API Key | 任意(空欄でも可、ツールによっては適当な文字列が必要) |
重要なポイント:
エンドポイントURLには localhost ではなく、STEP 1で有効化した host.docker.internal を使用します。これにより、Dockerコンテナの壁を超えて通信が可能になります。
※UbuntuなどのLinux環境でファイアウォール(ufw)を使用している場合は、Dockerコンテナからの通信(docker0インターフェース等)を許可する設定が必要になる場合があります。
STEP 3:画像認識のための「ファイルアップロード」有効化
Llama 3.2 Visionなどの「画像認識ができるローカルLLM」を使用する場合、Dify側で画像を受け取れるように設定する必要があります。
この設定はデフォルトではOFFになっているため、必ず有効化しましょう。
- Dify管理画面の「設定」を開きます。
- 左メニューから「機能(Features)」を選択します。
- 「ファイルアップロード」の項目を見つけ、スイッチをON(有効化)にします。
これで、チャットボットの入力欄にクリップのアイコンが表示され、画像をローカルLLMに渡して解析させることが可能になります。
まとめ
DifyとローカルLLMを組み合わせることで、ランニングコストを気にせず、かつ高セキュアな環境で生成AIを活用した業務システムを構築できます。
特に host.docker.internal の設定はつまずきやすいポイントですので、docker-compose.yaml の編集を忘れずに行ってください。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー



VPSサーバの選定





コメント