🐍

Difyのワークフローとチャットフローでグルメレポートbotを作ってみた

2024/06/26に公開

はじめに

初めてDifyを触ってみて、どんなものか確認します!
チャットbotのチャットフローと、ワークフローを試してみる

Difyのワークフローとチャットフローについて

ワークフローの特徴

ワークフロー

  • 用途: 自動化およびバッチ処理のシナリオに向いている
    高品質な翻訳、データ分析、コンテンツ生成、電子メール自動化などが代表的な使い方
  • 特徴:
    • ノード: ワークフローは、様々な機能を持つノードをつなぐことによって、連続した操作を実行する
      開始ノード、終了ノード、様々な処理や条件分岐のノードなどが含まれる
    • 変数: ワークフロー内のノード間でデータを渡すために変数が使わる
      開始時に実行変数を定義する必要があり、これはプロセスの中で複雑な処理ロジックを実現するために使用される
    • 終了ノード: プロセス終了時にのみ選択可能なノード

チャットフローの特徴

チャットフロー

  • 用途: 対話型シナリオに向いており、カスタマーサービスやセマンティック検索など、応答構築の際に多段階のロジックが必要な対話式アプリケーションに適している
  • 特徴:
    • ノード: 対話の流れを構築するためのノードがあり、例えば、開始ノード、質問応答ノード、コンテンツ出力ノードなどがある
    • 変数: チャットフローの開始ノードには、sys.querysys.filessys.conversation_idsys.user_id などの変数が内蔵されている
    • チャットメモリ: チャットフローには内蔵のメモリ機能があり、複数回の対話の履歴メッセージを保存および伝達することが可能
      この機能はLLMや問題分類などで有効にできますが、ワークフローには搭載されていない

使用方法の違い

  • 利用可能なノードの違い:
    • ワークフロー: バッチ処理と自動化に重点を置いたノードが豊富にある
    • チャットフロー: 対話と応答に特化したノードが多く含まれている
  • 終了ノードと回答ノード:
    • ワークフローには終了ノードがあり、プロセスの末尾で使用される
    • チャットフローには回答ノードがあり、テキストのストリーミング出力を行うためのノード。プロセス中間ステップでも使用できる

つまり、ワークフローは自動化に特化し、チャットフローは対話型シナリオに特化している!

ワークフローを使ったグルメレポートbotの作成

目標設定

食べたもの、店名、値段、コメントあたりを入力して、そこからグルメレポートを作成するBotを実装する

入力画面の作成

欲しい情報をとりあえず入力フィードに追加
入力画面
せっかくなので、web searchをフローに組み込んでみたいと思います。
ブロックを追加から、DuckDuckGo Searchを選択
ブロック選択

完成品

完成品

実行結果と出力例

実際に使ってみる
入力画面
入力
必要事項を入力(ついでに画像も読み取れるらしいので選択)
出力結果
出力

出力

グルメレポート:福全徳の和牛麻婆豆腐


神楽坂エリアに位置する「福全徳」は、本格的な広東料理が楽しめる中華料理店として知られています。店内はシックで落ち着いた雰囲気が漂い、リラックスして過ごすことができる空間です。今回ご紹介するのは、同店の人気メニューである「和牛麻婆豆腐」です。

メニュー詳細

  • 料理名: 和牛麻婆豆腐
  • 価格: 1300円

和牛麻婆豆腐は、A5ランクの黒毛和牛を使用して作られており、その贅沢な食材が一口ごとに感じられます。一口食べると、和牛の旨味とともに広がるピリリと効いた山椒の香りが絶妙です。

お客さんの感想

「ぴりりときいた山椒が絶妙でした!また食べに行きたい!」というコメントが寄せられており、その満足度の高さがうかがえます。特に、山椒の使い方がポイントで、辛さと香りのバランスが絶妙に調整されているのが特徴です。

