Dify入門2:AIチャットボットとワークフロー、どちらを選ぶ?アプリの使い分け

Difyを使ってAIアプリを作る時、主に「チャットボット形式(Chatflow)」「ワークフロー形式(Workflow)」という2つの作り方があります 。この2つは得意なことが違うので、作りたいものに合わせてどちらを選ぶかが、うまくいくための第一歩です。

このガイドでは、この2つの形式の違いと、どんな時にどちらを選べば良いかを、分かりやすく解説します。ぴったりの方を選べば、開発がスムーズに進み、使いやすいAIアプリが作れますよ。

Difyの「チャットボット形式(Chatflow)」とは?

基本の考え方:AIと「会話」するアプリを作る

「チャットボット形式(Chatflow)」は、名前の通り、人間とAIが「会話」するようなアプリを作るのに特化しています 。ただ質問に一回だけ答えるのではなく、前の会話の流れを覚えていて、自然なやり取りが続けられるのが特徴です 。  

例えば、あなたが何か質問すると、AIがそれを処理して答えます。大事なのは、AIが「さっきこんな話をしたな」と覚えていること。だから、「もう少し詳しく教えて」とか「今の話に関連して、〇〇はどう?」といった、会話の流れに沿った質問ができるんです 。これは、一回きりの作業をこなすのとは違う、「会話」を中心にした作り方です。  

主な特徴:なぜ会話が得意なの?

