初心者必見!Difyの「ブロック」全17+2種の機能・使い方を一挙紹介!
「Dify」はプログラミング不要で業務レベルの生成AIアプリを開発できるプラットフォーム。すでにリコーやサイバーエージェント等の国内有名企業でも活用されている、今話題の生成AI系ソリューションになります。
そんなDifyでは、5種類のアプリ作成用ひな形が用意されており、そのうちワークフローとチャットフローでは複雑な処理を行うアプリも作成可能です。
「ブロック」はこのワークフロー / チャットフローを構成する処理単位で、順番に繋いだり分岐させたりといったことができます。
今回はそんなワークフロー / チャットフローのブロックを徹底解説。基本のブロック17+2種の機能と設定方法をご紹介します。
本noteは「Dify初心者」の方に広くおすすめです。完読いただくと、以下のことがわかるようになるでしょう!
1️⃣ Difyのブロック全17+2種の概要
ワークフロー / チャットフローに標準で備わっているブロックの機能・使い方を解説します。
2️⃣ Difyのブロックの使用例
質問分類器やテンプレート等、機能がわかりにくいブロックの使用例をお見せします。
3️⃣ Difyのブロックに関連する用語の違い
ワークフローとチャットフローやIF / ELSEと質問分類器等、類似用語の違いをFAQ形式で解説します。
📌 Noteをご覧になっている方へ
WEELでは、生成AIを業務や事業に取り入れたい方向けの各種セミナーを開催しています。
「どんな活用ができるのか知りたい」「自社でどう始めればいい?」という方に向けて、現場視点のノウハウや最新事例をご紹介しています。
✅ セミナーに参加する
Difyの「ブロック」とは?
ノーコードで生成AI搭載のアプリを構築できるプラットフォーム「Dify」では、アプリ作成用のひな形「アプリタイプ」が5種類用意されています。
そのうちの2種、ワークフロー / チャットフローでは、入出力 / LLM回答 / 条件分岐…etc.の機能をもった単位「ブロック」を処理の順に連結させて視覚的にアプリを構築可能です。
このブロックはDify活用の要で、機能を理解して使いこなせれば、業務レベルの高度なアプリの構築も夢じゃありません!生成AIアプリの内製化を目指している方にとっては必修の要素です。
Difyが日本語のテンプレをリリース!Difyは構築代行を頼むよりも、社内担当者がゴリゴリミニアプリを作るのに最適。ミニアプリを大量生産し、社内のAI推進をぐっと進めている企業も多いです。めちゃくちゃ嬉しいアップデートですね。 https://t.co/I5bTJgWGO7
— 田村 WEEL代表取締役 | 生成AI×新規サービス開発 (@tamtam_weel) November 20, 2024
なお、Difyの各アプリタイプについて詳しく知りたい方は、下記の記事も併せてご確認ください。
Difyで使えるブロック17+2種類を一挙紹介!
ここからは、Difyのワークフロー / チャットフローで使えるブロック全17種類(+トリガー2種類)をご紹介していきます。
ユーザー入力
Difyの「ユーザー入力」は、ワークフロー / チャットフローのスタート地点にあたるブロックで、アプリが受け付ける入力の形式を定義できます。
このユーザー入力の設定項目については、チャットフロー・ワークフローともに共通。まず、ワークフローでのユーザー入力の設定パネルは以下のとおりです。

続いて、チャットフローについては以下のようになります。

ともに、入力フィールド欄の右にある「+」をクリックして、アプリが受け付ける入力を下記に沿って定義できます。



なお、後述するワークフロー専用のトリガー系ブロック(スケジュールトリガーやWebhookトリガー)は、ユーザー入力と共存不可。
ユーザー入力がすでにアプリ中に存在する場合は、トリガー系ブロックを選べない仕様となっています。

スタート地点のブロックをトリガー系のものに変えたい場合は、一度ユーザー入力を削除すればOKです。

LLM
「LLM」はDifyの核となる機能で、LLM(大規模言語モデル / テキスト生成AI)を使った処理ができるブロックです。
こちらではあらかじめDify内にインストールしたモデルプロバイダーのLLMを自由に選択して、テキスト・画像・ドキュメントの入力に回答させられます。
そんなLLMブロックのワークフローにおける設定パネルは以下のとおりです。

LLMブロックの設定パネルのうち、AIモデル欄からは以下の詳細設定パネルが展開できます。こちらでは採用するモデルのほか、Temperature(創造性)や出力の長さといった設定が可能です。

