Difyにおける深層研究ワークフロー：ステップバイステップガイド

> 著者：Evan Chen（プロダクトマネージャー） & Jing Yan（テクニカルライター）
> Difyを使って、**ループ変数、構造化出力、およびエージェントノード**、その三つの主要な要素を活用し、深層研究ワークフローを構築する方法を学びましょう。

標準の検索クエリでは、複雑な問題に対して十分な効果を発揮できません。学術論文、市場分析、またはコードのデバッグにおいて、完全な回答を見つけるためには通常、数十回の別々の検索を組み合わせる必要があります。そこで、日常的な課題を直接解決する **深層研究** が登場します。主要な人工知能プラットフォーム（Google Gemini、ChatGPT、DeepSeek-R1など）は、この強力な機能を提供しています。

深層研究は、効率を向上させるスマートなフィードバックループを通じて際立っています。このフィードバックメカニズムにより、システムは知識のギャップを特定し、特定の質問に対して注目して探求します。情報を断片化する従来の検索とは異なり、深層研究は広範囲の情報を探索し、深く掘り下げた回答やレポートを提供します。

このガイドでは、Difyを使用して深層研究ワークフローを構築する方法を具体的に説明します。

## ワークフローの概観
Difyの深層研究ワークフローは、次の三つのフェーズで構成されています。

* **意図認識**：ワークフローはリサーチトピックを捉え、初期のコンテキストを収集し、目標を分析して明確な方向性を確立します。
* **反復探求**：ワークフローはループ変数を使って知識を評価し、ギャップを見つけ、ターゲットを絞った検索を行い、研究内容を段階的に構築します。
* **統合**：収集した情報をもとに、適切な引用が含まれた構造化レポートが作成されます。

専門家の研究者の思考プロセスを模倣しています。「私は何を既に知っているのか？何が欠けているのか？次はどこを調べるべきか？」

## フェーズ1：研究の基盤
### スタートノード
重要な入力パラメータで「スタートノード」を設定する必要があります：

* 研究トピック（research_topic）：探求すべき中心的な質問
* 最大ループ数（max_loop）：この研究セッションのイテレーション予算

![start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/30b2bebd-fcc2-40c8-bb8f-e25d0fe91264.png)

### 基礎知識の取得
**Exa Answer** ツールを使用して初期情報を収集することを推奨します。これにより、モデルが用語を理解した上でさらに深掘りできます。

![exa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/8f0f09c5-bbb3-4694-824a-9b6f3a6aa61f.png)

### 意図分析
ユーザーの真の意図を掘り起こすために**LLM**ノードを活用して、表面的な質問とさらなる情報のニーズを区別する必要があります。

![intent analysis.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/3bb7fab9-9746-4f83-a5c8-493435e3fd82.png)

