YOKUTO TECH BLOG

TechBlog

AI・リプレイス・ニアショア開発まで。札幌のシステム開発会社ヨクトのエンジニアが、現場で得た知見や技術トピックを発信します。

Dify超入門 ・ ぜんぶ無料ではじめる全10回 第 9 回

ノードをつないで多段処理
― Chatflow/Workflow入門

これまでは1つの画面で設定するアプリでした。今回は、処理を部品(ノード)として並べ、線でつないで作るChatflow(チャットフロー)に入門します。第5回のFAQボットを“流れ図”で作り直し、さらに前回やり残した「ツールでWeb検索」も、今度こそ実際に動かします。

著者:株式会社ヨクト 技術チーム 公開日:2026.06.05 読了目安:約12分
#Dify#AI#Chatflow#Workflow#ノード#RAG

今回のゴール

第2回〜第8回で作ったアプリは、基本的に「1枚の設定画面」で動いていました。便利ですが、「まず社内資料を調べて、足りなければWebでもAIに検索させて…」のように処理を順番につなげたいときは、もう一段の仕組みが必要です。それがChatflow / Workflow。処理をノード(部品)として置き、線でつないで“流れ図”を作るタイプのアプリです。

💡 今回のゴール

  • Chatflow と Workflow の違いと、ノードキャンバスの基本を理解する
  • 第5回のFAQボットを 「ユーザー入力 → 知識検索 → LLM → 回答」 のノードで作り直す
  • 出典付きで答える様子を、フローで動かして確認する
  • 「ツール」ノードで、前回やり残したWeb検索を実際に動かして結果を受け取る

① Chatflow と Workflow って何?

どちらも「ノードをつないで多段処理を作る」点は同じです。違いは“動き方”。ざっくり、次のように使い分けます。

Chatflow(チャットフロー)Workflow(ワークフロー)
得意なこと会話(チャットの相棒)自動処理(まとめて1回実行)
動くきっかけユーザーが話しかけるたびに流れが走る1回の入力で最初から最後まで走る
出口「回答」ノードでチャットに返す(必須)結果を出力(任意)
FAQボット、相談窓口、調べもの係記事の一括生成、定型レポート作成

今回は会話で使うFAQボットを作るので、Chatflowを選びます。「チャットボットの賢い版」と考えると分かりやすいです。

📖 公式情報の確認

公式ドキュメントでも、Chatflowは「各メッセージが、あなたの設計したフローを動かしてから応答を生成する」対話型、Workflowは「入力を受け取り、フローで処理し、結果を返す」自動処理型と説明されています(参照:Dify Docs — Workflow / Chatflow)。

② Chatflowアプリを作る

いつもの スタジオ最初から作成 から、今回は チャットフロー を選びます(「初心者向けの基本的なアプリタイプ」を開かなくても、最初の画面に出ています)。名前は 社内FAQフロー にしました。

アプリ作成画面。ワークフローとチャットフローの2択でチャットフローを選択。右側にノードキャンバス(START→LLM→ANSWER)のプレビュー
▲ 図9-1 「チャットフロー」を選んで作成。右のプレビューのように、最初から 開始 → LLM → 回答 のノードが用意されています。

③ ノードキャンバスの基本(開始 → LLM → 回答)

作成すると、これまでと違う「キャンバス(流れ図の編集画面)」が開きます。最初から3つのノードが線でつながっています。これがChatflowの“最小構成”です。

ノードキャンバス。スタート(ユーザー入力)→ LLM → 回答 が線でつながっている。右にLLMノードの設定パネル
▲ 図9-2 最小構成のキャンバス。スタート(ユーザー入力)LLM回答。ノードをクリックすると右側に設定が開きます。
ノード役割
スタート(ユーザー入力)流れの入口。ユーザーが送った質問が、変数 sys.query に自動で入ります
LLMAI(モデル)に考えさせる中心の部品。今回も gpt-5-mini
回答流れの出口。LLMの結果をチャットに返します(Chatflowでは必須)

💡 変数 sys.query =「ユーザーが今送った質問」

ノードどうしは「変数」でデータを受け渡します。{x} マークの付いた青い文字がそれです。ユーザーの質問は sys.query という名前で、どのノードからでも呼び出せます。難しく感じても大丈夫。線でつなぐ=データが次の部品へ流れる、とだけ押さえればOKです。

④ 「知識検索」ノードを足してFAQボットにする

このままだとAIは“自分の知識”だけで答えてしまいます。第5回と同じく社内資料(ナレッジ)を参照させましょう。スタートとLLMの間(あいだ)に、「知識検索」ノードを差し込みます。

  1. スタートとLLMをつなぐ線の上にカーソルを合わせると出る「+」をクリックし、ブロック一覧から 知識検索 を選びます。

  2. 差し込まれた 知識検索 ノードを開き、ナレッジベース から、第4回で作った 「社内FAQサンプル.txt」 を選びます(クエリには sys.query が自動でセット済み)。

知識検索ノードの設定。クエリテキストにユーザー入力のsys.query、ナレッジベースに社内FAQサンプル.txtが接続され、次のステップがLLM
▲ 図9-3 差し込んだ 知識検索 ノード。クエリ=ユーザーの質問(sys.query)、ナレッジ=社内FAQサンプル。これで「質問に近い箇所を社内資料から探す」部品ができました。