採用するモデルを変えたい場合は以下のとおり、AIモデル欄→モデル欄→任意のモデルの順でクリックします。

また、コンテキスト欄では、前段階のブロックで得られた出力変数(知識検索やWeb検索の結果等)を設定してLLMの回答に反映できます。こちらに知識検索の出力変数を設定することで、回答に引用元を表示可能です。

そして、続くプロンプト欄ではLLMの大まかな役割を決めるシステムプロンプト(SYSTEM)やLLMの実際の処理を決めるユーザープロンプト(USER)を入力可。
テキストのほか、前ブロックの出力変数やコンテキストを含めてプロンプトを定義できます。

うち、ユーザープロンプト(USER)については入力が必須で、未記入の場合はアプリ実行時にエラーが発生します。

なお、チャットフローにおけるLLMブロックの設定パネルは以下のとおりで、メモリ(会話の記憶)のオンオフも切り替え可能です。

知識検索
Difyのワークフロー / チャットフロー共通のブロック「知識検索」では、事前に作成したナレッジベースを設定しておくことで、入力に関連する知識を出力できます。
知識検索の結果(出力変数)は後続のLLMブロックにコンテキスト経由で反映ができるため、LLMに独自の知識を扱わせたい場合に最適です。

知識検索ブロックでの設定項目は以下のとおりです。
クエリテキスト:ユーザー入力やLLM回答等の検索キーワード
ナレッジベース:Dify内の別画面で事前に加工した独自の知識
メタデータフィルタ:知識検索時にメタデータ(付箋のようなもの)を参照するか否か

なお、ナレッジベースの作成は、Difyトップ画面の「ナレッジ」欄から「+ナレッジベースを作成」を選ぶことで可能です。

出力 / 回答
ワークフローの「出力」ならびにチャットフローの「回答」では、アプリの処理結果のうち、ユーザーに表示するものを定義できます。

うち、出力ブロックの設定パネルは以下のとおりです。

こちらでは、出力変数欄の横にある「+」からユーザーに表示するものを選べます。

次に、回答ブロックの設定パネルは下記のとおりで、ユーザー入力やLLM回答、定型文を組み合わせて自由に応答を定義できます。

エージェント
Difyの「エージェント」ブロックでは、LLMにタスクの分解や解決方法の考案、ツールの使用といった複雑な処理を任せられます。
こちらはワークフロー / チャットフローに標準装備のブロックですが、使用にあたってはエージェンティック戦略(プラグイン)の事前インストールが必要です。

このエージェントブロックではまず、プラグインとしてインストールしたエージェンティック戦略(LLMの挙動の枠組み)を設定します。
こちらはDify公式のエージェンティック戦略「Dify Agent Strategies」をインストールしている場合、以下が選択可能です。
FunctionCalling:LLMが設定した外部ツールを自動で選択・使用
ReAct:LLMがプロンプトで示した流れに沿って処理を試行錯誤

次に、エージェンティック戦略で「FunctionCalling」を選んだ場合は、以下の設定パネルが表示されます。

こちらでは採用するモデルやツール、システムプロンプト(INSTRUCTION)、ユーザープロンプト(QUERY)等を設定可能です。


質問分類器
Difyのワークフロー / チャットフロー共通の「質問分類器」ブロックでは、LLMによる入力の判別結果に沿って、後続の処理を切り替えられます。
こちらは後述のIF / ELSEブロックよりも柔軟・高度な条件分岐を実装したい場合におすすめです。

質問分類器ブロックは、以下の設定に対応しています。
モデル:判別に使用するLLM
入力変数:判別する対象
ビジョン:画像の判別に対応するか否か
クラス:後続のフローの繋ぐ場合の判断基準

なお、入力を食べ物か否かで判断する質問分類器に「プリン」を入力した場合、処理の過程・結果は以下のようになります。

IF / ELSE
Difyの「IF / ELSE」ブロックでは、設定した条件に当てはまるか否かで後続の処理の切り替え(条件分岐)が可能です。

ワークフロー / チャットフローのIF / ELSEブロックで設定・確認できる項目は以下のとおりです。



イテレーション
Difyの「イテレーション」は、配列中の各要素に対して別個に同じ処理を実行できるブロックです。