同店は、焼物や手作り点心、飲茶なども人気メニューとして提供しており、和牛麻婆豆腐以外のメニューも豊富に揃っています。福全徳のシェフは元福臨門の出身ということもあり、その腕前には定評があります。

店舗情報

  • 店名: 福全徳
  • エリア: 神楽坂
  • 特徴**: 本格広東料理、個室完備、ネット予約可、禁煙

店内は3階建てで、1階はカウンター席、上階には個室も完備されているため、プライベートな空間での食事も可能です。落ち着いた雰囲気の中で、美味しい中華料理を堪能できるのは、まさに至福のひとときです。

福全徳の和牛麻婆豆腐は、一度食べたら忘れられない一品です。ぜひ足を運んで、その贅沢な味わいを体験してみてください。


総評

福全徳の和牛麻婆豆腐は、和牛の旨味と山椒の香りが絶妙に調和した逸品です。価格も1300円と手頃で、満足度の高い一品です。神楽坂エリアで本格的な中華料理を楽しみたい方には、ぜひおすすめしたいお店です。


次回のグルメレポートもお楽しみに!

DuckDuckGo Searchもちゃんと機能してる。いい感じ!

チャットフローを使ったグルメレポートbotの作成

設計の変更点

次は、チャットフローを使ってグルメレポートを書いてみる
チャット形式なので、入力方法を変更する必要がありそう

完成品

完成品
会話の内容から食べ物のことを話しているか判定するために、パラメータ抽出を間に挟み、取得したデータによって処理を変更した
パラメータ抽出部分の設定
パラメータ抽出部分の設定
必要な情報を会話から取得できるように設定する
後の設計はワークフローとほぼ同じ
チャットフローを使用することで、より自然な対話形式でグルメレポートを作成することができた。ユーザーとの対話を通じて必要な情報を収集し、それに基づいてレポートを生成する仕組みになっている

実行結果と出力例

出力

出力結果

グルメレポート:福全徳の和牛麻婆豆腐

神楽坂に位置する「福全徳」は、本格的な広東料理を提供する名店として知られています。今回、私がこの店でいただいたのは、「和牛麻婆豆腐」。価格は1300円と非常にリーズナブルです。

料理の紹介

「和牛麻婆豆腐」は、その名の通り和牛を使用した贅沢な一品です。見た目からして食欲をそそる、赤みがかった麻婆ソースの中に、ぷりぷりとした豆腐がたっぷりと入っています。和牛の旨味がしっかりと染み込んだソースは、辛さの中にもコクがあり、絶妙なバランスを感じさせます。

味の感想

まず一口食べて感じたのは、山椒の爽やかな辛味です。この山椒の風味が麻婆豆腐全体に深みを与え、一度食べるとやみつきになります。和牛の柔らかい食感と豊かな風味が、豆腐との相性も抜群で、一緒に提供される白ご飯ともよく合います。

他のお客さんも「ぴりりときいた山椒が絶妙でした!また食べに行きたい!」と高く評価しているのも納得です。

総評

価格も1300円と非常にお手頃で、このクオリティの和牛麻婆豆腐を楽しめるとは驚きです。福全徳のシェフが長年培った技術とセンスが光る一品であり、ぜひ一度足を運んでみてはいかがでしょうか。

店舗情報

  • 店名: 福全徳
  • 住所: 東京都新宿区神楽坂3-1-26
  • 電話番号: 050-5487-5789

最後に、福全徳は本格的な広東料理を提供するだけでなく、和牛麻婆豆腐のような独創的なメニューも楽しめるお店です。おいしい料理と共に、素敵なひと時を過ごしてみてください。

パラメータ抽出がうまくいってそう!
会話からお店の情報を取得してレポートに補足されてる

情報不足時の挙動

  • 料理名が取得できない場合
    猫かわいい

料理名がわからないとレポートは作成されない

  • 店名が取得できない場合
    スパゲティおいしい

ネット検索していないから、レポート内容が少ない
そして、もう少し情報が欲しいとbotが言ってくれる