## フェーズ2：ダイナミックな研究サイクル
### ループノード：研究エンジン
[**ループノード**](https://docs.dify.ai/ja-jp/guides/workflow/node/loop)は、研究全体を支える重要な要素として機能します。Difyでは、各サイクルが前回の発見に基づいて情報を継承し、調整します。

この深層研究ワークフローは、六つの重要な変数を追跡しています：

* **findings**：各サイクルで新たに得られた知識
* **executed_querys**：以前に使用した検索クエリ（重複を防ぐため）
* **current_loop**：イテレーションカウンター
* **visited_urls**：出典管理用のURL追跡
* **image_urls**：視覚資料のメタデータ
* **knowledge_gaps**：追加調査が必要な情報ギャップ

![loop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/e9e0e7f1-887a-4c6b-98d9-40ef5d7f69eb.png)

ループ変数は、通常の変数と根本的に異なるデザインを持っています。ノードは現在のイテレーションと前のイテレーションの出力にアクセスできるため、知識が蓄積され、無駄な作業が避けられ、各サイクルで焦点が明確になります。

![Frame 2280.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/7f6f254c-b5c8-4ac7-b338-b7c1bd891b1a.png)

### 推論ノード：より良い質問の発見
[推論ノード](https://docs.dify.ai/ja-jp/guides/workflow/structured-outputs)は、情報の組織化のための構造化出力形式で機能します：

```JSON
{
    "reasoning": "選択されたアクションパスに対する詳細な正当化...",
    "search_query": "知識のギャップをターゲットにした具体的なフォローアップ質問",
    "knowledge_gaps": "元の質問に答えるためにまだ必要な情報"
}
```

Difyの構造化出力エディタをLLMノードで有効にすることで、信頼性のあるJSONを受け取ることができ、次のノードが確実に処理できます。これにより、推論パス、検索ターゲット、知識のギャップをクリーンに抽出できるようになります。

![reasoning.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/8188d190-7e02-40c3-80d4-5018c2bf14ac.png)
![struct_out1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/93a1d146-04b3-418b-a09f-0471f521551e.png)
![struct_out2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/ffc902b5-8af3-4004-9189-e34fd47167cc.png)

#### エージェントノード：リサーチの実行
良い質問は始まりに過ぎません。効果的な研究には決断力が必要で、エージェントノードがその役割を果たします。

これらのノードは、各コンテキストに最も適したツールを選択する自律的な研究者として機能します。私たちのワークフローは、[**エージェント**](https://docs.dify.ai/ja-jp/guides/workflow/node/agent)に以下の機能を提供します。

#### 発見ツール
* **exa_search**：ウェブ検索を行い、結果を収集
* **exa_content**：特定のソースから完全なコンテンツを取得

#### 分析ツール
* **think**：ClaudeのThink Toolに触発されたシステムの反射エンジンです。これにより、エージェントは発見内容を評価し、パターンを特定し、次のステップを決定できます。

エージェントに必要なものだけを提供することでパフォーマンスを最適化できます。非常に特定の情報（前のLLMノードからのsearch_query）のみを提供するのです。この集中したアプローチは、ツールの選択精度を向上させます。

![act.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/8a7af625-a429-4ba0-bb74-db5bcc6685e6.png)

### URLの抽出
ワークフローは、エージェントの応答から自動的にURLと視覚的参照を特定し、すべての情報源を適切に追跡します。

![url_ext.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/ab73fd9e-6b7c-46e2-baec-01be49b2a28f.png)

各イテレーションで、エージェントは情報を収集し、コンテンツを処理し、発見を統合することで、完全な研究サイクルを完了します。

### 変数の割り当て
各サイクルの後、**変数代入**ノードが研究の進捗状態を更新します。これにより、各イテレーションは前回の作業に基づいて構築され、無駄な労力を回避します。

![var_ass.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/7b1fa86d-42ab-42af-8626-e67d1c9438af.png)

## フェーズ3：研究の統合
複数の探求サイクルが終了した後、**最終結果**が収集した変数（発見内容、ソース、支持データ）をもとに、包括的なレポートを生成します。

このノードは適切なMarkdown引用を維持し、完全な参考リストをまとめます。また、ワークフローは研究全体を通じて適時更新を提供するために、戦略的なポイントで**回答**ノードを設けています。これらの更新は、精度のある分析を伴う最終レポートの構築に寄与します。

![final.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3924419/eac08eb9-abbe-48cd-9b7b-de817c8322e6.png)

## 結論
この深層研究ガイドでは、Difyのエージェントワークフローが何を達成できるかを示しています。私たちは専門家の研究方法をデジタル化し、自動化を通じて加速させました。

研究の未来は、単にデータを増やすことではありません。それは、よりスマートにそれを探求する方法を意味します。今すぐこれらのパターンを取り入れ、あなた自身の研究エンジンを構築してください。

## 参考文献
* [Dify GitHub](https://github.com/dzhng/deep-research)
* [Jina AI の Node DeepResearch](https://github.com/jina-ai/node-DeepResearch)
* [Langchain AIによるローカル深層研究](https://github.com/langchain-ai/local-deep-researcher)
* [Open Deep Research](https://github.com/nickscamara/open-deep-research)