
【Dify】🔰初心者必見!DifyをローカルPCで動かすメリットと簡単なセットアップ方法
はじめに
生成AIを活用したアプリケーション開発が注目を集めていますが、その中でもDifyは、初心者でも手軽に始められるオープンソースの大規模言語モデル(LLM)アプリケーション開発プラットフォームとして人気です。
この記事では、DifyをローカルPCで動かすメリットと、その魅力を解説します。
また、ローカルPCで動かした場合でも、通常のサービスと機能的に違いが無いか簡単に試してみました。
Difyとは?
Difyは、AIワークフローの構築やRAG(Retrieval-Augmented Generation)パイプラインの設定、モデル管理など、AIアプリケーション開発をサポートするオールインワンプラットフォームです。特に、初心者でも直感的に使えるユーザーインターフェースを備えており、短期間でプロトタイプから本番環境への移行が可能です。
プログラムを書くことなく、ノーコードで生成AI、LLMを活用したアプリケーションが作れるのです。
つまり非エンジニアの人でもAIアプリ開発ができます。
ローカルPCでDifyを動かす3つのメリット
1. データの完全なコントロール
ローカル環境でDifyを動かすことで、データの管理が完全に自分の手元で行えます。セキュリティリスクを最小限に抑えつつ、自分のPC内で安全に開発・テストを進められるのは大きな利点です。特に、センシティブなデータやプライベートなプロジェクトに関しては、このメリットが大きいでしょう。
Dockerが動く環境であればどこでも動きますので、ローカルPCでなくてもAWS、Azureといったクラウドサービスのサーバ上でも動かすことができます。
2. コストの削減
一般的なAIサービスは、お試し程度だと無料で使えますが本格的に使いたい場合は毎月お金がかかるのが一般的です。
しかし、ローカルPCでDifyを動かせば、そのようなランニングコストを抑えることができます。Difyは比較的軽量なソフトウェアであるため、標準的なPCスペックでも十分に動作します。これにより、低コストで高性能なAIアプリケーションの開発が可能になります。
もちろんコンピューティングリソース代のコストは必要ですが、ちょっとだけ試してみたい場合、停止しているときはコストがかからないAWSなどのクラウドのサーバを使うことでコストが抑えられます。
Difyの利用(ローカルPC)
Difyのダウンロード、起動
docker、docker-composeが入っている環境で以下のコマンドを実行するだけです。
とても簡単ですね!
# git clone https://github.com/langgenius/dify.git
# cd dify/docker/
# docker-compose up -dエラー無く実行できたら docker-compose ps で起動状況を見てみます。
# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 docker.io/langgenius/dify-api:0.6.16 "" api About a minute ago Up About a minute
docker-sandbox-1 docker.io/langgenius/dify-sandbox:0.2.1 "" sandbox About a minute ago Up About a minute
docker-web-1 docker.io/langgenius/dify-web:0.6.16 "" web About a minute ago Up About a minute
docker-worker-1 docker.io/langgenius/dify-api:0.6.16 "" worker About a minute ago Up About a minuteブラウザを起動してアクセスします。
http://localhost
もしくは
http://IPアドレスでアクセスします。

アクセスできました!
下のほうに「管理者アカウントの設定」のリンクがあるのでクリックします。
管理者アカウントの設定をします。
必要な情報を入力して「セットアップ」をクリックします。

今回は適当にtest@test.comというメールアドレスを入力しました。
ローカルPCでセットアップしてるので、メール認証とか面倒なことは必要ありませんでした。

サインインすると以下のトップ画面が表示されます。
とてもシンプルですね。
見た感じ通常のサービス版のDifyと違いは無さそうです。

さっそく動かしてみましょう。
「最初から作成」をクリックします。
アプリのタイプが選べます。
チャットボット
テキストジェネレーター
エージェント
ワークフロー
今回は簡単そうな「チャットボット」を選択します。

右側に「LLMプロバイダーキーが設定されていません」と表示されていました。
「設定に移動」をクリックします。


「OpenAI」の「セットアップ」をクリック

APIキーだけを入力して「保存」をクリック


モデルも選択できる。

「デバッグとプレビュー」からチャットのテストをする

「こんにちは」とプロンプトを入力して実行します。
「こんにちは!いかがですか?何かお手伝いできることがあれば教えてください」
と回答がありました。
テストはOKそうです。
次に「公開する」をクリックします。

「更新」をクリックします。

変化ないので、「公開する」ー「アプリを実行」をクリックします。

「こんにちは」とプロンプトを入力します。
「こんにちは!今日はどんなことをお話ししましょうか?」
と回答してくれました!

次に「公開する」ー「サイトに埋め込む」をクリックします。

以下3パターンの中から選択できます。



次に「公開する」ー「APIリファレンスにアクセス」をクリックします。
APIの説明ページに移動します。
そして右上の「APIキー」をクリックします。

「新しいシークレットキーを作成」をクリック