このイテレーションブロックの設定パネルで定義できる項目は、下記のとおりになります。
ブロック内ワークフロー:配列の各要素に対する処理を定義
入力:前段階のブロックの出力変数を設定
出力変数:ブロック内ワークフローの処理結果のうち、後続のブロックに渡すものを選択
パラレルモード:各要素の処理方法を順次処理から並列処理に変更
エラー応答方式:エラー発生時の残りの処理を、終了 / 失敗結果を残して継続 / 失敗結果を削除して継続のいずれかから選択
出力をフラット化:無効化すると、各処理の結果が配列の場合に入れ子状の配列を出力
なお、イテレーションブロック内のワークフローでは配列の各要素(item)のほか、ファイルの形式(type)や名前(name)等も変数として選択が可能です。

ループ
Difyの「ループ」は、入力(文字列・数値・配列全体等)に対して同じ処理を反復・重ねがけできるブロックです。

このループブロックでは、以下の要素を設定できます。
ブロック内ワークフロー:繰り返す処理の内容
ループ変数:ループの各周回時の結果を記録する変数
ループ終了条件:単一条件のほか、AND / ORによる条件の組み合わせにも対応
最大ループ回数:無限ループを回避するための最大回数


コード実行
Difyのワークフロー / チャットフローでは、「コード実行」ブロックから、独自の処理をカスタマイズすることもできます。
こちらは数値計算向きの「Python」とJSON・文字列処理向きの「JavaScript」に対応しており、Difyにない処理を実現したい場合におすすめです。

コード実行ブロックでは、入力変数と任意のPython / JavaScriptコード、出力変数等を設定できます。うち、入力変数とコードについては設定が必須です。

なお、コード記述欄にはデフォルトの状態で、入力された2つの文字列を結合するPythonコードが例示されています。こちらは複数のLLM回答や知識検索結果をひとまとめにしたい場合に最適です。

テンプレート
Difyの「テンプレート」ブロックでは、任意のJinja2テンプレートにより、入力内容を整理・加工して出力できます。
こちらは出力 / 回答ブロックでユーザーに表示する内容の飾り付けや入力内容の条件分岐・反復処理による加工に最適です。

以下は4個の入力変数を見出しや太字で修飾するテンプレートの例になります。

こちらのテンプレートを実行した結果は以下のとおりです。

変数集約器
Difyの「変数集約器」は、条件分岐後の処理結果をどの分岐を辿ったかに関係なく、同じ1つの変数として扱うためのブロックになります。

この変数集約器を使うにあたっては、各分岐から集める変数を同じ型(文字列 / 数値 / オブジェクト / 真偽値 / 配列のいずれか)で揃える必要があります。
テキスト抽出
Difyのワークフロー / チャットフローには、「テキスト抽出」というブロックも存在します。こちらはアプリが受け取ったファイルを、LLMが処理しやすいテキストに変換するためのものです。

このテキスト抽出ブロックは以下のファイル形式をサポートしています。
TXTファイル
Markdown
HTMLファイル
Word(DOCX)
PDFファイル
Excel(.xls/.xlsx)
CSVファイル
PowerPoint(.ppt/.pptx)
EMLファイル
MSGファイル
EPUB書籍
VTT字幕
JSON / YAMLデータ
Propertiesファイル
変数代入
Difyの「変数代入」ブロックでは、変数として抽出した特定の要素(名前や電話番号等)をチャットフローの会話変数に反映できます。
会話変数に書き込んだ要素は、1つの会話(チャットルーム)中で保持され続けるのが特徴です。

会話変数に対して行える操作は、下記のいずれかになります。
上書き:現在の値を新たに得た値で置換
クリア:現在の値を削除
セット(配列以外):固定値を手動設定
算術演算(数値のみ):会話変数中の値と新たに得た値を加減乗除で計算
追加(配列のみ):配列の最後に1つの要素を追加
拡張(配列のみ):他の配列から全要素を追加
最初を削除(配列のみ):配列から最初の要素を削除
最後を削除(配列のみ):配列から最後の要素を削除

なお、会話変数自体の設定は、チャットフロー作成画面の右上にある吹き出し(とx)のアイコンから可能です。

パラメータ抽出
Difyの「パラメータ抽出」は、LLMの力で入力から特定の要素(名前や電話番号等)のみを取り出して変数化できるブロックです。

このパラメータ抽出では、以下の要素を設定できます。
使用するモデル
抽出元の入力変数
出力時の変数名
変数のデータ型(文字列 / 数値 / 真偽値 / 配列 / オブジェクトのいずれか)
LLM向けの抽出内容の説明
抽出が必須か否か 等