次に LLM ノードを開き、コンテキスト「知識検索」ノードの検索結果(resultを指定します。そして、システムプロンプトには「渡された社内FAQの内容だけにもとづいて答えてください」と指示し、コンテキスト(検索結果)をプロンプトに差し込みます。

LLMノードの設定。コンテキストに知識検索のresultを指定。システムプロンプトに社内FAQをもとに答える指示
▲ 図9-4 LLMノードの コンテキスト に「知識検索 → result」を指定。これで検索でヒットした社内資料がAIに渡されます。

⚠️ コンテキストは「プロンプトにも差し込む」

コンテキストを指定すると、LLMノードに「コンテキスト利用時はプロンプトに変数を明記してください」という赤い注意が出ることがあります。これは「検索結果を、実際にプロンプトの中へ入れてね」という意味。プロンプト欄で /(スラッシュ)を入力して コンテキスト を挿入すれば消えます。これを忘れると、せっかく検索しても結果がAIに渡りません。

⑤ 動かして、出典付きで答えさせる

右上の プレビュー を開き、社内FAQにある質問を投げてみます。今回は「経費精算はいつ締めで、いつ振り込まれますか?」と聞いてみました。

プレビューで質問。経費精算は毎月25日締め・翌月15日振込と回答し、引用に社内FAQサンプル.txtが表示。ノードに実行成功のチェックマーク
▲ 図9-5 フローが順に走り、社内FAQの内容どおり「毎月25日締め・翌月15日振込」と回答。引用として参照元(社内FAQサンプル.txt)も表示されました。ノードの緑チェックは“通過した”印です。

第5回のFAQボットと同じ結果を、今度は「入力 → 検索 → AI → 回答」という流れ図で実現できました。一見遠回りに見えますが、途中に部品を足せるのがこの作り方の強みです。次はその実例として、Web検索の“道具”を足してみます。

⑥ 「ツール」ノードでWeb検索を実際に動かす

第8回では、エージェントにTavily(Web検索)という道具を持たせました。ただしエージェントは「AIが使うかどうかを“判断”する」仕組みのため、思ったとおりに検索してくれないこともありました。フローなら、「ツール」ノードを置く=必ずこの手順で道具を動かすと決められます。AIの気まぐれに左右されません。

試しに、キャンバスに ツール → Tavily Search のノードを1つ置き、検索キーワード(Query)に 東京 今日の天気 を入れて、ノード単体の このステップ実行 を押してみます。

Tavily Searchツールノードの設定。Queryに「東京 今日の天気」、Search DepthやTopicなどのパラメーター。このステップ実行ボタン
▲ 図9-6 ツール(Tavily Search)ノード。検索キーワードを入れて このステップ実行 を押すと、そのノードだけをその場で動かせます(第8回で登録したTavilyのAPIキーを使います)。

結果がこちらです。ステータスは SUCCESS。出力には、いま検索したばかりの本物の天気情報(「Today in Tokyo, expect partly cloudy skies … a high of around 27℃ …」)が返ってきました。AIの記憶では知り得ない“今日の天気”が取れている=実際にWebをリアルタイムでアクセスできているWeb検索です。

ツールノードの実行結果。ステータスSUCCESS、処理時間0.776秒、トークン総数0。出力JSONに今日の東京の天気のanswerが含まれる
▲ 図9-7 Tavilyツールノードの実行結果。SUCCESS0 Tokens(道具を呼ぶだけなのでAIのクレジットは消費しません)。出力に実際のWeb検索結果(今日の東京の天気)が入っています。

💡 エージェント(第8回)との違い = 「お任せ」か「手順どおり」か

第8回のエージェントは、AIが「今は検索すべきか」を自分で判断する“お任せ”型。賢い反面、確実性に欠けることがあります。今回のツールノードは、フローの決まった手順として必ず道具を動かす“確実”型。業務で安定して動かしたいなら、フロー+ツールノードが堅実です。実際の業務では、この検索結果を後ろのLLMノードに渡して「日本語で要約して」とつなげれば、“調べて答える”ボットになります。

💰 今回のクレジット

FAQフローのLLMノードは、動かすたびにAIクレジットを少し使います(軽い gpt-5-mini で節約)。一方、ツールノード(Tavily)の実行は 0 トークン=AIのクレジットを使いません(料金は道具側のTavilyに従います)。残量は 設定モデルプロバイダークォータ で確認しましょう。なお、今回フローを1つ作ったので、アプリは 4/5 になりました。

まとめと次回予告

今回は、処理を部品(ノード)でつなぐChatflowに入門しました。第5回のFAQボットを「ユーザー入力 → 知識検索 → LLM → 回答」のフローで作り直し、出典付きで回答。さらにツールノードで、前回やり残したWeb検索を実際に動かして結果を受け取るところまで体験しました。「線でつなぐ=処理が流れる」「部品を足せる=拡張できる」という感覚がつかめれば十分です。

▶ 次回(第10回・最終回)
いよいよ卒業回。作ったアプリを本番で使う・運用する・コストを管理する方法をまとめます。Webサイトへの埋め込みAPI連携自前APIキーでの運用、そして有料プランの判断まで。連載10回の総まとめです。

この記事で参照した公式情報

※ 画面のノード名・メニュー名は、Difyのアップデートで変わることがあります。本記事は公開時点の情報・実画面にもとづいています。生成結果や検索結果はそのつど変わります。Tavilyの検索を動かすには、第8回で解説したTavilyのAPIキー登録が必要です。スクリーンショット内のワークスペース名(メールアドレス)は記事用に伏せています。

“調べて動く”業務フローの自動化、ご相談ください

「社内資料の検索とWeb検索を組み合わせたい」「複数ステップの処理をノードで安定運用したい」――そんなときは、要件定義から運用・コスト設計までを完全内製で伴走する株式会社ヨクトにご相談ください。

AI開発について見る お問合せ