Difyでのワークフローの作り方を手順を追って解説

この記事の結論
・Difyワークフローは定型業務の自動化に特化しており、ノードとコネクタを接続して構築する

・開始ノードでの変数定義と、LLMプロンプトへの変数埋め込み設定が動作の最重要ポイント

・ノード間の線が途切れていないか確認し、終了ノードで出力変数を指定することでエラーを防げる

Difyで高度な自動化処理を実現したいけれど、ワークフローの作成画面(キャンバス)の操作方法や、ノードと変数のつなぎ方が分からず困っていませんか?

チャットボットとは異なり、ワークフロー機能は自由度が高い反面、設定項目が多く複雑に見えることがあります。特に「変数の受け渡し」や「ノードの接続」は、初心者が最もつまずきやすいポイントです。

本記事では、Difyの「ワークフロー」機能の使い方を、アプリの新規作成から実行確認までステップバイステップで解説します。手順通りに操作を進めることで、基礎的なテキスト生成ワークフローを迷わず完成させることができます。

“AIで勝てる人”へ。実務で活かす力を身につけよう

オンラインAIスクール「BuzzAcademy」なら専属講師が基礎から実務まで伴走し、実務で活かせるAIスキルを最短習得

案件紹介サポートも実施しており、副業初心者でもスキルを身につけながら着実に実績を積み上げられます。

今なら無料相談で、あなたに最適なAIキャリア・学習プランをご提案中

BuzzAcademy_無料相談バナー
目次

Difyの「ワークフロー」とは?チャットボットとの決定的な違い

Difyには大きく分けて「チャットボット(Chatflow)」と「ワークフロー(Workflow)」の2種類のアプリタイプが存在します。まずは、この2つの違いとワークフローの基本構造を理解しましょう。

会話型(Chatflow)と処理型(Workflow)の使い分け

チャットボット(Chatflow)は、ユーザーとの「対話」を主目的としています。過去の会話履歴(メモリ)を保持し、人間のようなやり取りを行うのに適しています。

一方、ワークフロー(Workflow)は定型業務の自動化や「一括処理」に特化しています。入力されたデータに対して、翻訳、要約、分類などの処理を一度だけ行い、結果を返します。

会話の文脈を保持する必要がないタスクや、複雑なロジックを組みたい場合はワークフローを選択します。

ワークフローは会話の文脈を持たず、一回限りの処理を完結させる機能です。

ワークフロー作成の全体像(ノードとコネクタの概念)

ワークフローは、「ノード」と呼ばれる処理ブロックと、それらをつなぐ「コネクタ(線)」で構成されます。

基本的な流れは以下の通りです。

  • 開始(Start):データの入り口。ユーザーからの入力を受け取ります。
  • 処理(LLMなど):AIモデルによる生成や、コード実行などの加工を行います。
  • 終了(End):データの出口。最終的な結果を出力します。

この「開始→処理→終了」という一連の流れを、キャンバス上で視覚的に組み立てていきます。

手順1:アプリの新規作成とキャンバス画面の準備

それでは実際にワークフローを作成していきます。まずはアプリの立ち上げと画面の基本操作を確認します。

スタジオから「ワークフロー」タイプを選択して作成する

Difyの管理画面(スタジオ)にログインし、以下の手順でアプリを作成します。

  1. 画面上の「最初から作成」または「アプリを作成」ボタンをクリックします。
  2. アプリタイプの選択画面が表示されたら、ワークフローを選択します。
  3. アプリ名(例:テスト用ワークフロー)を入力し、「作成する」ボタンをクリックします。

これでワークフロー専用の編集画面が開きます。

編集画面(キャンバス)の見方と基本操作

作成直後の画面は「キャンバス」と呼ばれ、ここでフローを構築します。

  • 左側(ノードパネル):「LLM」「知識検索」「IF/ELSE」などの機能ブロックを追加できます。
  • 中央(キャンバス):ノードを配置し、線でつなぐ作業エリアです。マウスホイールで拡大縮小、ドラッグで移動が可能です。
  • 右側(設定パネル):選択したノードの詳細設定(プロンプト入力など)を行います。