なお、実際にパラメータ抽出を使った場合の結果は以下のとおりです。
(入力文の下に抽出した電話番号を表示)

HTTPリクエスト
Difyの「HTTPリクエスト」ブロックでは、外部サービスとのデータの送受信が行えます。こちらはDify内にプラグインが存在しない外部サービスをワークフロー / チャットフローと連携させたい場合に便利です。

リスト処理
Difyの「リスト処理」は、配列の要素をフィルタリング・並び替え・選択できるブロックです。こちらは文字列 / 数値 / 真偽値を含む配列とファイル由来の配列に対応しています。

スケジュールトリガー
「スケジュールトリガー」は、ワークフロー限定で選べるトリガー系ブロックの1種です。こちらでは、設定パネルで指定した時刻・間隔でワークフローを自動的に開始させられます。

なお、スケジュールトリガーは同一アプリ内に複数個配置できます。ただし、ユーザー入力との共存はできませんので、ご注意ください。
Webhookトリガー
同じくワークフロー限定のトリガー系ブロック「Webhookトリガー」は、連携した外部ツールのイベントに呼応してワークフローを開始できるというものです。
こちらはトリガー系のプラグインが存在しないツールを、ワークフローのトリガーとしたい場合に適しています。

Difyのブロック早見表
ここまででご紹介した、ブロック全17+2種の機能・できることを表にまとめると以下のとおりになります。




Difyのブロックに関するよくある質問・FAQ
最後に、Difyのブロックについてのよくある質問・FAQにお答えしていきます。
Q.Difyの料金は?無料で使える?
A.Dify自体は無料でも使えますが、別途生成AIモデルや外部サービスの使用料が必要な場合(API採用時)もあります。
なお、Web版Difyでは無料プラン1種と有料プラン2種が用意されており、アプリを多く使いたい場合は課金が必要です。一方、ローカル版Difyについては、無料でダウンロードが可能となっています。

Q.ブロックの繋ぎ方は?
A.Difyのワークフロー / チャットフローにおけるブロックの追加・連結方法は下記のとおりです。


Q.ワークフローとチャットフローの違いは?
A.ワークフローは「手順が決まっているタスクの自動化」に、チャットフローは「人との会話」にそれぞれ特化しています。両者の具体的な違いについては、下表をご覧ください。

Q.初心者におすすめのブロック配置は?
A.Difyのワークフロー / チャットフローで初心者におすすめのブロック配置は以下のとおりです。
ユーザー入力
(IF / ELSEまたは質問分類器)
知識検索やWeb検索等の情報源
(条件分岐がある場合は変数集約器)
LLM
回答 / 出力
Q.IF / ELSEと質問分類器の違い
A.IF / ELSEブロックはシンプルな条件での分岐に、質問分類器ブロックは言語化・数値化が難しい複雑な条件での分岐にそれぞれ最適です。
Difyのブロックをマスターして、複雑なアプリを作ってみよう!
本noteでは、Difyのワークフロー / チャットフローで使える「ブロック」についてご紹介しました。
Difyのブロックはワークフロー / チャットフロー限定の要素で、入出力やLLM回答等の機能をもった処理単位です。こちらは処理順に繋いだり分岐させたりすることで、複雑な生成AIアプリを視覚的に構築できます。
みなさんもぜひぜひ、ブロックの機能・違いをマスターして、業務で通用するレベルの生成AIアプリを内製化しちゃいましょう!
なお、ノーコードツールのn8nの事を知りたい場合は以下の記事をご覧ください。
WEELでは、生成AIを業務や事業に取り入れたい方向けの各種セミナーを開催しています。
「どんな活用ができるのか知りたい」「自社でどう始めればいい?」という方に向けて、現場視点のノウハウや最新事例をご紹介しています。
✅ セミナーに参加する
生成AIの最新ニュース・事例・イベント情報をいち早く知りたい方は、ぜひWEELの無料メルマガをご購読ください!
✉️ メルマガに登録する
💡 AI活用、どこから始めればいいかお悩みの方へ
「AIエージェントって実際にどう使うの?」
「チャットボット作ってみたいけど何から始めれば…?」
そんな方向けに、無料の個別相談をやってます!
現場での事例も交えて、わかりやすくお話しします。
✨今すぐAIの専門家と話す✨
