[Dify] 3. スタジオでLLMの処理フローを作成する
執筆日
2025/07/19
概要
今更Dify第3弾です。初期はたぶんなかったと思うのですが、マルチエージェント時代に対応するためにGUIで簡単にLLMとナレッジの接続を構築し処理フローを作成できるようになっていました。
前提
作業
フローを作成する
ヘッダーからスタジオを選択するとフロー作成ができます。
ワークフロー・チャットフロー・チャットボット・エージェント・テキスト生成とありますが………全部一緒です、たぶん。ワークフローは最終的な動作が回答の返却である必要がないくらいの違いはありますが、作っている分には特に違いがないので気にしなくてもいいと思います。おそらく初期の入力値が違うくらい?チャットボット・エージェント・テキスト生成で作成したらチャットフローに追加されました。
とりあえずチャットフローを選択して最初から作成してみます。プリセットとして以下のようなフローが作成されました。リクエストのquery
とfiles
がLLMに渡されていますね。
[▷プレビュー]を押すと現在のフローをテストできます。
ノードを追加していってこんなフローを作ってみました。
最初のLLMノードでユーザーの質問を検索クエリに変換してもらいます。構造化出力でクエリを抽出。
知識検索ではLLMが作った構造化出力のクエリを検索変数に設定して、前回作ったナレッジに検索をかけます。
最後にもう一度LLMに検索結果をコンテキストにしてユーザー質問に回答してもらいます。
[コンテキスト]に検索結果を追加した場合、[SYSTEM]のプロンプトにも{x}
からコンテキストを選択してシステムプロンプトのどこにコンテキストを挿入するか決める必要があります。
(検索のresult
の中にはcontent
, title
, url
, icon
, metadata
がありますがコンテキストに選択できるのはresult
だけのようです)
プレビューでテストしてみましょう。
HWSには僕よりもAzure OpenAIに詳しい人が沢山いるようです。(クエリに執筆者が入ってしまったので最初のクエリ生成LLMへの指示チューニング不足感がありますね)
その他機能
今回の解説ではLLMと知識検索の簡単なノード追加だけで、一直線の簡単なフローを作成しましたが他にも様々な機能があります。思った以上に自由度高く作りこめて楽しそうです。
- コメント: フロー図にコメントを追加できます。
- 画像出力: 作ったフローを画像出力できます。上記コメントも含めて、透過画像なども作れるのでフロー説明資料も簡単に作れます。
- 質問分類器: LLMに質問を分類させて複数作成されている次のタスクノードに分岐させられます。
- HTTPリクエスト: HTTPリクエストを送信し、Responseを次のノードに渡すことが出来ます。リクエストの実行自体を目的としたフローを作ってもいいですね。
-
ロジック: 一般的なプログラミングにおける
if
,for
,while
的な処理を前のノードの出力を使って作ることもできます。 - コード実行: 上記ロジックよりも複雑なロジックを実際のコードで実装できます。PythonとJavaScriptが使用できます。やろうと思えばここで無理矢理LLM呼び出しコード書いちゃうこともできますね。
感想
最近色々頑張って一から作っていたものが簡単に作れそうで感動。
書いたコードやフローってどこにどんな形で保存されるかわかれば、検索をDifyから切り離してDifyを立ち上げずに使うこともできそうだなと思うくらいにはこのフロー作成機能良かったです。
とりあえず最低限やりたかった第3弾まで書きました。次回以降は気が向いたら書こうと思います。
書きたいものリスト
- チャットフローのAPIをStreamlitなどで簡単なチャットボットアプリに統合してみる → 書いた
- クラウド(Azure)上へのデプロイ・必要なリソースまとめ
- 外部ナレッジ接続(Azure AI Search等)
- MCPサーバー接続
- プラグイン管理
- API・コード拡張
- ライセンス(追加条件付きのApache 2.0ベースのライセンス)
参考
Discussion