初期状態では開始(Start)ノードと終了(End)ノードのみが配置されています。

最初は開始と終了ノードのみが表示されている状態が正常です。

手順2:開始ノードの設定と入力フィールドの定義

ワークフローを動かすためには、最初に「どんなデータを受け取るか」を定義する必要があります。

ユーザー入力を受け付ける「入力フィールド」を追加する

キャンバスにある「開始(Start)」ノードをクリックして選択します。

  1. 右側の設定パネルに「入力フィールド」という項目が表示されます。
  2. 「+ 追加」をクリックし、入力タイプを選択します。通常は「テキスト」または「段落」を選びます。
  3. 変数名を設定します。ここは重要です。例えば queryinput_text と入力します。
  4. ラベル名(表示名)は任意で設定します(例:質問内容)。
  5. 「必須」にチェックを入れると、実行時に必ず入力を求められるようになります。

ここで設定した変数名(例:query)が、後のノードでデータを参照する際のキーとなります。

変数名は半角英数字で設定し、後で分かりやすい名前を付けましょう。

システム変数(セッション情報など)の確認

入力フィールド以外にも、Difyには「システム変数」が用意されています。開始ノードの設定パネル内にある「sys.」から始まる項目がそれにあたります。

  • sys.user_id:実行ユーザーのID
  • sys.conversation_id:会話ID

これらは自動的に取得されるため、特別な設定なしで利用可能です。必要に応じて後の工程で使用します。

手順3:LLMノードの追加とプロンプト設定

次に、AIに処理をさせるための「LLMノード」を追加し、具体的な指示(プロンプト)を設定します。

LLMノードをキャンバスに追加してモデルを選択する

キャンバス上の何もないところを右クリックするか、ノードの「+」ボタンを押します。メニューから「LLM」を選択すると、新しいLLMノードがキャンバスに追加されます。

追加されたLLMノードをクリックし、右側の設定パネルを開きます。「モデル」のプルダウンから、使用したいAIモデル(例:GPT-4o, Claude 3.5 Sonnetなど)を選択します。

コンテキストとプロンプトを入力する

LLMノードの設定パネルで、AIへの指示を記述します。

  • SYSTEM(システムプロンプト):AIの役割や振る舞いを定義します。(例:「あなたは優秀な要約アシスタントです。」)
  • USER(ユーザープロンプト):具体的な処理内容を記述します。(例:「以下の文章を要約してください。」)

【最重要】開始ノードの変数をプロンプトに埋め込む手順