ワークフローとチャットフローの使い分け

グルメレポートbotをワークフローとチャットフローの両方で作成した結果、それぞれに特徴と適した用途があることが判明

ワークフローの適用例

  1. 構造化されたデータ入力: 食べ物、店名、価格、コメントなど、必要な情報を明確に定義し入力可能
  2. 外部検索の容易な統合: DuckDuckGo Searchのような外部サービスを簡単にフローに組み込むことができる
  3. バッチ処理に適している: 一度に複数のレポートを生成するような場合に効率的
  4. 自動化: 定期的なレポート生成や、特定の条件下での自動実行に適していそう
    適した用途:
  • 定型的なグルメレポートの大量生成
  • レストランデータベースの自動更新
  • 定期的な料理トレンド分析レポートの作成

チャットフローの適用例

  1. 自然な会話形式: ユーザーとの対話を通じて必要な情報を収集
  2. 柔軟な情報抽出: パラメータ抽出機能により、会話から必要な情報を柔軟に取得できる
  3. インタラクティブな対応: 情報が不足している場合、追加の質問が可能
  4. 文脈の理解: 会話の流れを踏まえた応答が可能
    適した用途:
  • カスタマイズされたグルメレコメンデーション
  • ユーザーの好みや制約に応じたレストラン提案
  • 料理や食事体験についての詳細な質問応答

選択のポイント

  1. 情報の明確さ: 必要な情報が明確で構造化されている場合はワークフロー、より柔軟な情報収集が必要な場合はチャットフローが適切っぽい
  2. ユーザーインターフェース: 定型フォームでの入力が適している場合はワークフロー、自然な会話形式が好ましい場合はチャットフローを選択
  3. 処理の複雑さ: 外部サービスとの連携や複雑な条件分岐が必要な場合はワークフロー、対話を通じた柔軟な情報処理が必要な場合はチャットフローが有利
  4. スケーラビリティ: 大量のデータを効率的に処理する必要がある場合はワークフロー、個別のユーザー対応が重要な場合はチャットフローが適切
  5. 更新頻度: 頻繁な更新や調整が必要な場合はチャットフローの方が柔軟に対応可能
    最終的に、プロジェクトの目的、対象ユーザー、必要な機能を考慮し、適切な方法を選択することが重要。場合によっては、ワークフローとチャットフローを組み合わせて使用することで、より効果的なソリューションを構築できる可能性がある

まとめと今後の展望

本記事では、Difyを使ってグルメレポートbotを作成し、ワークフローとチャットフローの特徴と使い分けについて探りました。
ここで、主要なポイントを振り返る

  1. ワークフローの強み
  • 構造化されたデータ入力
  • 外部サービスとの容易な統合
  • バッチ処理と自動化に適している
  1. チャットフローの強み
  • 自然な会話形式での情報収集
  • 柔軟な情報抽出
  • インタラクティブな対応が可能
  1. 使い分けのポイント
  • 情報の明確さ
  • ユーザーインターフェースの要件
  • 処理の複雑さ
  • スケーラビリティ
  • 更新頻度
  1. 実践で得られた知見
  • ワークフローは定型的なレポート生成に適している
  • チャットフローはユーザーとの対話を通じた柔軟なレポート作成に適している
  • 両者を組み合わせることで、より効果的なソリューションを構築できる可能性がある

今後の展望として、Difyはその使いやすさと柔軟性から、様々な分野でのAIアプリケーション開発を加速させる可能性があります。
こんなことできるかも:

  • カスタマーサポートの自動化
  • パーソナライズされた製品レコメンデーション
  • データ分析レポートの自動生成
  • 教育支援ツールの開発

Difyの発展とともに、AIアプリケーション開発の敷居がさらに下がり、より多くの人々がAI技術の恩恵を受けられるようになるだろう。
皆さんも、Difyを使って独自のAIアプリケーションを作ってみてはいかがでしょうか?

リバナレテックブログ

Discussion