爆速で簡単に生成AIアプリを開発できるノーコードツール「Dify」とは?!使い方や特徴、商用利用を徹底解説!
WEELメディア事業部LLMライターのゆうやです。
Difyは、米LangGenius, Inc.が提供している大規模言語モデル(LLM)を使ったアプリケーションの開発と運用を簡素化するためのオープンソースプラットフォームです。
RAGを使用したチャットボットやAIエージェント、ドラッグ&ドロップインターフェースを使用したAIワークフローをノーコードで構築できます。
Difyは、LangChainと同じような機能を備えていますが、こちらはより簡単に機能を実装できます。実際、Difyの公式ページにも「LangChainよりも本番環境に適しています」との記載があります。
今回は、Githubで3万以上のスターを獲得するほど大注目を集めているDifyの概要と使ってみた感想をお伝えします。
是非最後までご覧ください!
Difyの概要
前述でも触れた通り、Difyは大規模言語モデル(LLM)を使ったアプリケーションの開発と運用を簡素化するためのオープンソースプラットフォームです。運営会社は、2023年に設立された米国のAIテクノロジー企業であるLangGenius, Inc.という比較的新しい企業が運営しています。
このプラットフォームの大きな特徴は、RAGを使用したチャットボットやAIエージェント、ドラッグ&ドロップインターフェースを使用したAIワークフローをノーコードで構築できることです。
本来、LLMを使ったアプリケーション開発や運用を行う際には、AIに関する専門知識やプログラミング技術が必要となる場合がありますが、Dufyを活用すれば難しいコーディング作業が必要なく、視覚的にプログラムを構築することができます。
また、日本語にも対応しており、誰でも簡単に利用できるオープンプラットフォームといえるでしょう。
なお、LLMをカスタマイズできるLangchainについて知りたい方はこちらの記事をご覧ください。
Difyの特徴
Githubで3万以上のスターを獲得するほど大注目を集めているDifyは、どのような特徴を持っているのでしょうか。まずは、Difyの特徴についてご紹介します。
オープンソースモデル
まず、大きな特徴としてあげられる点としては、オープンソースモデルなので無料で利用できるという手軽さでしょう。Difyの運営会社はLangGenius, Inc.という新しい企業ですが、米国の法律とデータポリシーを順守し、グローバルに多様なチームを持っており実態もしっかりしています。
上記のように運営元も明らかですし、利用規約もしっかりと明記されていることから、利用規約をしっかり守ることでオープンソースモデルであっても安心して利用することができます。
そのため、業務や個人的な目的であっても導入が容易なので、気になっている方は一度利用してみることをおすすめします。
直感的な操作が可能
ノーコード開発ツールは、生成AIが普及してから数多くリリースされました。しかし、コーディング作業は不要だったとしても、使いづらいUIだったり、多少専門知識がないと使えないというケースも少なくありません。
しかし、Difyに関しては誰でも使いやすいようにUIが工夫されていたり、ブロックを視覚的に繋ぐことでアプリケーションを構築できるので、専門知識がなくても複雑な処理を行えるAIアプリケーションを構築できます。
もちろん、初めから上手く動作するAIアプリケーションを構築できるとは限りませんが、処理される工程も視覚的に読み取ることができるので、出力結果を見ながら修正を行う際も、他のノーコード開発ツールと比べても容易な場合が多いでしょう。
様々なツールに対応したテンプレートを用意
Difyは直感的に利用できる使いやすさだけではなく、機能面も非常に充実しており、GPT-4oやGemini、Llamaなどクローズド、オープンソース問わず数百のLLMをサポートしています。
さらに、それぞれのLLMに対応したテンプレートも用意されているため、テンプレートをベースにチューニングを行えば、ゼロから構築するよりも簡単に好みのAIアプリケーションを作ることができます。
また、テンプレートに沿ってチューニングを行うことで、「何から始めていいかわからない」や「ゼロから構築するのは大変」、「どのような順番で構築すればいいかわからない」といった専門知識がない人が躓きやすい問題も解消できます。
このように機能面でも充実している点もDifyが人気であることの理由の一つでしょう。
Difyの料金体系
Difyには、以下の「SANDBOX」「PROFESSIONAL」「TEAM」「ENTERPRISE」の4つのプランがあります。
利用料金 | モデルプロバイダー | メッセージクレジット | 構築できるアプリ数 | メッセージリクエスト | |
---|---|---|---|---|---|
SANDBOX | 無料 | OpenAI/Anthropic/Llama2/AzureOpenAI/Hugging Face/Replicate | 200 メッセージ/月 | 10 | 1日あたり500件 |
PROFESSIONAL | $59/月 or $590/年 | OpenAI/Anthropic/Llama2/AzureOpenAI/Hugging Face/Replicate | 5,000 メッセージ/月 | 50 | 無制限 |
TEAM | $159/月 or $1590/年 | OpenAI/Anthropic/Llama2/AzureOpenAI/Hugging Face/Replicate | 10,000 メッセージ/月 | 無制限 | 無制限 |
ENTERPRISE | 問い合わせ | OpenAI/Anthropic/Llama2/AzureOpenAI/Hugging Face/Replicate | 無制限 | 無制限 | 無制限 |
無料プランでも一通りの機能は使用することができ、リクエスト数やストレージ容量などに制限がある程度です。
そのため、まず機能を試してみたい方は無料プランで十分だと思います。
本格的にアプリ開発をしたい方や、チームで使用したい場合などはそれに応じた有料プランを選択することをおすすめします。
Difyの商用利用
冒頭でも説明している通り、Difyはオープンソースプラットフォームのため、基本的には商用利用が可能です。
しかし、下記のような場合は商用利用が制限されるケースがあるため注意が必要です。
- マルチテナントSaaSサービスの提供
- ロゴや著作権情報の削除・変更
上記に当てはまる場合は、Difyのビジネスチームに問い合わせをして商用ライセンスを取得する必要があります。
Difyの使い方
Difyは、クラウドで利用する方法と、Dockerを利用してローカルで実装する方法の2種類あります。
それぞれの方法を紹介します。
クラウドで利用する方法
まず、以下のDify公式ページにアクセスします。
アクセス後、「始める」をクリックします。
すると、このようにログインが求められるので任意の方法でログインします。
ログインに成功すると、以下のようにDifyが使えるようになります。
クラウドで利用する場合は、ログインするだけで利用できるので非常に簡単です。
ローカルに実装する方法
ローカルに実装する場合は、Dockerが必要になります。
以下のリンクからDocker Desktopをあらかじめダウンロードしてインストールしておいてください。
まず、コマンドプロンプトで以下のコマンドを実行し、DifyのGithubリポジトリをクローンします。
git clone https://github.com/langgenius/dify.git
次に、Difyフォルダの中にあるDockerディレクトリに移動します。
cd Dify/docker
ここで以下のコマンドを実行します。
この際、Docker Desktopを起動している必要があります。
docker compose up -d
すると、このように環境の構築が始まるので、完了したら以下にアクセスして初期設定を行います。
初期設定では管理者アカウントの設定が求められますので、設定してください。
設定したアカウントでログインが求められますので、ログインすると以下のリンクからDifyを使用できるようになります。
これでDifyをローカルで使用できるようになりました。
ここからは、実際にチャットボットやAIワークフローを作成していきますが、その前に作成するアプリで使用する言語モデルのプロバイダーの設定が必要です。
設定は、右上の「設定」の中にある「モデルプロバイダー」で行います。
今回はOpenAIのモデルを使用したいので、OpenAIをセットアップします。
OpenAIにカーソルを合わせると、セットアップというボタンが出てくるのでクリックすると、API Keyの設定画面になります。
OrganizationとAPI Baseは空白でも問題ありません。
API Keyを入力して保存し、アクティブな状態になるとこのようにAPI-KEYの右側に緑のマークが表示されます。
これで設定は完了です。
早速アプリを作っていきましょう!
DifyでチャットボットとAIワークフローを作ってみた
それでは早速DifyでチャットボットとAiワークフローを作ってみましょう!
まずはチャットボットから作成します。
チャットボット
Difyでアプリを作成する際は、「最初から作成」か「テンプレートから作成」の2種類の方法を選択できます。
今回は「最初から作成」を選択して、簡単なチャットボットを作成します。
チャットボットを作成する際は、オーケストレーション方法を選択でき、簡単に設定できる初心者向けの「基本」と複雑で詳細な設定ができる上級者向けの「Chatflow」が用意されています。
今回は「基本」オーケストレーションを使用します。
チャットボットのアイコンと名前、説明を設定し作成をクリックすると、以下のような画面になります。
基本的な機能や使い方はGPTsに非常に似ていて、左側の手順の部分にシステムプロンプトを入力し、さらに変数やコンテキストを設定できます。
また、Difyが自動でチャットボットの設定を行ってくれる機能もあり、ターゲットや期待する能力等を入力するだけでそれに合わせたものを作成してくれます。
試しに、ターゲットをエンジニアに、「どのような問題をAIが解決できると期待していますか?」にコーディングと設定して、生成させてみます。
すると、このようにシステムプロンプトや変数を自動的に設定してくれます。
システムプロンプト
Your task is to write a code snippet in {{programming_language}} that accomplishes the following task: {{task_description}}.
You MUST ensure that your code is efficient, readable, and well-commented. Think step by step and break down the problem into smaller, manageable parts.
Ensure that your answer is unbiased and does not rely on stereotypes. Remember, you are an AI engineer assistant, and your role is to help engineers solve their coding problems.
エンジニアという設定が勝手にAIエンジニアなっている点が気になりますが、このまま使えそうなほどよくできた設定をしてくれています。
また、音声入力や引用の表示など、様々な機能を追加することができます。
では、現在の設定で以下のプロンプトを入力してみましょう。
I need to create hundreds of scripts, can I automate this in Python, etc.?
結果はこのようになりました。
結果はこちら
Yes, you can automate this process using Python. Here, I am providing a generic way to create multiple files using Python. I am using the os module of Python which provides functions for interacting with the operating system.
Please replace the placeholder_script_content variable with the content you want in your scripts.
This example creates python scripts (.py), but you can create scripts with any extension as needed.
import os
# Define the number of scripts you want to create
num_of_scripts = 300
# Define script content
placeholder_script_content = """
#!/usr/bin/env python3
def main():
print('Hello, this script is autogenerated.')
if __name__ == '__main__':
main()
"""
# Your directory where you want to place the scripts
directory = "/path/to/your/directory"
# Make sure the directory exists, if not, create it
if not os.path.exists(directory):
os.makedirs(directory)
# Loop through the range equal to the number of scripts you want to create
for i in range(num_of_scripts):
# Create full file path
file_path = os.path.join(directory, f'script_{i+1}.py')
# Create and open the file for writing
with open(file_path, 'w') as script_file:
script_file.write(placeholder_script_content)
print(f'Created {num_of_scripts} scripts.')
In this code:
We first define the total number of scripts we want to create (in this case 300).
We define a placeholder script content that will be written to each script file. Replace this with the script content you need.
We specify the directory where we want the scripts to be placed.
The script checks if the directory you defined exists, if not, it creates it.
Next, we start a loop to create the files. We create each file in the directory with a unique name (incrementing each filename by 1) and write the placeholder script content to it.
After all files are created, a message will be printed indicating the number of scripts created.
Remember, you should replace the paths, filenames and script contents with those suitable for your problem.
はい、Python を使用してこのプロセスを自動化することができます。ここでは、Python を使用して複数のファイルを作成するための一般的な方法を紹介します。Python の os モジュールを使用しています。このモジュールは、オペレーティングシステムとやり取りするための機能を提供します。
placeholder_script_content 変数を、スクリプトで使用する内容に置き換えてください。
この例では、Python スクリプト(.py)を作成していますが、必要に応じて任意の拡張子でスクリプトを作成することができます。
import os
# Define the number of scripts you want to create
num_of_scripts = 300
# Define script content
placeholder_script_content = """
#!/usr/bin/env python3
def main():
print('Hello, this script is autogenerated.')
if __name__ == '__main__':
main()
"""
# Your directory where you want to place the scripts
directory = "/path/to/your/directory"
# Make sure the directory exists, if not, create it
if not os.path.exists(directory):
os.makedirs(directory)
# Loop through the range equal to the number of scripts you want to create
for i in range(num_of_scripts):
# Create full file path
file_path = os.path.join(directory, f'script_{i+1}.py')
# Create and open the file for writing
with open(file_path, 'w') as script_file:
script_file.write(placeholder_script_content)
print(f'Created {num_of_scripts} scripts.')
このコードでは、
まず、作成するスクリプトの総数を定義します(この例では 300)。
各スクリプトファイルに書き込まれるプレースホルダーのスクリプトコンテンツを定義します。必要なスクリプトコンテンツに置き換えてください。
スクリプトを配置するディレクトリを指定します。
スクリプトは、指定したディレクトリが存在するか確認し、存在しない場合は作成します。
次に、ファイルを作成するためのループを開始します。ディレクトリ内に、一意の名前(ファイル名を1ずつ増やしながら)で各ファイルを作成し、プレースホルダーのスクリプトコンテンツをそこに書き込みます。
すべてのファイルが作成されると、作成されたスクリプトの数が表示されます。
パス、ファイル名、スクリプトの内容については、問題に応じて適切なものに置き換える必要があります。
非常に抽象的なタスクの説明でも、かなり詳細かつ分かりやすく回答を出力してくれました。
モデルはGPT-4を使用しているので、回答の正確性は全く問題ありませんね。
このようにDifyでは、非常に簡単にチャットボットを作成できます。
次に、AIワークフローも作成してみます。
AIワークフロー
AIワークフローについても、「最初から作成」か「テンプレートから作成」の2種類の方法を選択できます。
今回は、「最初から作成」を選択します。
ワークフローを選択して、名前等の設定をして作成します。
作成をクリックすると、このような画面になります。
この画面で右クリックして、「ブロックを追加」から目的に応じたブロックを追加できます。
今回は、Eメールの要約か、返信を行うワークフローを作成しました。
このワークフローでは、質問分類器でユーザの目的を分類した後、LLMで目的に合わせた回答を生成します。
実際に実行してみましょう。
以下のサンプルEメールを入力とします。
件名: 次回のプロジェクト進捗ミーティングについて
田中様、
お世話になっております。Lambレストランの山田です。
次回のプロジェクト進捗ミーティングについてご連絡いたします。7月10日(水曜日)15時から、オンラインで開催予定です。以下の内容を議題として予定しております:
前回のミーティングのフォローアップ
現在のプロジェクトの進捗報告
新たな課題と解決策の検討
その他
ミーティングのリンクは後日お送りいたしますので、参加のご準備をお願いいたします。
何かご質問やご要望がございましたら、お気軽にご連絡ください。
どうぞよろしくお願いいたします。
山田太郎
店長
Lambレストラン
yamada@example.com
03-1234-5678
まずは要約から。
開始すると、選択した目的に応じでワークフローが実行されていきます。
最終的な出力はこのようになりました。
件名: 次回のプロジェクト進捗ミーティングについて
田中様、
Lambレストランの山田です。次回のプロジェクト進捗ミーティングは7月10日(水)15時からオンラインで開催予定です。議題は以下の通りです:
1. 前回のミーティングのフォローアップ
2. 現在のプロジェクトの進捗報告
3. 新たな課題と解決策の検討
4. その他
ミーティングリンクは後日送付予定です。ご質問やご要望がありましたらご連絡ください。
よろしくお願いいたします。
山田太郎
店長
Lambレストラン
こちらもモデルにGPT-4oを使用しているので、正確性は申し分ないです。
次に返信を作成させます。
結果はこのようになりました。
件名: Re: 次回のプロジェクト進捗ミーティングについて
山田様、
お世話になっております。田中です。
次回のプロジェクト進捗ミーティングについてご連絡いただき、ありがとうございます。7月10日(水曜日)15時からですね。予定を調整して参加いたします。
議題についても確認しました。ミーティングのリンクをお待ちしております。
ご連絡いただき、ありがとうございました。引き続きよろしくお願いいたします。
田中
こちらも目的に応じたワークフローが実行され、そのまま使えそうな返信メールを作成してくれました。
このように、AIワークフローでは視覚的に自分がやりたいことを作成できるので、非常に便利な機能だと思います。
さらに、ツール等を組み込めばGoogle検索や画像生成等もできるようになるので、より高度で複雑なワークフローの構築も可能です。
気になった方は是非試してみてください!
Difyの活用事例
ここまでで、Difyの概要や特徴、使い方について解説してきましたが、Difyはなにができるの? と疑問に思う方もいるでしょう。そんな方に向けて、最後にDifyの活用事例について解説します。
①マニュアルの作成・共有
コンテンツの要約や翻訳、アイデアのブレーンストーミングなど幅広い領域で活躍するNotion AIを利用している方は多いのではないでしょうか。実は、そんな便利なNotion AIとDifyを連携することで、さらに業務を効率化することができます。
例えば、ご紹介したXの投稿にあるように、Difyでgithubのマニュアルを出力した後に「notionへ」とプロンプトを入力するだけで自動でNotion側に出力され、そのままNotion側で内容を編集することができます。
また、Notionは他ユーザーと共有が簡単にできるため、社内でNotionを利用している企業であれば簡単にマニュアルの共有をすることができるでしょう。
②長文の記事作成
記事を自力で書き上げる際には、文章をまとめる能力や念入りな下調べなどが必要なため、書き上げるまでに労力と時間がかかってしまいます。しかし、取り上げたXの投稿のように、Difyを活用すれば1万文字程度の記事も簡単に生成することができます。
Difyで記事をつくる際には、フローの設定やDSLと呼ばれる特定の問題領域やビジネスドメインに特化した言語を設定する必要がありますが、その作業さえ覚えてしまえば簡単に1万文字程度の記事を量産することができます。
また、作風や著者情報など記事に追加して欲しい項目も指定していくことで、他とは違うオリジナルの記事を生成することもできるでしょう。
③旅行会社での活用
海外ツアーやホテルを簡単に予約できるアプリ「NEWT」を運営する株式会社令和トラベルでは業務でDifyを活用しています。
例えば、自社サイトであるNEWT内に掲載されている旅行ガイド記事の制作にDifyが活用されており、実績として2ヶ月程度で、400記事以上の旅行記事を作成。人の力だけでは難しかった記事制作をAIがサポートすることで、多様性豊かな記事を数多く生み出すことができ、今では192か国をカバーする記事を作成できるようになりました。
記事数や数多くの国に対応した旅行ガイドを掲載できるようになったため、NEWTへの流入を増やすことができるようになり、記事表示回数も90%上昇させた実績があります。※1
なお、ノーコード開発について知りたい方はこちらの記事をご覧ください。
この記事では、この組み合わせのメリットとおすすめツールを紹介しています。
最後まで読むと、業務効率化のための具体的な手段がわかります。
続きを読む
Difyで手軽にAIアプリケーションを構築しよう!
Difyは、大規模言語モデル(LLM)を使ったアプリケーションの開発と運用を簡素化するためのオープンソースプラットフォームです。
このプラットフォームは、RAGを使用したチャットボットやAIエージェント、ドラッグ&ドロップインターフェースを使用したAIワークフローをノーコードで構築できます。
また、OpenAIやGoogleの最新モデルを使用できたり、Google Search、DELL·E、Stable Diffusionなどとの連携も可能であり、多種多様なAIアプリケーションを作成できます。
複数の料金プランが用意されており、用途に合わせて柔軟に選択可能なほか、無料プランでも基本的な機能はほぼすべて利用可能です。
皆さんもこの記事を参考にして、Difyでアプリケーションを構築してみてください!
生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
最後に
いかがだったでしょうか?
弊社では
・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
・ハルシネーション対策AIツールの開発
・自社専用のAIチャットボットの開発
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。