近年、「ChatGPT」をはじめとする生成AIの活用は、ビジネスや開発現場で急速に一般化しつつあり、AI技術自体も日々進化し続けています。
一方で、AIアプリ開発における技術選定やベストプラクティス、コスト見積もりといった要素は、まだ業界として確立途上にあり、判断に迷う場面も少なくありません。
そんな中で今注目を集めているのが、DifyのようなAIアプリ開発を支援するプラットフォームです。 Dify(ディファイ)とは、誰でも気軽にAIアプリを作れる便利なツールです。
本記事では、AIアプリ開発プラットフォーム「Dify」を活用して構築したAIエージェントアプリを題材に、主に以下の観点からDifyやAIの活用価値を考察します。
また、本記事では導入方法から基本的なアプリ作成の流れまでをひと通りご紹介していますので、 読み進めていただければ、Difyを使ったアプリ作成のイメージもつかんでいただけると思います。
AIアプリ開発やDifyの導入を検討されている方、AIエージェントの活用に関心のある方にとって、少しでも参考になれば幸いです。
以下は、Dify 公式ドキュメント | Difyへようこそ より引用したものです。
Dify はオープンソースのAIアプリ開発プラットフォームです。
Backend as ServiceとLLMOpsの理念を融合し、開発者が迅速にAIアプリケーションを構築できるようにします。
同時に、プログラミングが得意でない方でも、自分のアイデアをすぐにAIアプリにできる直感的なインターフェースを提供しています。
例えば、音声をテキストに変換して議事録を自動生成するツールや、RAG(Retrieval-Augmented Generation)という手法を活用した社内情報検索ツールなども、簡単に構築することが可能です。
また、画面をポチポチ操作するだけでAIアプリを作成できる直感的なUIが用意されているため、プログラミングが苦手な方でも、自分のアイデアを比較的簡単に形にすることができます。
一方で、エンジニアにとっても、アプリのバックエンドやAIモデルの管理を効率化するプラグインやツールが揃っており、本格的なAIアプリをスピーディに作成することもできます。
Difyの導入方法については、大きく分けて以下の2種類です。
それぞれの特徴と導入のポイントを説明します。
Difyの公式が提供しているクラウドサービスを使う方法です。
アカウントを登録するだけで、すぐにアプリ開発を始められるのが大きなメリットです。
特徴:
こんな方におすすめ:
自社サーバやクラウド上にDifyを構築・運用する方法です。
公式が提供しているDocker Compose構成を使えば、比較的簡単に環境構築を行うことができます。
特徴:
こんな方におすすめ:
👉 価格情報の詳細については、 Dify 公式サイト | 価格設定 をチェック
| 観点 | クラウドサービス | セルフホストサービス |
|---|---|---|
| 導入のしやすさ | ◎ アカウント登録後すぐに利用可能 | △ Docker構成やインフラ構築が必要 |
| 価格 | △ 無料枠あり、商用利用や高負荷時は有料 | ◎ OSSとして無料で利用可能(※インフラ費別途) |
| 拡張性 | △ UIや機能追加には制約あり | ◎ ソース改変・プラグイン追加が自由 |
| セキュリティ | △ データはクラウド上で処理される | ◎ 自社環境で完結できるため制御しやすい |
| 利用制限 | △ プランに応じた制限あり(API数など) | ◎ 基本的に制限なし(構成次第) |
導入の手軽さを重視するなら、まずはクラウドサービスから試してみるのがおすすめです。
アカウントを作ればすぐに使い始められるので、「とりあえずDifyを触ってみたい」「PoC(検証)してみたい」という方に向いています。
一方で、「社内のデータを活用したい」「自分好みに細かくカスタマイズしたい」場合は、セルフホストがおすすめです。
特に、業務や商用利用を見据えているケースでは、柔軟性やセキュリティの面でもセルフホストのほうが安心です。
また、コストの観点でも、たとえばOllamaのような無料で使えるローカルLLMと組み合わせることで、セルフホスト環境なら低コストでAIアプリを構築することも可能です。
※商用利用の場合はライセンスを確認してください
セルフホストサービスを利用したローカルの環境構築手順について説明します。 今回は、 Amazon Bedrock でLLMを利用した環境構築手順を解説します。 ※本記事の手順は、Windows環境および Dify バージョン 1.4.1 を前提としています。
Docker Desktop、Gitがインストール済みであること。
Difyのソースコードをローカルにクローンします。
git clone https://github.com/langgenius/dify.git
git clone https://github.com/langgenius/dify.git --branch 1.4.1
「.env」に以下を追加します。
# AWSアクセスキー
AWS_ACCESS_KEY_ID=※1
AWS_SECRET_ACCESS_KEY=※1
※1 一時認証情報を環境変数に設定する場合は、セッショントークン (AWS_SESSION_TOKEN) も指定する必要があります。
AWSアクセスキーの設定を行います。
# AWSアクセスキー
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
※ 一時認証情報を環境変数に設定する場合は、セッショントークン (AWS_SESSION_TOKEN) も指定する必要があります。
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
※ 一時認証情報を環境変数に設定する場合は、セッショントークン (AWS_SESSION_TOKEN) も指定する必要があります。
Difyソースコードのdockerディレクトリに移動し、環境配置ファイルをコピーします。
cd dify/docker
cp .env.example .env
Dockerコンテナを起動します。
docker compose up -d
以下のようなコンソール画面になれば、成功です。
以下URLからDifyの管理者初期化ページにアクセスし、管理者アカウントを設定してください。
http://localhost/install
作成したアカウントでログイン後、Difyのホーム画面が表示されます。
参考:Dify 公式ドキュメント | Docker Compose デプロイ
CloudflareといったSSL/TLSに独自証明書(カスタムCA証明書)が適用されている環境では、[SSL: CERTIFICATE_VERIFY_FAILED]のようなエラーが発生し、処理が中断される、もしくはプラグインをインストールできない等の問題が発生する場合があります。
その場合は、以下の手順でDocker環境にカスタム証明書を追加することで解決できる可能性があります。
※ご利用のDifyのバージョンによってはdocker-compose.yamlの構成が異なる場合がありますのでご了承ください。
Dockerコンテナ(docker-api-1)から証明書ファイル(cacert.pem)をローカルにコピーします。
docker cp docker-api-1:/app/api/.venv/lib/python3.12/site-packages/certifi/cacert.pem C:/workspace-Dify_main/certificates/cacert.pem
※C:/workspace-Dify_main/certificates/cacert.pemはご自身のローカル環境に置き換えてください。
コピーしたcacert.pemの末尾に、必要な独自証明書を追記します。
以下に従い、docker-compose.yamlを編集します。
- ./volumes/app/ssl_certs/cacert.pem:/usr/local/share/ca-certificates/cacert.pem
entrypoint:
# Append certificates to certifi's CA bundle
- /bin/bash
- -c
- |
# マウントしたファイルを、certifiライブラリのpemに上書き
cp /usr/local/share/ca-certificates/cacert.pem /app/api/.venv/lib/python3.12/site-packages/certifi/cacert.pem
/entrypoint.sh
AWS_CA_BUNDLE: /usr/local/share/ca-certificates/cacert.pem
REQUESTS_CA_BUNDLE: /usr/local/share/ca-certificates/cacert.pem
- ./volumes/app/ssl_certs/cacert.pem:/usr/local/share/ca-certificates/cacert.pem
参考リンク
DifyはOpenAIなど多様なモデルに対応していますが、本記事ではAmazon Bedrockと連携する手順を解説します。
Bedrockの料金は以下のようになっています。
Amazon Bedrockの料金
「Claude 3 Haiku」は低コストで軽量・高速に動作するため、今回はこのモデルを選択しました。
モデルカタログから使いたいモデルの三点リーダー(…)をクリックします。
「アクセスを変更」を選択し、モデルを利用可能にします。
「モデルアクセスを変更」をクリックします。
有効にしたいモデルをチェックし、「次へ」ボタンをクリックします。
サイトの指示通りに、情報を入力(以降もサイトの指示通りに操作)してください。
アクセス付与後、ステータスが「アクセスが付与されました」になります。
ホーム画面右上のアイコンをクリックし、下の画面の「設定」をクリックします。
左の「モデルプロバイダー」をクリックし、好きなプロバイダを選択し「インストール」を実行(今回はAmazon Bedrockを選択)します。
インストールが終わったらセットアップを開いて、「AWS Region」のみを入力し「保存」ボタンをクリックします。
・AWS Region:ap-northeast-1(東京)
ナレッジベースにデータを登録するには、「システムモデル設定」にて、埋め込みモデルを設定する必要があります。
今回は下記のように設定しました。
実際にナレッジベースのCSVから顧客に関する情報を抽出するチャットフローを作成しました。
ナレッジタブから、左側に表示される「ナレッジベースを作成」ボタンをクリックします。
ファイルをインポートします。
Geminiなどで作成した営業日報のサンプルデータを使用します。
チャンク設定をします。
LLMには一度に入力できる限界のサイズがあり、チャンク分割することによって、大量のテキストデータをLLMが処理できるサイズにすることができます。
埋め込みモデルなどを選択し、保存して処理をクリックします。
処理が完了すればステータスが「利用可能」になります。
今回作成するチャットフローはこちらになります。
開始ブロックから始まり、知識検索ブロックで先ほど作成したナレッジベースにアクセスします。
その後LLMブロックでClaudeを選択します。また、AIにどのようなプロンプトを渡すのかも、このブロックで指定することができます。最後に回答ブロックを配置します。
スタジオタブから「最初から作成」をクリックします。
チャットフローを選択してアプリの名前とアイコンを任意で設定します。
作成するボタンをクリックします。
開始ブロックを配置します。
開始ブロックでは特に何も設定せずに次のステップに進みます。
知識検索ブロックでは以下を設定します。
LLMブロックでは以下を設定します。
最後に回答ブロックを配置します。
すべてのブロックを配置したら、プレビューボタンをクリックし、チャットにプロンプトを送って動作を確認してみます。
見切れていますが、検索結果は9件表示されています。LLMブロックで設定した要求事項や出力形式に従って生成されていることが分かります。
以上でチャットフローの作成は完了となります。
本記事では、オープンソースのAIアプリ開発プラットフォーム「Dify」を活用し、ナレッジベースから情報を抽出するAIエージェントアプリの構築手順を紹介しました。環境構築の手順、ナレッジベースの作成方法、ワークフローの設計、各ブロックの役割と設定内容までを実際のスクリーンショット付きで解説したことで、Difyを活用したAIアプリ開発のイメージがより具体的に伝わったのではないでしょうか。
Difyはノーコード故に、直感的なUIと柔軟な拡張性を兼ね備えています。
クラウド版であれば環境構築も不要で、アカウント登録後すぐに利用を開始できる点も魅力です。
今回のようにセルフホスト環境を選択した場合でも、Dockerベースの構成により比較的スムーズに構築できるため、学習コストも低いです。
また、オープンソースであるため、独自プラグインの開発や既存機能の拡張が可能です(OpenAI、Gemini、Ollamaなどもインストールできます)。
LLMの切り替えや、埋め込みモデル・Rerankモデルの選択、API連携など、柔軟に構成をカスタマイズできます。
今後は、RAGや埋め込みモデルの進化に加えて、Bedrockのような各種LLM基盤との連携強化が進むことで、より精度の高い、業務に即したAIエージェントの構築が可能になると期待されます。