見出し画像

【ローカル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の活用法・最新情報を発信しています!

参考


いいなと思ったら応援しよう!