ここが最も重要なステップです。手順2で設定した「入力データ」を、LLMのプロンプト内に埋め込みます。

  1. USERプロンプトの入力欄をクリックします。
  2. 変数を挿入したい場所で、入力欄の右端にある「{x}」ボタンをクリックするか、キーボードで { を入力します。
  3. 変数リストが表示されるので、「開始(Start)」の下にある変数(例:query)を選択します。
  4. プロンプト内に {{#start.query#}} のような形式で変数が挿入されます。

この操作により、ユーザーが入力したテキストが自動的にプロンプトの一部としてAIに渡されるようになります。変数をプロンプトに埋め込む際は、手動で文字を打つのではなく、必ずこの機能を使ってください。

手入力ではなく必ずリストから変数を選択して挿入してください。

手順4:ノードの接続と終了ノードの設定

各ノードの設定ができたら、それらを線でつないでデータの通り道を作ります。

ノード同士をコネクタで接続してフローを確立する

ノードの右端にある「○(出力ポイント)」から、次のノードの左端にある「○(入力ポイント)」へドラッグ&ドロップします。

  • 開始ノード → LLMノード:「開始」の右端から線を伸ばし、「LLM」の左端につなぎます。
  • LLMノード → 終了ノード:「LLM」の右端から線を伸ばし、「終了」の左端につなぎます。

線が正しくつながると、実線で表示されます。途切れていると処理が流れないため、確実に接続してください。

終了ノード(End)で最終的な出力内容を定義する

最後に、ワークフローの結果として何を表示するかを「終了(End)」ノードで指定します。

  1. 「終了」ノードをクリックして設定パネルを開きます。
  2. 「出力変数」の「+」ボタンをクリックします。
  3. 変数を選択するメニューから、「LLM」ノードの下にある text を選択します。

これにより、LLMが生成したテキストが最終的な出力として定義されます。

終了ノードで出力変数を指定しないと結果が画面に表示されません。

手順5:プレビュー実行とデバッグの方法

ワークフローが完成したら、実際に動かしてテストを行います。

「実行」ボタンでテストデータを入力して動作確認する

画面右上にある「実行」または「プレビュー」ボタンをクリックします。入力フォームが表示されるので、手順2で定義した入力フィールド(例:query)にテスト用のテキストを入力し、「実行開始」ボタンを押します。

ログを確認してエラー原因を特定する

実行後、画面右側に処理ログが表示されます。

  • 緑色のチェック:正常に完了したノードです。
  • 赤色のバツ印:エラーが発生したノードです。

各ノードのログをクリックすると、その時点での「入力データ」と「出力データ」を確認できます。期待通りのデータが渡っているか、詳細にチェックしましょう。

エラー時は各ノードのログを開き、入力データが届いているか確認しましょう。

よくある失敗(エラー)と解決チェックリスト

初心者が陥りやすいトラブルとその対処法をまとめました。

ノードが実行されない・接続エラーが出る場合

  • 原因:ノード間のコネクタ(線)がつながっていない、または線が途中で切れている。
  • 対処:キャンバス上で線を一度削除し、再度「出力」から「入力」へドラッグして確実につなぎ直してください。

変数が正しく反映されずエラーになる場合

  • 原因:プロンプト内の変数記述 {{ }} が間違っている、または存在しない変数を参照している。
  • 対処:プロンプト入力欄の変数を一度削除し、再度「{x}」ボタンからリスト選択で挿入し直してください。手入力での記述ミスを防げます。

生成が途中で止まる・タイムアウトする場合

  • 原因:LLMモデルの応答制限や、APIキーのクレジット不足。
  • 対処:使用しているモデルを変更するか、APIプロバイダの管理画面でクレジット残高や権限設定を確認してください。

まとめ

Difyのワークフロー作成は、以下の手順を確実に踏むことで再現できます。

  1. アプリ作成:「ワークフロー」タイプを選択する。
  2. 入力定義:開始ノードで変数(queryなど)を設定する。
  3. 処理設定:LLMノードを追加し、プロンプトに変数を埋め込む。
  4. 接続:ノード間をコネクタでつなぎ、終了ノードで出力を指定する。
  5. テスト:プレビュー実行で動作を確認し、ログでデバッグする。

まずはシンプルな「入力→LLM→出力」の構成で動作を成功させ、慣れてきたら条件分岐や複数のLLMを組み合わせた高度なフローに挑戦してみてください。

“AIで勝てる人”へ。実務で活かす力を身につけよう

オンラインAIスクール「BuzzAcademy」なら専属講師が基礎から実務まで伴走し、実務で活かせるAIスキルを最短習得

案件紹介サポートも実施しており、副業初心者でもスキルを身につけながら着実に実績を積み上げられます。

今なら無料相談で、あなたに最適なAIキャリア・学習プランをご提案中

BuzzAcademy_無料相談バナー

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事の監修者

株式会社BuzzConnection/株式会社KAGEMUSHA 代表取締役CEO

2021年に独立し、株式会社BuzzConnectionを設立。複数の事業を運営し、現在はAIを活用したWebアプリケーションの開発、運用や生成AIの普及を目的としたセミナー研修の開催など多角的に活躍している。
2023年4月に株式会社KAGEMUSHAを創業。AI事業に大きく事業を展開。
AIアバターやデジタルヒューマン、AIチャットボット、AI研修など幅広い視点からAIの業務効率化を支援。

目次