こんにちは!今回は、生成AIを活用したWebアプリを簡単に開発できる「Dify」を紹介します。
Difyはノーコードで生成AIを活用したチャットボットや自動化アプリの開発ができるプラットフォームです。AIやプログラミングの知識がなくても生成AIアプリを構築でき、外部サービスとの連携が可能で、アプリの使用状況を監視・分析する機能も備わっています。また、Difyはオープンソースで提供されており、自社環境でホスティングすることも可能です。これにより、データ管理やプライバシー保護を重視するクライアント向けプロジェクトにも適したプラットフォームです。
本記事では、Difyの概要や基本的な使い方、類似サービスであるOpenAIのGPTsとの違いや使い分けのポイントについて解説します。最後までぜひご覧ください!
- 1. Difyとは
- 2. Dify使い方
- 3. まとめ
1. Difyとは
1.1. 概要
Dify(ディファイ)はLangGenius, Inc.が開発するサービスで、プログラミングの知識がなくても生成AIと連携したアプリを簡単に開発できるノーコードプラットフォームです。視覚的に分かりやすいエディターで生成AIを活用するアプリやチャットボットを簡単に作成することができます。
DifyではGPTやClaude、Llama2、Azure OpenAIなど多様な生成AIモデルと連携することができるので、ニーズに応じてモデルを選択して利用できます。
通常、生成AIアプリを開発するとなるとインフラ構築からバックエンド、フロントエンド開発まで大がかりな開発となりますが、Difyで開発する場合はDifyのクラウド環境で開発から公開までを簡単に行うことができます。
また、Difyはオープンソースとして提供されており、自社サーバーやクラウド上にホストすることでデータの制御やプライバシー保護を実現できます。クライアント向けの専用環境や企業内での利用に適しており、安心して活用できます。
1.2. 特徴
- 外部API連携:Difyの機能を使って、Googleなどの外部APIと簡単に連携することができます。
- ナレッジ管理とRAG:独自のデータ(ナレッジ)を登録し、RAG(情報検索強化生成)技術を活用して応答を生成できます。RAGにより、事前に設定したFAQや製品情報に基づいた回答が可能です。
- ライセンス:Difyで開発したアプリの個人・企業としての公開に特別なライセンスは不要とされています。ただし、マルチテナント機能やカスタマイズが必要な場合は、Difyからライセンスを取得する必要があるということなので、心配な場合はDifyに確認するのがおすすめです。
- 監視・分析機能:Difyの監視機能を使って、アプリの使用状況をリアルタイムで確認することができます。
- セキュリティ:Difyは2024年10月にSOC2 Type1を取得しており、セキュリティ面でも信頼性があります。
🔒 Dify is now officially SOC II certified.
— Dify.AI (@dify_ai) 2024年10月14日
We are consistent compliant with security and data safety from Day 1, and now we are excited to announce Dify is AICPA SOC II Certified. You can now build your own App on Dify assuring confidentiality and privacy fine-grain handled by… pic.twitter.com/OPIrJUGb1y
1.3. 開発できるアプリの種類
Difyでは、下記の4つのタイプのアプリを開発することができます。
- チャットボット:ユーザーとチャット形式で対話や情報提供ができるアプリ。シンプルな質問応答や情報提供に適しており、複数ラウンドの会話や同一セッション内でのコンテクストを踏まえた回答も可能です。
- テキストジェネレーター:プロンプトに基づいてストーリー作成や翻訳、要約など、テキストを自動で生成するアプリ。クリエイティブな文章生成やコンテンツ制作に利用されます。
- エージェント:プロンプトに基づき、ユーザーの意図に合わせて柔軟で動的な対応ができるアプリ。外部ツールやデータベースとの連携も可能で、ユーザーからの複雑な依頼や質問に対し、段階的に質問を深めて分析するような対応も行えます。
- ワークフロー(β版):決まった手順に従って自動で処理を進めるアプリ。複数のステップにまたがるタスクや、定期的に実行するルーティンタスクの自動化に適しています。現時点ではβ版として提供されています。
アプリの使い分けを補足します。
まず、FAQ対応や簡単な問い合わせ等のシンプルな会話や情報提供には「チャットボット」が適しています。
また、外部サービスとの連携が必要な場合や、複数の質問を通して分析を深めたい場合には「エージェント」が便利です。例えば、レストラン検索やカスタマーサポートでの複雑な対応に役立ちます。
そして、複数のステップにまたがるタスクの自動化や定期的な処理には「ワークフロー」が最適です。業務プロセスの自動化や定期リマインダーの送信などに利用できます。
ちなみに、各アプリの例はDifyにログイン後、「探索」画面にあるテンプレートで閲覧することができるので参考にしてみてください。
1.4. 料金
Difyで生成AIを使ったアプリを開発・運用するには、Difyの使用料金と、連携する生成AIの使用料金がかかります。
Difyの料金アプリにはSANDBOX、PROFESSIONAL、TEAM、ENTERPRISEの4プランがあり、無料のSANDBOXでもOpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicateのモデルを使用するアプリを開発でき、200メッセージまでなら無料でOpenAIモデル(GPT-4以外)を使用することができます。
生成AIの使用料金はモデルによって異なるので、ご利用のモデルの開発者ダッシュボード等をご確認ください。
2. Dify使い方
それではDifyの登録から生成AIアプリ開発の手順を紹介していきます。
2.1. 登録
まずは、Difyのアカウント登録をします。下記のDifyトップページを開き、「Get started」をクリックします。
登録できたら、Difyのスタジオ画面が表示されます。これで登録完了です。
2.2. ログイン後画面(探索・スタジオ・ナレッジ・ツール)
それでは、Difyログイン後の主要5画面でできることをそれぞれ紹介していきます。
2.2.1. 探索
テンプレート画面では、テンプレートとして公開されているDifyアプリが表示されます。ここで選んだテンプレートを元にアプリを開発することができます。
テンプレートにはAgent、Workflow、人事、プログラミング、執筆、アシスタントの6カテゴリがあり、各テンプレートの「ワークスペースに追加」をクリックしてアプリを開発することができます。
2.2.2. スタジオ
スタジオ画面からアプリの開発を始めます。アプリを新規作成したり、作成済みアプリが表示されます。
また、アプリにはタグをつけて探しやすくすることができます。
2.2.3. ナレッジ
ナレッジ画面では、チャットボットのAIが回答を生成するために利用する独自データを登録できます。RAG技術により、登録されたデータをもとに情報を検索し、適切な回答を生成してチャットで返すことができます。
現時点でナレッジにアップロードできるデータ形式はテキストファイル、Notion、ウェブサイトとなっています。これで自社の製品説明資料等をナレッジとして登録することもできます。
2.2.4. ツール
ツール画面では、開発するアプリの機能を拡張するためのツールを追加・設定することができます。
DifyではファーストパーティーツールとカスタムAPIツールが利用でき、Google検索、Wikipedia、Slack、Stability等の主要なファーストパーティーとは簡単に連携できるようになっています。ファーストパーティーツールにない外部サービスとも、カスタムAPIツールを利用すれば連携することが可能です。
ここで設定したツールはエージェントやワークフロータイプのアプリと連携することができます。
2.2.5. 設定>モデルプロバイダー
モデルプロバイダー画面は、メニュー>設定から開ける画面で、アプリで使用する生成AIのAPI Keyなどの設定を行います。ここで設定したAIモデルをアプリで使用できるようになり、デフォルトモデルを設定することもできます。
入力項目はモデルごとに設定されており、必要な情報を各モデルの開発者画面等から取得してここに入力します。
また、右上の「システムモデル設定」をクリックして、推論、埋め込みなどの各モデルのデフォルトモデルの設定もできます。
2.3. 開発手順
それでは、早速Difyでアプリを開発してみましょう!今回は、友達のように映画や本の話ができるチャットアプリを開発していきます!
2.3.1. 事前準備
まずはアプリ開発に入る前に完了しておきたい手順をご紹介します。
2.3.1.1. モデルの追加
Difyで開発するアプリで使用できるモデルを追加する手順をご紹介します。DifyではデフォルトモデルがGPTになっているので、他のモデルをアプリで使用したい場合は設定しておきましょう。
ログイン後の開発画面右上のメニュー>設定を開いてモデルプロバイダーを確認します。今回は、一定基準まで無料で使用できるCohereのCommand Rを追加します。「モデルプロバイダを追加」からCohereを見つけ、Cohereの「セットアップ」をクリックします。
設定ウィンドウの「API key」に、Cohere dashboardで発行したAPI keyを入力して「保存」をクリックします。
設定ウィンドウが閉じて、上部の「モデル」欄にCohereが追加されAPI keyが緑色になっていたらセットアップ完了です。
「システムモデル設定」でも、Cohereが選択できるようになっています。
2.3.2. アプリ作成
まずは新規アプリを作成します。「スタジオ」画面の「最初から作成」をクリックします。
次に、アプリの基本情報を設定する「最初から作成」ウィンドウが表示されます。ここでは先ほど説明したアプリのタイプを選択することができます。今回は下記の設定を選択して「作成する」をクリックします。
- どのタイプのアプリを作成しますか?:チャットボット
- チャットボットのオーケストレーション方法:基本
- アプリのアイコンと名前:
ちゃっとも
- 説明:
ちゃっともアプリです。
2.3.3. 概要設定
次に、アプリの概要設定画面に移ります。この画面では、オーケストレートとデバッグとプレビュー、アプリの公開を行います。
2.3.3.1. オーケストレート
まず、「オーケストレーション」画面が表示されます。ここでは、チャットボットの応答の方針やチャットから抽出する変数などの設定、デバッグを行います。
下記はデフォルトで設定が必須になっている項目です。
No. | 項目 | 内容 |
---|---|---|
1 | 手順 | AIがどのように応答を生成するかを指示するプロンプト(命令)を入力します。ここで設定した手順に従って、AIはユーザーの入力に応じた会話内容を生成します。 |
2 | 変数 | ユーザーからの入力データを保存し、プロンプト内で使えるようにする項目です。ユーザーが入力した値を変数として保存し、プロンプト内で活用することができます。 |
3 | コンテキスト | AIが利用できる知識ベースや背景情報を「ナレッジ」から設定することで、特定の文脈に沿った回答が可能になります。例えば、製品情報やFAQデータなどを設定し、AIがそれらの情報をもとに回答を生成できるようにします。 |
上記の他に設定できる項目は画面右下の「管理」をクリックして表示されるポップアップから選択できます。
今回は、デフォルトで有効にされている「引用と帰属」のみを有効にしておきます。
上記の項目を自動補助機能を使って設定していきます。「手順」欄の右上にある「自動」をクリックします。
「プロンプト生成器」のポップアップが表示されます。ここでは、チャットボットの目的や使用方法を入力すると、手順や変数を生成してくれます。今回は、下記の内容を入力して「生成」をクリックしてみます。
- 指示…
このチャットボットアプリでは、友達のようなトーンで映画や本の話ができます。友達関係は学生時代から続いている深い関係とします。このチャットボットはホラーやアクションの映画や本が特に好きという設定とします。
生成すると、下記のような内容が表示されました。入力された指示から「手順」、「変数」、「チャットの強化」が生成されています。
ちなみに「手順」の全体は下記の内容になっていました。
xml <instruction> <instructions> 1. このチャットボットアプリでは、友達のようなトーンで映画や本の話ができます。 2. 友達関係は学生時代から続いている深い関係とします。 3. このチャットボットはホラーやアクションの映画や本が特に好きという設定とします。 4. 入力された情報をもとに、友達のようなトーンで映画や本に関する会話を生成してください。 5. 出力にはXMLタグを含めないでください。 <example> Input: - {{friend_name}}: "Sara" - {{relationship_length}}: "10 years" - {{favorite_genre}}: "horror" Output: - Conversation generated in a friendly tone discussing horror movies and books with Sara, a friend of 10 years. </example> </instructions> </instruction>
また、「チャットの強化」の内容は下記の通りでした。
この内容で右下の「適用」をクリックすると、プロンプト生成器のポップアップが閉じ、内容がオーケストレーション画面の各項目に上書きされます。
詳細を確認していきます。まず、今回は応答者の名前は不要で、友人関係が続いている期間もアプリ全体に対して設定したいので、「手順」と「変数」からfriend_name
とrelationship_length
を削除します。
修正後、「デバッグとプレビュー」欄にfriend_name
とrelationship_length
が表示されなくなったら修正完了です。
また、favorite_genre
の「オプション」を有効にしておきます。そうすることで、チャットの途中でAIがユーザーの好きそうなジャンルを会話から推測して変数として保存してくれるようになります。
また、今回はコンテクストは設定しませんが、「追加」をクリックしてナレッジベースに登録されているナレッジを追加することも可能です。
2.3.3.2. デバッグとプレビュー
それでは、ここまで設定した内容を確認してみます。画面右側の「デバッグとプレビュー」でチャットのプレビューができるので、やり取りをしてみます。
このように、ホラー映画が好きな友人っぽく会話ができましたね。
画面左側に設定部、右側にデバッグ・プレビュー部があるオーケストレート画面はChatGPTのGPT作成画面に似ているので使いやすい方も多いのではないでしょうか。
2.3.3.3. モデルの設定
画面右上の現在のAIモデルが表示されているボタンをクリックすると、モデルのパラメータの設定やモデル自体の変更が行えます。
2.3.3.4. 公開
この内容で良ければ、画面右上の「公開する」をクリックして表示されたポップアップで「更新」をクリックします。
ポップアップの「アプリを実行」をクリックすると、新しいタブで作成したアプリを表示します。ここでURLを確認することができます。
これでアプリの公開までの手順は一通り完了です。URLを共有することでアプリを共有できます。
また、「公開する」ボタンタップ時に表示されたポップアップから分かるように、Webアプリとして公開する他にWebサイトに埋め込むことも可能です。
2.4. その他の機能
ここまでで紹介しきれなかったDifyの機能をご紹介します。
2.4.1. スタジオ>アプリの概要設定画面
アプリの概要設定画面は、アプリを作成して公開した後も、スタジオのアプリ一覧でアプリをクリックして開くことができます。作成時には必須ではない画面の使い方を紹介します。
2.4.1.1. APIアクセス
アプリの概要設定画面の左側のナビゲーション「APIアクセス」をクリックすると、このアプリと外部システムがAPIを通じてやりとりするための設定や使い方の確認ができるAPIアクセス画面を表示します。
APIリクエストに必要なAPIキーは、画面右上の「APIキー」から作成できます。
また、Send Chat MessageやFile Upload、Stop GenerateなどのAPIエンドポイントとそのパラメータを確認できます。
2.4.1.2. ログ&アナウンス
ナビゲーションメニューで「ログ&アナウンス」をクリックすると、アプリの実行履歴やユーザーの対話内容を詳細に確認できるログ&アナウンス画面を表示します。
アプリのチャット履歴が一覧で表示されており、各レコードをクリックするとチャットごとにメッセージの一つ一つをチャット形式で確認することができます。ここでは基本的にアプリで実行された全ての記録を確認することができます。チャットの履歴についても全てのユーザーのチャット内容を確認できます。
履歴では、メッセージにホバーして、送信日時やプロンプトログ、消費トークン等を確認できます。
ここで確認できるログの期間については明確にされてはいませんが、現状全ての期間のログを振り返ることが可能なようです。
2.4.1.3. 監視
ナビゲーションメニューで「監視」をクリックすると、パフォーマンスや使用状況をリアルタイムで監視・分析するためのダッシュボードである監視画面を表示します。
この画面では、下記の内容を確認することができます。
- 基本情報:アプリのURLやAPIエンドポイント
- 使用状況:総合会話数、アクティブユーザー数、平均セッションインタラクション数、トークン出力速度、ユーザー満足度率、トークン使用量、トータルメッセージ数
面白いのは「ユーザー満足度率」で、チャットでAIから送信されたメッセージに対するいいねの数を確認することができます。
ユーザー満足度率は1,000件のメッセージ当たりのいいねの数で、上記のグラフではメッセージ1,000件に対して250のいいねがついた、ということを示しています。
また、監視画面右上の「アプリのパフォーマンスの追跡」をクリックすると、外部のLLMアプリ開発・監視プラットフォームと連携することができます。現在連携できるサービスはLangSmithとLangFuseです。
2.5. GPTsとの使い分け
簡単にオリジナルのチャットボットを作る方法として、OpenAIのChatGPTの有料機能であるGPTsを活用する方法がまず思い浮かびます。DifyとGPTsそれぞれに向いているシーンや活用方法は下記の通りです。
- Dify:Difyでは多様なAIモデルや外部サービスとの連携、またコンテクストを柔軟に設定することが可能です。また、自身の環境でホスティングすることも可能なため、複雑なアプリケーションや外部連携が必要なプロジェクト、特定の元データに基づいたチャットをできるようにしたい、またセルフホストで運用したい場合に適しています。
- GPTs:GPTsは、設定画面でプロンプトを設定するだけで柔軟に出力内容を変更することが可能です。ただし、使用できるモデルはOpenAIモデル限定で、限られた外部サービスのみとしか連携できないため、手軽にパーソナライズAIを使用したい場合や、個人用のチャットアプリを開発したい場合に適しています。
なお、どちらも会話の内容がAIの学習データとして再利用されることはありません。
3. まとめ
Difyは、生成AIを活用したWebアプリの開発に特化したノーコードプラットフォームです。特に外部サービスとの連携、データ活用、ナレッジ管理を簡単に設定できる点が大きな強みでした。さらに、セルフホストが可能なオープンソースのプラットフォームであるため、クライアントのセキュリティやデータ保護の要件に応じた運用も可能です。
DifyとGPTsを比較すると、GPTsは簡単にパーソナライズしたチャットボットを作成できるサービスとして特に個人利用やシンプルなカスタマイズに適していることが分かりました。
生成AIアプリの開発をご検討中の方はぜひDifyを候補に入れてみてください!