こんにちは、サイオステクノロジーの織田です。今回はDifyでワークフローを構築する方法、ワークフローで使えるブロックの紹介を行っていきます。Difyをまだ導入できていない方はコチラを参考にやってみてください!
ワークフローの構築方法
Difyで生成AIツールを作成する際、「チャットフロー」と「ワークフロー」の2種類の方法が使えます。
- チャットフロー:簡単な操作で実装可能。詳細な動作を指定に不向き
- ワークフロー:外部データの参照、条件分岐をノーコードで実装可能
ワークフローは以下の写真の通り、いくつかのブロックをつなげることで構築します。それぞれのブロックが「外部情報を参照する」「条件分岐をする」といった役割を分担し、1つのアプリとして機能します。
遷移先のブロックを追加したいときは+ボタンをクリックします。また、画面上にあるブロック同士を接続したい場合は+ボタンをドラッグアンドドロップすることで接続することもできます。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/dify_flow.png?resize=880%2C464&ssl=1)
ブロックの紹介
それでは、ワークフロー中に組み込むことができるブロックを紹介したいと思います。今回は基本的なワークフローを構築できるように、使われる頻度が高いブロックに絞ってご紹介します。ここで紹介していないブロックもたくさんあるので、是非調べて使ってみてください。
開始
開始ブロックは、ワークフローの先頭に配置するブロックです。このブロックを使うことで様々な条件でワークフローを開始させられます。例えば、「ユーザが短文を入力したとき」や「ファイルを添付したら」などの条件を設定できます。
どのようなフローを作る際にも必ず最初に配置しましょう。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/dify_start.png?resize=804%2C354&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/dify_input48.png?resize=502%2C568&ssl=1)
LLM
LLMブロックはGPTやGeminiといったLLMを呼び出すことができます。このブロックを使うと以下の機能が実装できます。
- テキスト生成
- 質問回答
- 情報要約
AIにどのようなプロンプトを渡すのかも、このブロックで指定することができます。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/01/dify_llm.png?resize=880%2C529&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/llm.png?resize=880%2C357&ssl=1)
知識取得
知識取得ブロックを用いることで外部の情報を取り込むことができます。このブロックを使用する場合は、事前にデータベースやテキストファイル、pdfなどの資料をナレッジとして登録します。そして知識取得ブロックで登録したナレッジを指定することで外部情報を読み込んだ上で回答生成をさせることができます。
知識取得を用いることで、LLM単体では応答できないような質問にも答えられるようになります。たとえば、社内規約や仕様書などのクローズドなドキュメントを参照して質問に回答が可能になります。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/01/dify_knowledge.png?resize=774%2C496&ssl=1)
終了
終了ブロックはワークフローの最後に設置するブロックです。このブロックを設置することで出力文を表示させることもできます。開始ブロックと同じくどのようなフローを作る場合にも必ず最後に設置しましょう。チャットフロー作成時には代わりに回答ブロックを使用します。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/01/dify_end.png?resize=754%2C387&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/dify_ans.png?resize=880%2C369&ssl=1)
質問分類器
質問分類器は、ユーザーの質問を自動的に分類するブロックです。私が作成したフローでは、ユーザからの質問が富山県に関連があるか否かを判定させています。そして、判定の結果に応じて次に遷移するブロックが変化します。
このブロックを使うことで、ユーザの質問に応じて適切な処理を走らせることができます。分類条件の設定方法も簡単で、単に「富山県に関係する」とだけ書くだけでOKです。「富山県の県庁所在地を教えて」や「富山の名所を教えて」と質問すると富山県に関係ある質問として分類されました。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/01/dify_classify.png?resize=880%2C362&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/toyama.png?resize=880%2C135&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/hukui.png?resize=880%2C153&ssl=1)
IF/ELSE
IF/ELSEブロックを使うことで条件分岐を実装できます。例えば、以下ではユーザーからの入力に「富山」が含まれるか否かで条件分岐を設定しています。
- 「富山」が含まれる場合:IFに繋がるブロック
- 「富山」が含まれない場合:ELSEに繋がるブロック
こちらも質問分類器と同じく自然言語で条件を設定できます。また、「OOを含む」という条件以外にも、「XXを含まない」や「OOから始まる」というように色々な条件が設定可能になっています。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/01/dify_if.png?resize=880%2C506&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/ifelse.png?resize=880%2C483&ssl=1)
コード
コードブロックは、PythonやJavaScriptなどのコードを実行するためのブロックです。他のブロックでは対応できない複雑なロジックや外部APIとの連携などを実現できます。たとえば、PythonやJavaScriptでリストを作成すれば、後述のイテレーションがより使いやすくできます。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/code.png?resize=670%2C241&ssl=1)
イテレーション
イテレーションブロックは繰り返し処理のためのブロックです。このブロックを使うことで、同じアクションを複数回行うことができます。先述のコードと組み合わせてリスト内のデータ1つ1つについて同じ処理をしたり、指定した回数同じ処理をしたりといったことに使えます。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/01/dify_iteration.png?resize=880%2C422&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/iteration.png?resize=816%2C579&ssl=1)
テンプレート
テンプレートブロックは、文字通りテンプレート(事前に用意した文章)を使うための文字列です。
使い方としては、以下のようにエラーメッセージの出力に使えます。また、変数とテンプレートを組み合わせることもできます。テンプレートを使うことで、出力の体裁を整えることができます。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/dify_temp-1.png?resize=828%2C415&ssl=1)
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/error.png?resize=880%2C194&ssl=1)
最後に
今回はDifyのワークフロー構築について、利用可能なブロックの紹介も交えながら説明しました。Difyはノーコードで様々なAIツールが作成できる便利なプラットフォームです。今回紹介したブロック以外にも様々なブロックが用意されています。ぜひ色々なブロックを実施に触って、あなただけのオリジナルなワークフローを作ってみましょう!