Dify入門ガイド:ワークフロー構築&ブロック紹介

こんにちは、サイオステクノロジーの織田です。今回はDifyでワークフローを構築する方法、ワークフローで使えるブロックの紹介を行っていきます。Difyをまだ導入できていない方はコチラを参考にやってみてください!

ワークフローの構築方法

Difyで生成AIツールを作成する際、「チャットフロー」と「ワークフロー」の2種類の方法が使えます。

  • チャットフロー:簡単な操作で実装可能。詳細な動作を指定に不向き
  • ワークフロー:外部データの参照、条件分岐をノーコードで実装可能

ワークフローは以下の写真の通り、いくつかのブロックをつなげることで構築します。それぞれのブロックが「外部情報を参照する」「条件分岐をする」といった役割を分担し、1つのアプリとして機能します。

遷移先のブロックを追加したいときは+ボタンをクリックします。また、画面上にあるブロック同士を接続したい場合は+ボタンをドラッグアンドドロップすることで接続することもできます。

ブロックの紹介

それでは、ワークフロー中に組み込むことができるブロックを紹介したいと思います。今回は基本的なワークフローを構築できるように、使われる頻度が高いブロックに絞ってご紹介します。ここで紹介していないブロックもたくさんあるので、是非調べて使ってみてください。

開始

開始ブロックは、ワークフローの先頭に配置するブロックです。このブロックを使うことで様々な条件でワークフローを開始させられます。例えば、「ユーザが短文を入力したとき」や「ファイルを添付したら」などの条件を設定できます。

どのようなフローを作る際にも必ず最初に配置しましょう。

入力フィールドの編集ボタン🖊からクエリの条件を設定可能
短文やファイルなどの条件が設定可能

LLM

LLMブロックはGPTやGeminiといったLLMを呼び出すことができます。このブロックを使うと以下の機能が実装できます。

  • テキスト生成
  • 質問回答
  • 情報要約

AIにどのようなプロンプトを渡すのかも、このブロックで指定することができます。

生成例1:LLMに質問を渡すことで回答が返却されている

知識取得

知識取得ブロックを用いることで外部の情報を取り込むことができます。このブロックを使用する場合は、事前にデータベースやテキストファイル、pdfなどの資料をナレッジとして登録します。そして知識取得ブロックで登録したナレッジを指定することで外部情報を読み込んだ上で回答生成をさせることができます。

知識取得を用いることで、LLM単体では応答できないような質問にも答えられるようになります。たとえば、社内規約や仕様書などのクローズドなドキュメントを参照して質問に回答が可能になります。

終了

終了ブロックはワークフローの最後に設置するブロックです。このブロックを設置することで出力文を表示させることもできます。開始ブロックと同じくどのようなフローを作る場合にも必ず最後に設置しましょう。チャットフロー作成時には代わりに回答ブロックを使用します。

ワークフローでは終了ブロックを使います
チャットフローでは回答ブロックを使います

質問分類器

質問分類器は、ユーザーの質問を自動的に分類するブロックです。私が作成したフローでは、ユーザからの質問が富山県に関連があるか否かを判定させています。そして、判定の結果に応じて次に遷移するブロックが変化します。

このブロックを使うことで、ユーザの質問に応じて適切な処理を走らせることができます。分類条件の設定方法も簡単で、単に「富山県に関係する」とだけ書くだけでOKです。「富山県の県庁所在地を教えて」や「富山の名所を教えて」と質問すると富山県に関係ある質問として分類されました。

比較1:富山の魅力を尋ねると富山県に関係ある質問として分類されました。
比較2:福井の魅力を尋ねると富山県に関係ない質問として分類されました。

IF/ELSE

IF/ELSEブロックを使うことで条件分岐を実装できます。例えば、以下ではユーザーからの入力に「富山」が含まれるか否かで条件分岐を設定しています。

  • 「富山」が含まれる場合:IFに繋がるブロック
  • 「富山」が含まれない場合:ELSEに繋がるブロック

こちらも質問分類器と同じく自然言語で条件を設定できます。また、「OOを含む」という条件以外にも、「XXを含まない」や「OOから始まる」というように色々な条件が設定可能になっています。

生成例2:文中に?が含まれるか否かで分岐させる。条件ごとに異なる結果が返却されている。

コード

コードブロックは、PythonやJavaScriptなどのコードを実行するためのブロックです。他のブロックでは対応できない複雑なロジックや外部APIとの連携などを実現できます。たとえば、PythonやJavaScriptでリストを作成すれば、後述のイテレーションがより使いやすくできます。

イテレーション

イテレーションブロックは繰り返し処理のためのブロックです。このブロックを使うことで、同じアクションを複数回行うことができます。先述のコードと組み合わせてリスト内のデータ1つ1つについて同じ処理をしたり、指定した回数同じ処理をしたりといったことに使えます。

生成例3:同じ質問への回答を子供向け、大人向けにそれぞれ生成。

テンプレート

テンプレートブロックは、文字通りテンプレート(事前に用意した文章)を使うための文字列です。

使い方としては、以下のようにエラーメッセージの出力に使えます。また、変数とテンプレートを組み合わせることもできます。テンプレートを使うことで、出力の体裁を整えることができます。

富山県に関係のない質問が入力された場合に、同一のエラーメッセージを送信できます。

最後に

今回はDifyのワークフロー構築について、利用可能なブロックの紹介も交えながら説明しました。Difyはノーコードで様々なAIツールが作成できる便利なプラットフォームです。今回紹介したブロック以外にも様々なブロックが用意されています。ぜひ色々なブロックを実施に触って、あなただけのオリジナルなワークフローを作ってみましょう!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です