チャットボット形式が会話上手なのは、いくつかの便利な機能があるからです。

  • 記憶機能(Memory): これが一番の特徴!過去の会話のやり取りを自動で覚えていてくれます 。AIが「前の会話を踏まえて」答えてくれるので、話がちぐはぐになりません 。会話は前の発言が分からないと成り立ちませんよね。この記憶機能をDifyが自動で管理してくれるので、開発者は会話の中身作りに集中できます。
  • 会話のための情報: チャットボット形式では、会話に役立つ情報が自動で使えます 。
    • あなたがチャットに入力した質問や言葉。(sys.query
    • 今している会話の通し番号。どの会話の一部か区別します。(sys.conversation_id
    • チャットしているあなたを識別する番号。(sys.user_id
    • チャット中にあなたがアップロードしたファイル(画像や文書など)。(sys.files
    • 会話が何回続いたかのカウント。 これらの情報は、リアルタイムに進む会話を管理するのに役立ちます。(sys.dialogue_count
  • 回答(Answer)ステップ: チャットボット形式には特別な「回答」ステップがあります 。すごいのは、AIが答えを考えている途中でも、少しずつ文章を表示できること(ストリーミング表示)。ユーザーはAIが考え込んでいる間も待たされず、スムーズな会話体験になります 。これは、最後にまとめて結果を出す「ワークフロー形式」とは違う点です。

こんな時に便利!主な使い道

チャットボット形式は、会話能力を活かして、こんな場面で役立ちます。

  • 社内ヘルプデスク・FAQボット: 社内規定や手続きについて質問すると、AIが自動で答えてくれる 。
  • マニュアル検索ボット: 大量のマニュアルや資料の中から、知りたい情報を会話形式で探してくれる 。
  • インタラクティブなQ&A: ユーザーと対話しながら、必要な情報を提供したり、簡単な作業を手伝ったりする 。
  • 賢い資料検索チャット (RAG): 会社の資料(ナレッジベース)をAIが読み込んで、質問に対して資料に基づいた的確な回答を会話形式で提供する 。

これらの使い道に共通するのは、「会話そのもの」が重要で、話の流れを理解することが求められる点です。チャットボット形式の機能(記憶、会話情報、途中回答)は、まさにこうした会話型アプリを作るためにあります 。AIに「人と話すように、前の話を覚えていてほしい」なら、こちらを選びましょう。  

もっと便利にする追加機能

チャットボット形式では、会話をよりスムーズで使いやすくするための追加機能も使えます 。  

  • 会話のきっかけ作り: AIの方から「こんにちは!何かお手伝いしましょうか?」のように話しかける機能。
  • 次の質問の提案: 会話が一区切りついた時に、「次はこんなことを聞いてみては?」とAIが提案してくれる機能。
  • 音声読み上げ: AIの回答を音声で聞ける機能(設定が必要)。
  • ファイル添付: チャット中に文書や画像をアップロードして、それについて質問できる機能 。
  • 回答の根拠表示: AIがどの資料を参考にして答えたかを表示する機能。回答の信頼性が高まります。
  • 不適切発言の防止: AIが不適切な言葉を使わないようにする機能(設定が必要)。

これらの機能は、人間とAIのコミュニケーションをより良くすることに重点を置いています。

Difyの「ワークフロー形式(Workflow)」とは?

基本の考え方:決まった作業を自動でこなす

「ワークフロー形式(Workflow)」は、決まった手順の作業を自動化したり、大量のデータをまとめて処理したりするのに向いています 。人間とのリアルタイムな会話なしに、特定のきっかけ(例えば、毎日決まった時間に、とか、新しいファイルが置かれたら)で自動的に動き出す作業を作るのに適しています。  

イメージとしては、API(他のソフトと連携する仕組み)からの指示や、時間設定、あるいは手動での開始(最初に必要な情報を与える)によってスタートし、決められた手順(ステップ)を順番に実行していきます。データを加工したり、他のツールと連携したりして、最終的な結果を出したり、何かのアクションを起こしたりして完了します 。これは、チャットボットのような行ったり来たりの会話とは違い、一方向に進む流れ作業のようなものです。  

主な特徴:なぜ自動化が得意なの?

ワークフロー形式が自動化や決まった作業に向いている理由は、以下の特徴があるからです。

  • 記憶機能がない: チャットボット形式と違って、過去のやり取りを自動で覚えておく機能はありません 。そのため、毎回まっさらな状態から始まる作業や、作業の状態を別の場所(データベースなど)で管理するようなタスクに向いています。もしワークフロー形式で会話のような記憶機能を持たせようとすると、開発者が自分でその仕組みを作る必要があり、複雑になります。自動化やデータ処理では、前のやり取りを覚えている必要がないことが多いので、この機能がないことで、仕組みがシンプルになっています。
  • 処理のための情報: ワークフロー形式で使える情報は、会話管理よりも、どの自動化プロセスなのかを識別したり、何がきっかけで始まったかを知るためのものです 。
    • 主に最初に与えられるファイル(特に画像など)を扱います 。(sys.files
    • この自動処理を開始した人を識別します(もし人が開始した場合)。(sys.user_id
    • この自動処理プログラム自体の固有番号。どの自動化が動いているか管理するのに重要です。 (sys.app_id:)※チャットボット形式にあった sys.query や((sys.conversation_id は基本的にありません) 会話が中心ではないので sys.query は不要で、継続的な会話セッションもないので sys.conversation_id も不要です。代わりに sys.app_id が個々の自動処理を区別するのに役立ちます 。
  • 終了(End)ステップ: ワークフロー形式では、作業の完了を示す「終了」ステップを使います 。通常、このステップに到達したら、結果が出力されるか、作業が完了したことになります。
  • 複雑な手順や自動化のためのステップ: ワークフロー形式には、複雑な指示や自動化を実現するための様々なステップ(ノード)が用意されています 。これらが自動化の強みです。
    • コード実行(例:Pythonというプログラミング言語を使う)
    • 条件分岐(もし〇〇ならA、そうでなければB、という判断)
    • 繰り返し処理(同じ作業を何度も行う)
    • テンプレート変換(決まった形式にデータを整える)
    • HTTPリクエスト(他のウェブサービスや社内システムと連携する) 自動化したい作業では、条件によって処理を変えたり、データを一つずつ処理したり、特別な指示を実行したり、他のシステムとデータをやり取りしたりすることがよくあります。ワークフロー形式は、こうした要求に応えるための専用ステップを提供し、単にAIに文章を作らせるだけでなく、しっかりとした自動化の流れを組むことができます。
  • 開始のきっかけ: スケジュール(例:毎日午前9時)やイベント(例:新しいメールが届いたら)をきっかけに自動で開始させることも得意です 。

こんな時に便利!主な使い道

ワークフロー形式は、その自動化能力を活かして、こんな場面で役立ちます。

  • 定型文の大量作成: 商品リストから説明文をまとめて作る、など 。
  • データ分析とレポート作成: アンケート結果を集計して、要点をまとめたレポートを自動生成する 。
  • 作業の自動化: 他のシステムと連携して、一連の作業を自動で行う 。例えば、会議の録音ファイルから自動で議事録を作り、関係者にメールで送る、など 。
  • 翻訳作業の効率化: 大量の文書やテキストをまとめて翻訳する 。
  • メール送信の自動化: 特定の条件が揃ったら、自動でメールを作成して送信する 。例えば、新製品情報を顧客リストに合わせて自動送信するなど。
  • 複数のツール連携: いくつかのツールやシステムを、決まった順番で連携させて動かす 。

これらの使い道は、リアルタイムの会話よりも、情報の処理や一連の作業の実行が主な目的です。多くの場合、裏側で自動的に、あるいは何かのきっかけで動きます。ワークフロー形式の機能(判断ステップ、繰り返し、コード実行、記憶なし、終了ステップなど)は、こうした作業手順を定義し、確実に実行するのに適しています 。したがって、明確な手順で定義できる自動化・半自動化の作業には、ワークフロー形式が最適です。  

サポートされる追加機能

チャットボット形式と比べると、ワークフロー形式で使えるユーザー向けの「追加機能」は多くありません 。  

  • 画像のアップロード: 主に、作業開始時に画像ファイルを入力として使うことができます 。

ユーザー向けの機能が少ないのは、この形式が直接的なユーザーとのやり取りよりも、裏側での処理に重点を置いているからです。ワークフロー形式の主な「機能」は、ユーザーインターフェースではなく、強力な作業手順の組み立てや、判断・繰り返しといった処理ステップ自体にあると言えます。自動処理はAPI経由や時間指定で動くことが多いので、会話のきっかけ作りや音声読み上げのような機能はあまり必要とされません 。ワークフロー形式を強化するには、より高度な処理ステップ(コード実行、条件分岐、ツール連携など)を追加していくことになります 。  

比較:チャットボット形式 vs. ワークフロー形式

一番の違い:やり取りの仕方

チャットボット形式とワークフロー形式の根本的な違いは、「やり取りの仕方」です。チャットボット形式は、人間とAIが複数回にわたって会話を続け、前の話を覚えている対話型のアプリを作るためのものです。一方、ワークフロー形式は、通常、一回ごとに完結する(前のことを覚えていない)自動化された作業手順を定義し、実行するためのものです。

機能比較表

二つの形式の主な違いを下の表にまとめました。どちらを選ぶか考える際の参考にしてください。

特徴チャットボット形式(会話型)ワークフロー形式(自動化/処理型)
主な目的人とAIが自然に会話する決まった作業を自動化、大量処理
やり取りの仕方会話形式(人間 AI)手順実行形式(きっかけ → 処理 → 結果)
記憶機能あり(会話の履歴を覚える)なし(毎回リセットが基本)
主な自動情報sys.query (入力), sys.conversation_id (会話番号) などsys.app_id (プロセス番号), sys.files (入力ファイル) など
主な出力ステップ回答ステップ(途中でも表示OK)終了ステップ(最後に完了を示す)
処理の流れ制御簡単な分岐、ツールの利用複雑な判断(IF/ELSE)、繰り返し、コード実行、ツール連携
得意なことヘルプデスク、Q&A、資料検索定型文作成、データ分析、作業自動化、翻訳
ファイル処理会話中に色々なファイルを扱える主に開始時の入力として(画像など)
会話のきっかけ作りありなし
次の質問の提案ありなし
音声読み上げありなし
回答の根拠表示ありあまり関係ない
不適切発言防止あり必要なら別途対応

使いやすさと自由度のバランス

どちらの形式を選ぶかは、使いやすさと自由度のバランスも関係します。

  • チャットボット形式: 会話に必要な記憶機能などが最初から用意されているので、基本的な会話アプリは比較的簡単に作れます 。AIへの指示の出し方(プロンプト)を工夫したり、会話の中でツールを使ったり、資料検索(RAG)を活用したりすることで、色々なことができます。ただし、非常に複雑な会話の流れや状態管理が必要になると、難しくなることもあります。
  • ワークフロー形式: 条件分岐や繰り返し、コード実行、他のツールとの連携など、複雑な作業手順を組むための自由度が高いのが特徴です 。しかし、多くのステップを組み合わせた複雑な自動化プロセスを作るのは、設計やテストが大変になることもあります。また、ワークフロー形式でチャットボットのような「会話を覚えている」機能を作ろうとすると、チャットボット形式を使うよりずっと複雑になります。

簡単に言うと、「会話機能が便利なチャットボット形式」と、「自由な自動化が得意なワークフロー形式」のどちらかを選ぶ、ということです。どちらが良いかは、作りたいアプリが「会話」中心なのか、「自動実行」中心なのかによります。得意でないことを無理にやらせようとすると、かえって複雑で使いにくいものになってしまう可能性があります。

具体例でイメージ!こんな風に使えます

もう少し具体的に、どんな場面でどちらを使うか見てみましょう。

例1:社内FAQチャットボットを作る(チャットボット形式の例)

  • やりたいこと: 社員からのよくある質問(例:経費精算の方法)に、社内規定(ナレッジベース)を元に自動で回答し、会話の流れも覚えているボットを作りたい。
  • なぜチャットボット形式?:
    • 社員とAIが複数回やり取りする「会話」が必要だから。
    • 社員の質問(sys.query)を理解し、前の会話(メモリ)を覚えておく必要があるから。
    • 社内規定(ナレッジベース)から答えを探す機能(RAG)を使う可能性が高いから。
    • 「こんにちは!」とAIから話しかける機能なども役立つかもしれないから。
  • 主なステップ: 開始(質問受け取り)、ナレッジ検索(規定を検索)、LLM(AIが回答作成)、回答(答えを表示)。
  • 関連情報: これは、ナレッジベース活用 、カスタマーサービス 、RAG の例と合っています。

例2:毎日のニュース要約を自動メール送信(ワークフロー形式の例)

  • やりたいこと: 毎日、自動でニュースサイトから記事を集め、AIに要約させて、その要約をメールで関係者に送りたい。
  • なぜワークフロー形式?:
    • 作業が自動化されている(毎日実行)から。
    • 「記事取得 → 要約 → メール送信」という一連の手順があるから。
    • 外部のサービス(ニュースサイト、メール)と連携する必要があるから。
    • リアルタイムの人間との会話は必要ないから。
  • 主なステップ: 開始(スケジュール起動)、HTTPリクエスト(ニュース取得)、LLM(記事要約、記事が多ければ繰り返し処理も)、コード/テンプレート(メール文面作成)、HTTPリクエスト/メールツール(メール送信)、終了。
  • 関連情報: これは、コンテンツ生成やメール自動化 、ツール連携 の例と合っています。

どっちを選ぶ?判断のためのヒント

あなたの会社で作りたいAIアプリには、どちらの形式が合っているでしょうか?以下の点をチェックしてみてください。

チェックリスト

  • ユーザーとの主なやり取りは「会話」(複数回のキャッチボール)ですか? (はい → チャットボット形式向き)
  • アプリは、同じ人との前の会話内容を覚えておく必要がありますか? (はい → チャットボット形式向き)
  • 主な目的は、決まった時間に、あるいは何かのきっかけで始まる一連の作業を自動化することですか? (はい → ワークフロー形式向き)
  • 処理の中心に、複雑な条件判断(もし~なら~)、繰り返し、特別なプログラム実行が含まれますか? (はい → ワークフロー形式向き)
  • アプリは主に裏側で動いたり、他のシステムからの指示で動き、直接ユーザーとチャットすることは少ないですか? (はい → ワークフロー形式向き)
  • 「AIからの声かけ」や「次の質問の提案」のような、会話をスムーズにする機能が重要ですか? (はい → チャットボット形式向き)
  • 会話の途中で、ユーザーが色々な種類のファイル(文書、画像など)をアップロードして、それについて話す必要がありますか? (はい → チャットボット形式向き)

選び方のポイント

  • チャットボット形式を選ぶのはこんな時:
    • チャットボット、社内アシスタント、Q&Aシステム、会話しながら資料を探すシステムなど、「会話」と「文脈の記憶」が最も重要なアプリを作る場合。
    • 会話をより良くする機能(AIからの声かけ、次の質問提案など)を使いたい場合。
  • ワークフロー形式を選ぶのはこんな時:
    • 業務プロセスの自動化、大量データの処理・分析、会話不要の文章作成、複数のシステムを順番に連携させる、複雑な裏方処理などを行う場合。
    • やりたいことが明確な「作業手順」として定義できる場合。
  • 組み合わせる場合(応用編): 技術的には、ワークフロー形式がチャットボット形式を呼び出したり、チャットボット形式の中で複雑な処理を入れたりすることも可能です 。しかし、これは複雑になりがちなので、まずは「会話」と「自動化」のどちらがメインの目的かを考えて、それに合った形式を選ぶのがおすすめです。

まとめ

Difyの「チャットボット形式(Chatflow)」と「ワークフロー形式(Workflow)」は、それぞれ得意なことが違います。

  • チャットボット形式:
    人間とAIが自然に「会話」するための機能(記憶、会話情報、途中回答など)が充実しています。ヘルプデスクやQ&Aボットなど、対話が中心のアプリに向いています。
  • ワークフロー形式:
    決まった作業を「自動化」するための機能(条件分岐、繰り返し、コード実行、ツール連携など)が強力です。定型業務の自動化やデータ処理など、手順が決まっている作業に向いています。

どちらを選ぶかは、あなたの会社で「AIに何をさせたいか」によって決まります。このガイドを参考に、作りたいものにピッタリの形式を選んで、AI活用の第一歩を踏み出してください。最初に適切なツールを選ぶことが、開発をスムーズに進め、期待通りのAIアプリを作るための近道です。

さくっと内容をおさらい