Dify をローカル環境にデプロイしてみた（Docker）

## はじめに
Difyは大規模言語モデル(LLM)を活用したAIアプリケーションを簡単に作ることができるプラットフォームです。SaaSとしても提供されていますが、OSSとしても提供されていて、Docker環境で簡単にデプロイすることができます。
自前でデプロイすることで、次のようなメリットがあります。
- **プライバシー保護**：データが外部に送信されるリスクを低減します。
- **制限の解除・コスト削減**：SaaSの無料版では保存できるアプリ数が10個までのほか、ナレッジ容量や管理者の数など制限がありますが、OSS版は無制限です。

SaaSだと多少の無料クレジットが使えたりしますので、お試しにはSaaSがいいかと思いますが、本格的な使用には自前版がよさそうです。今回インストールしたDifyのバージョンは0.8.3でした。

前回の記事

https://qiita.com/k-kariya/items/ff4fc9807968a2220158

参照ページ

https://zenn.dev/acntechjp/articles/79e4b4abfb2112

https://docs.dify.ai/getting-started/install-self-hosted/docker-compose

## 今回デプロイする環境
今回は、自前のPanasonicのノートPCにデプロイします。

OS 名	Microsoft Windows 11 Pro
プロセッサ	12th Gen Intel(R) Core(TM) i5-1245U、1600 Mhz
インストール済みの物理メモリ (RAM)	16.0 GB
SSDサイズ	222.24 GB 

## 必要な知識・前提条件
Windowsの方であれば、コマンドプロンプトを開く必要があります。
LLMをAPIで使うことになるので、APIの利用登録は必要になります。OpenAIやGoogle, Anthropicはもちろん、さまざまなプロバイダーが利用できます。多くの場合、最初は無料で試せるクレジットが利用できるかと思います。
他は特にありませんが、GitやDockerやウェブの仕組みについて知識があるとなおいいでしょう。

## 事前準備
Docker や Git をあらかじめ使えるようにしておきます。
以下サイトから、環境にあったものをインストールしてください。
記載はWindows11環境の場合になります。
### Docker
https://docs.docker.com/desktop/install/windows-install/#wsl-2-backend
 [Docker Desktop for Windows - x86_64]を選択し、すべて標準でインストール
 Dockerは500MB近くあります。
### Git
https://git-scm.com/
[Downloads]->[Download for Windows]->[64-bit Git for Windows Setup]を選択し、すべて標準でインストール

## Difyのデプロイ
[Difyの公式](https://docs.dify.ai/getting-started/install-self-hosted/docker-compose)にある通り、簡単にデプロイできました。
コマンドプロンプトでインストール先に移動します。
（Windowsの場合、エクスプローラーでインストール先のフォルダを開き、アドレスバーに「cmd」と入力すると移動済みのコマンドプロンプトが開きます）

```cmd:コマンドプロンプト
git clone https://github.com/langgenius/dify.git
cd dify/docker
copy .env.example .env
docker compose up -d
```
git clone でプログラムをダウンロードし、環境設定ファイル.envをコピーして作成、システムを起動という流れです。

## 動作を確認
しばらく待ってインストールが完了したら、ブラウザで接続してみてください。
http://localhost/
管理者アカウントを作成したら、AIエージェントをさっそく作ってみましょう。

## LLMのAPIKEYを設定する
何はなくともLLMを利用するのですからAPIKEYの設定は必須です。
クラウド版だと試用のOpenAIクレジットがもらえてAPIKEY設定なしでも動きますが、OSS版はそうしたおまけはなしです。
右上のアカウント名のところをクリックして、[設定]->[モデルプロバイダー]を選択します。
例えば、[OpenAI]を選択したら、[API Key]を入力して保存すると、OpenAIの各モデルが使えるようになります。APIがまだない方は、[Get your API Key from OpenAI](https://platform.openai.com/account/api-keys) のリンクから取得しましょう。
GoogleのGeminiは学習データを提供することで無料で利用できそうですね。

## まずはチャットボットを試す
1. 設定画面を閉じて[ホーム画面](http://localhost/apps)を開いたら、[最初から作成]をクリックし、適当な名前を付けて[作成する]を押下します。（今回は[チャットボット][基本]のままにします）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/fba65355-5dcd-5f8f-30cc-820edd79e584.png)
1. 次の画面で、モデルとプロンプトを設定します。OpenAIの場合、[GPT-4o mini]が性能もよくコストパフォーマンスがいいので、お試しにはまずはこちらをお勧めします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281116/b07e9acc-be86-e86f-352a-ef655fd58796.png)
1. 手順のところにプロンプトを書くことで、ChatGPTのGPTsが実現できます。今回はプロンプトの話ではないので空欄のままにしておきます。ネット検索でいろいろ調べてみてください。
参考：プロンプトのこんな記事も書きました→[【Dify】チャットボットのプロンプトでアプリっぽいものを作る（カフェのオーダーアプリ）](https://qiita.com/k-kariya/items/fee750da59c419c8a5b0)
1. 右側の「デバッグとプレビュー」画面下に入力欄があるので、さっそく試してみましょう。
1. 右上の[公開する]->[更新]->[アプリを実行]で、アプリ画面が開きます。

## まとめ
OpneAIのGPTsの場合、ChatGPTの有料ユーザー間でしか共有できませんでしたが、Difyなら一般向けサービスを作ることも可能です。今回は基本のチャットボットでしたが、チャットフローやワークフローで業務に組み込んだ使い方ができるようになります。また、チャットボットでも社内情報をナレッジとして読み込むことで、社内情報をもとに回答してくれるサポートデスクとしても使えるようになります。
今回の環境では、サービスを起動すると、メモリの使用率が高い旨の通知が出るようになりました。使用率81％ですね。本格的に利用するには16GBメモリでは足りないようです。
以上、ご参考になさってください。