
【ローカルDify×ローカルLLM】完全にローカルなチャットエージェントを作る
生成AIを活用した業務改善をしたいと考えても、
「セキュリティ上の懸念から会社にNGを出されている」
「ランニングコストを負担できない」
といったケースもあると思います。
そこで注目されるのが、ローカル環境で動作するLLMとツールです。
この記事では、ローカルLLM(Ollama)とローカルDifyを組み合わせて、完全にローカル(Mac)で動作するチャットエージェントを構築する方法をご紹介します。プライバシーを守りながら、業務効率を最大化するヒントをご紹介します!
ローカルLLMの利点
ローカルLLMとは、クラウドに依存せず、自分のPCやオンプレミスのサーバーで動作する大規模言語モデルのことです。以下のような利点があります。

1. データセキュリティの確保
企業データや機密情報を外部クラウドに送信する必要がないため、情報漏えいのリスクを最小限に抑えられます。特に、厳しい情報管理が求められるケースでは安心です。
2. コストの最適化
ChatGPTなどのクラウドサービスの利用料が不要になり、長期的なコストを削減できます。一度モデルをセットアップすれば、ランニングコストはハードウェアと電力のみです。
3. カスタマイズ性
特定の業務やドメインに最適化したモデルを自由に構築できます。ローカル環境なら、チューニングやデータセットの調整も容易です。
ローカルDifyの利点
Difyとはオープンソースの生成AIアプリ開発プラットフォームです。幅広い用途で使える生成AIアプリをノーコードで作ることができます。
DifyにはSaaS版もありますが、ローカル環境で動かすこともできます。

1. コストの最適化
DifyはSaaS版では、無料アカウントだとアプリを10個までしか作ることができませんが、ローカル版であれば無料で何個でもアプリを作成できます。
2. GUIでの簡単な設定
プログラミング経験がなくても、直感的にチャットエージェントを構築できます。APIやワークフローをGUI上で設定可能です。
3. 完全ローカルなデプロイ
Difyをローカル環境にインストールすれば、インターネット接続を必要とせずにエージェントを運用可能です。
ローカルLLM(Ollama)のインストール
ローカルLLMはOllamaを使って動かします。Ollamaは、ローカル環境でLLMを実行するためのオープンソースのプラットフォームです。
llamaやphiといったモデルを使うことができます。
1. Ollamaアプリのインストール
下記サイトからOllamaをダウンロードします。

解凍してOllamaアプリを展開します。
「開いてもよろしいですか?」と表示されたら、「開く」をクリックします。

ダウンロードフォルダから、アプリケーションフォルダに移動するかどうかを聞かれます。「Move to Applications」を選択したら、インストールは完了です。

2. モデルのインストール
「Welcome to Ollama」が表示されたら「Next」をクリックします。

「Install the command line」画面で、「Install」を選択します。

「Run your first model」画面が表示されたら、「ollama run llama3.2」をコピーします。

先ほどコピーしたコマンドを、ターミナルで実行すると、LLMの一つであるllama3.2がインストールされ、ターミナル上でチャットできるようになります。
llama3.2の場合、モデルのサイズは2GBほどです。

試しに「Hello」と送ってみました。

「/bye」と送信することでチャットを終了できます。
また「ollama pull [モデル名]」というコマンドで他のLLMも使用することができるようになります。
使用できるモデルは下記公式サイトから確認できます。
ローカルDifyのインストール
続いてDifyをローカル環境で使えるようにしていきます。
1. Docker Desktopのインストール
お使いのMacにDocker Desktopがインストールされていない場合は、Docker Desktopをインストールします。

Docker Desktopはインストール後、起動したままにしておきます。
2. Difyのクローンと起動
ターミナルを開き、Difyをクローンします。
% git clone https://github.com/langgenius/dify.git
hub.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 112263, done.
remote: Counting objects: 100% (485/485), done.
remote: Compressing objects: 100% (309/309), done.
remote: Total 112263 (delta 222), reused 418 (delta 170), pack-reused 111778 (from 1)
Receiving objects: 100% (112263/112263), 64.12 MiB | 5.79 MiB/s, done.
Resolving deltas: 100% (81388/81388), done.
difyソースコードのdockerディレクトリに移動します。
% cd dify/docker
環境配置ファイルをコピーします。
% cp .env.example .env
Docker コンテナを起動します。
% docker compose up -d
[+] Running 73/9
✔ api 12 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 212.9s
✔ nginx 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 73.6s
✔ web 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 22.3s
✔ weaviate 4 layers [⣿⣿⣿⣿] 0B/0B Pulled 111.3s
✔ db 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 119.3s
✔ sandbox 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 185.3s
✔ ssrf_proxy 3 layers [⣿⣿⣿] 0B/0B Pulled 63.1s
✔ worker Pulled 212.9s
✔ redis 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 101.7s
[+] Running 11/11
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.1s
✔ Container docker-db-1 Started 0.9s
✔ Container docker-redis-1 Started 0.9s
✔ Container docker-sandbox-1 Started 0.9s
✔ Container docker-web-1 Started 0.9s
✔ Container docker-weaviate-1 Started 0.9s
✔ Container docker-ssrf_proxy-1 Started 0.9s
✔ Container docker-worker-1 Started 0.1s
✔ Container docker-api-1 Started 0.1s
✔ Container docker-nginx-1 Started 0.0s
ブラウザを開き、http://localhost/installにアクセスし、下記のように表示されればOKです!

必要事項を入力して管理者アカウントを設定し、ログインしておきます。
DifyとOllamaでチャットボットの作成
以上で必要な準備が整ったので、DifyとOllamaを使ってチャットボットの作成を行います!
1. Ollamaの起動
コマンドラインを開き、Ollamaを起動します。
% ollama run llama3.2
2. Difyでアプリの作成
スタジオ画面で、「最初から作成」をクリックします。

アプリのタイプは「チャットボット」、オーケストレーションは「基本」を選択し、「作成する」をクリックします。

LLMプロバイダーキーの設定を求められるので、「設定に移動」をクリックします。

Ollamaの「モデルを追加」をクリックします。

「Model Name」に適当なモデル名、
「Base URL」に「http://host.docker.internal:11434」
と入力し、「保存」をクリックします。

右上のモデル選択から、先ほど追加したモデルに選択します。

以上で設定は完了です!
下記のように会話できるようになります!!

まとめ
最後まで読んでいただき、ありがとうございます!
ローカルLLMとローカルDifyを活用すれば、データセキュリティを守りつつ、生産性を向上させるチャットエージェントを実現できます。
このアカウントでは、生成AIを活用して業務生産性を高めるための情報を発信しています。ぜひフォローして、他の記事もお読みください。
また、Xでは生成AIの活用法・最新情報を発信しています!
生成AIで、社内ルールなどに沿って文章をレビューするツールの作り方を、noteで記事にしました!
— しのつか | 生成AI活用 (@shinotsuka_ai) November 13, 2024
【生成AI】指定ルールで確実に校正!文章校正AIツールの作り方@shinotsuka_ai @DifyJapan #note #Difyhttps://t.co/CvXPtXowa0