curlコマンドでAPI実行テスト
curl -X POST 'http://192.168.1.9/v1/chat-messages' \
--header 'Authorization: <★APIキーを入力>' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "What are the specs of the iPhone 13 Pro Max?",
"conversation_id": "",
"user": "abc-123",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": "https://cloud.dify.ai/logo/logo-site.png"
}
]
}'
レスポンス
{"event": "message", "task_id": "59da21b7-1b53-401c-b958-0b7a4c1b4479", "id": "529d6825-1e94-4803-ac1c-c79aa34aef67", "message_id": "529d6825-1e94-4803-ac1c-c79aa34aef67", "conversation_id": "473e04bc-f9d6-4d24-b942-85668f87c34a", "mode": "chat", "answer": "The iPhone 13 Pro Max has the following specifications:\n\n### Display\n- **Size**: 6.7 inches\n- **Type**: Super Retina XDR display\n- **Resolution**: 2778 x 1284 pixels\n- **Brightness**: Up to 1000 nits (typical); 1200 nits (HDR)\n\n### Processor\n- **Chip**: A15 Bionic chip\n- **Neural Engine**: 16-core neural engine\n\n### Camera System\n- **Rear Cameras**: Triple 12 MP system (Ultra Wide, Wide, Telephoto)\n - Ultra Wide: f/1.8 aperture\n - Wide: f/1.5 aperture\n - Telephoto: f/2.8 aperture\n- **Night Mode, Deep Fusion, Smart HDR 4**\n- **Video Recording**: 4K Dolby Vision HDR recording\n\n### Front Camera\n- **Camera**: 12 MP with Night Mode and Deep Fusion\n- **Video Recording**: 4K video recording up to 60 fps\n\n### Storage Options\n- **Capacity**: 128GB, 256GB, 512GB, 1TB\n\n### Battery Life\n- **Video Playback**: Up to 28 hours\n- **Fast Charging**: Supports MagSafe and Qi wireless charging\n\n### Operating System\n- **Initial OS**: iOS 15 (upgradable)\n\n### Other Features\n- **5G Capable**\n- **Face ID**\n- **Ceramic Shield front cover**\n- **Water and Dust Resistance**: Rated IP68\n\nThese specifications provide a comprehensive view of the iPhone 13 Pro Max capabilities.", "metadata": {"usage": {"prompt_tokens": 8520, "prompt_unit_price": "0.15", "prompt_price_unit": "0.000001", "prompt_price": "0.0012780", "completion_tokens": 349, "completion_unit_price": "0.60", "completion_price_unit": "0.000001", "completion_price": "0.0002094", "total_tokens": 8869, "total_price": "0.0014874", "currency": "USD", "latency": 6.144609890000083}}, "created_at": {"event": "message", "task_id": "59da21b7-1b53-401c-b958-0b7a4c1b4479", "id": "529d6825-1e94-4803-ac1c-c79aa34aef67", "message_id": "529d6825-1e94-4803-ac1c-c79aa34aef67", "conversation_id": "473e04bc-f9d6-4d24-b942-85668f87c34a", "mode": "chat", "answer": "The iPhone 13 Pro Max has the following specifications:\n\n### Display\n- **Size**: 6.7 inches\n- **Type**: Super Retina XDR display\n- **Resolution**: 2778 x 1284 pixels\n- **Brightness**: Up to 1000 nits (typical); 1200 nits (HDR)\n\n### Processor\n- **Chip**: A15 Bionic chip\n- **Neural Engine**: 16-core neural engine\n\n### Camera System\n- **Rear Cameras**: Triple 12 MP system (Ultra Wide, Wide, Telephoto)\n - Ultra Wide: f/1.8 aperture\n - Wide: f/1.5 aperture\n - Telephoto: f/2.8 aperture\n- **Night Mode, Deep Fusion, Smart HDR 4**\n- **Video Recording**: 4K Dolby Vision HDR recording\n\n### Front Camera\n- **Camera**: 12 MP with Night Mode and Deep Fusion\n- **Video Recording**: 4K video recording up to 60 fps\n\n### Storage Options\n- **Capacity**: 128GB, 256GB, 512GB, 1TB\n\n### Battery Life\n- **Video Playback**: Up to 28 hours\n- **Fast Charging**: Supports MagSafe and Qi wireless charging\n\n### Operating System\n- **Initial OS**: iOS 15 (upgradable)\n\n### Other Features\n- **5G Capable**\n- **Face ID**\n- **Ceramic Shield front cover**\n- **Water and Dust Resistance**: Rated IP68\n\nThese specifications provide a comprehensive view of the iPhone 13 Pro Max capabilities.", "metadata": {"usage": {"prompt_tokens": 8520, "prompt_unit_price": "0.15", "prompt_price_unit": "0.000001", "prompt_price": "0.0012780", "completion_tokens": 349, "completion_unit_price": "0.60", "completion_price_unit": "0.000001", "completion_price": "0.0002094", "total_tokens": 8869, "total_price": "0.0014874", "currency": "USD", "latency": 6.144609890000083}}, "created_at":
APIでも利用できました!
チャットボットのカスタマイズ
「オーケストレーション」ー「手順」のところの「自動」をクリックします。

「試してみる」から「専門アナリスト」をクリックします。

指示が表示されます。
続けて「生成」をクリックします。

右側に自動的にプロンプトが生成されます。
「適用」をクリックします。

「確認」をクリックします。

自動的に「手順」、「入力フィールド」が設定されます。
「入力フィールド」がアプリ画面で最初に入力する項目として表示されるようです。
「手順」はプロンプトのようですね。

管理関連
左メニューの「ログ&アナウンス」をクリックします。
ログが確認できます。

次に左メニュから「概要」をクリックします。
アプリの利用状況が可視化できます。

右上の「アプリのパフォーマンスの追跡」をクリックします。
LangSmithとLangfuseと連携できます。

上部メニュー
ツール
上部メニューの「ツール」をクリックします。
いろんなツールが選択できます。

「YahooFinance」をクリックしてみます。
右側に説明が表示されます。

次に「Google」をクリックします。
「認証する」というボタンがありました。
認証することでGoogleのサービスと連携できそうです。
「認証する」をクリックします。

「SerpAPI API Key」の入力項目がありました。
GoogleといってもSerpAPIだけでしょうかね。

カスタムツール
次は「カスタム」をクリックします。
最初は何もないので「カスタムツールを作成する」をクリックします。


試しに「例」ー「天気(JSON)」をクリックします。

スキーマに反映されました。
実際試しては無いですが、これでデフォルトのツールにないAPIなどもツールとして使えそうです。

ワークフロー
次に「ワークフロー」をクリックします。
今は何もありませんでした。
「追加するには「ワークフロー→ツールとして公開」に移動する」と表示されていますので、何か手順が必要なのかもしれません。

ナレッジ
上部メニューから「ナレッジ」をクリックします。
続けて「ナレッジを作成」をクリックします。

「ウェブサイトから同期」をクリック

「設定」をクリックします。

「ウェブサイトによる Firecrawl」の「設定」をクリックします。

「API Key」を入力します。
もし、まだAPIキーを取得していない場合は、Firecrawlのページから取得しましょう。
無料で取得することが可能です。


今回は「SearchGPT」のページを登録します。
比較的新しいので、LLMの事前学習データの中には入っておらず、素のLLMでは答えられないはずです。
「実行」をクリックします。

1ページスクレイピングできたようです。
つづけて「次へ」をクリックします。

「テキストの前処理とクリーニング」のページが表示されます。
RAGに関する設定のページのようですね。
右側にプレビューが表示されています。
とりあえず「カスタム」をクリックしてみます。

チャンク長、チャンクのオーバーラップが指定可能です。

「検索設定」では「ベクトル検索」、「全文検索」、「ハイブリッド検索」が選択できます。
今回は「ハイブリッド検索」を選択しました。

「ハイブリッド検索」では「ウェイト設定」、「Rerankモデル」が選べます。
「ウェイト設定」を選択します。
「保存して処理」をクリックします。

ナレッジが作成されました。
このように非エンジニアの人でも簡単にRAGが構築できるのはよいですね。
RAGによって、LLMは知識を拡張して回答をすることができます。
「ドキュメントに移動」をクリックします。

左メニューの「検索テスト」をクリック

「SearchGPTとは何ですか?」を入力。

右側に検索結果が出力されます。
ここはRAGの最後のGenerationは無く、ただ検索した結果だけが出力されるようです。

それでは、ナレッジを利用したアプリケーションを作ってみましょう。
「最初から作成」をクリックします。
名前をつけたら「作成する」をクリックします。

追加したナレッジを活用するには、「コンテキスト」の「追加」をクリックします。

さきほどのWikiで作成したナレッジを選択して「追加」をクリックします。


「デバッグとプレビュー」でテストします。

ちょっと違うような気もしますが、きっと「検索エンジンのプロトタイプ」と言いたかったのでしょう。
大枠では間違っては無さそうです。
エージェント
「最初から作成」ー「エージェント」を選択します。


ワークフロー
Difyおなじみのワークフローです。
Difyが強力なツールとなるのは、このワークフローのおかげですが、非エンジニアの人でもノーコードで複雑な生成AIのアプリケーションが作れます。
「最初から作成」ー「ワークフロー」を選択します。

ワークフロー画面が起動します。
たとは自分の自由自在にフローを作るだけですね。

まとめ
DifyをローカルPCで動かしてみました。
使ってみた限りでは通常のサービス版と違いは無さそうです。
自分の手元にあるPCでDifyのワークフローが作れるのはいいですね!
セキュリティが気になってなかなか手軽にサービスのDifyが使えない場合など、自分立ちのオンプレのサーバにDifyを起動させて使ったり、様々な用途で使えそうです。