> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# レッスン 8：エージェントノード

> このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/learn/tutorials/workflow-101/lesson-08) を参照してください。

ここまでのレッスンで、メールアシスタントに施してきたアップグレードを振り返ってみましょう。

* 調べる力を習得：ナレッジベースを検索できるようになりました
* 判断する力を習得：条件分岐で意思決定ができるようになりました
* 複数タスクの処理力を習得：イテレーションで複数の質問を処理できるようになりました
* ツールの活用力を習得：Google 検索でインターネットにアクセスできるようになりました

お気づきかもしれませんが、ワークフローはもはや単純な一直線（ステップ 1 → ステップ 2 → ステップ 3）ではなくなっています。

分析し、判断し、さまざまな能力を呼び出して問題を解決するシステムへと進化しています。この高度なパターンこそが、エージェンティックワークフローと呼ばれるものです。

## エージェンティックワークフロー

エージェンティックワークフローは、単なる「入力 > 処理 > 出力」ではありません。

思考、計画、ツールの使用、結果に基づく調整といった一連のステップを含みます。AI を単純な実行者（指示に従うだけ）から、自律的に問題を解決するインテリジェントなエージェントへと変貌させます。

## エージェントストラテジー

エージェントをよりスマートに動作させるために、研究者たちはさまざまな*ストラテジー*を設計しました。これらはエージェントを導く異なる思考モードのようなものです。

* **ReAct (Reason + Act)**

  *考えてから行動する*アプローチです。エージェントは思考し（何をすべきか？）、行動し（ツールを呼び出す）、結果を観察し、再び思考します。タスクが完了するまでこのループを繰り返します。
* **Plan-and-Execute**

  まず全体の計画を立て、それをステップごとに実行します。
* **Chain of Thought (CoT)**

  回答を出す前に推論のステップを書き出すことで、精度を向上させます。
* **Self-Correction**

  自身の出力をチェックし、間違いを修正します。
* **Memory**

  エージェントに短期記憶や長期記憶を持たせることで、過去の会話や重要な情報を思い出せるようになり、より一貫性のある、パーソナライズされた応答が可能になります。

レッスン 7 では、ナレッジ検索 → LLM で判断 → If/Else → 検索という流れを手動で構築しました。動作はしましたが、構築が複雑でした。

もっと簡単な方法はないでしょうか？あります。それがこちらです。

## エージェントノード

エージェントノードは、高度にパッケージ化されたインテリジェントなユニットです。

指示を通じて目標（Goal）を設定し、必要となりそうなツール（Tools）を提供するだけで、内部で自律的に思考、計画、選択、ツール呼び出しを行います（選択したエージェントストラテジー（例：ReAct）やモデルの Function Calling 機能を活用）。設定した目標が達成されるまで、このプロセスを続けます。

Dify では、これにより複雑なエージェンティックワークフローの構築プロセスが大幅に簡素化されます。

## ハンズオン 1：エージェントノードで構築する

目標は、イテレーションループ内の複雑な手動ロジックを、1 つのスマートなエージェントノードに置き換えることです。

<Steps>
  <Step title="イテレーションを整理する">
    イテレーションのサブプロセスに移動します。ナレッジ検索ノードを残し、それ以外のノードを削除します。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/iteration.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=76c82595da45c3229dc11d043e4dfb9e" alt="イテレーション" width="1168" height="466" data-path="images/use-dify/tutorial/workflow-101-lesson-08/iteration.png" />
    </Frame>
  </Step>

  <Step title="エージェントノードを追加する">
    ナレッジ検索ノードの直後にエージェントノードを追加します。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/add-agent-node.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=65c2af311d7340c9574e0504e0d31b92" alt="エージェントノードを追加" width="1168" height="466" data-path="images/use-dify/tutorial/workflow-101-lesson-08/add-agent-node.png" />
    </Frame>
  </Step>

  <Step title="エージェントストラテジーをインストールする">
    まだ使用したことがないため、マーケットプレイスからストラテジーをインストールする必要があります。

    エージェントノードをクリックします。右側のパネルで「Agent Strategy」を探し、「Find more in Marketplace」をクリックします。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/search-agent-strategy.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=8d40395b15a9b1a715fc6897c6ed6b35" alt="エージェントストラテジーを検索" width="1168" height="904" data-path="images/use-dify/tutorial/workflow-101-lesson-08/search-agent-strategy.png" />
    </Frame>
  </Step>

  <Step title="エージェントストラテジーを選択する">
    マーケットプレイスで Dify Agent Strategy を見つけてインストールします。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/choose-agent-node.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=95f2dc8d8db419f44994f2586f69b730" alt="エージェントストラテジーを選択" width="2940" height="1000" data-path="images/use-dify/tutorial/workflow-101-lesson-08/choose-agent-node.png" />
    </Frame>
  </Step>

  <Step title="ReAct を選択する">
    ワークフローに戻り（必要に応じてページを更新）、Agent Strategy の下で ReAct を選択します。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/select-react.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=9ece9031b93a4a32bd65d3e61be372fb" alt="ReAct を選択" width="1395" height="848" data-path="images/use-dify/tutorial/workflow-101-lesson-08/select-react.png" />
    </Frame>

    **なぜ ReAct を選ぶのか？**

    ReAct（Reason + Act）は、人間の問題解決を模倣した「思考 → 行動 → 確認」のループを使うストラテジーです。

    1. Reason：エージェントが\*次に何をすべきか？\*を考えます（例：ナレッジベースを確認する）。
    2. Act：そのアクションを実行します。
    3. Observe：結果を確認します。回答が見つからなければ、サイクルを繰り返します（例：*Google で検索する必要がある*）。

    この「考えながら行動する」アプローチは、次のステップが前のステップの結果に依存する複雑なタスクに最適です。
  </Step>

  <Step title="モデルを選択する">
    ReAct は思考ストラテジーですが、実際にアクション部分を実行するには、AI に適切な「物理的」スキルが必要です。これが **Function Calling** と呼ばれるものです。Function Calling をサポートするモデルを選択します。ここでは gpt-5 を選択します。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/choose-a-model.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=ed0802be1ce1cb525cad41e392d385b0" alt="モデルを選択" width="1136" height="620" data-path="images/use-dify/tutorial/workflow-101-lesson-08/choose-a-model.png" />
    </Frame>

    **なぜ Function Calling が必要なのか？**

    エージェントノードのコア機能の 1 つは、自律的にツールを呼び出すことです。Function Calling は、モデルが提供されたツール（Google 検索など）をいつ、どのように使用するかを理解するための重要な技術です。

    モデルがこの機能をサポートしていない場合、エージェントはツールと効果的にやり取りできず、自律的な意思決定能力のほとんどを失ってしまいます。
  </Step>

  <Step title="ツールを追加する">
    エージェントノードをクリックします。ツールリストのプラス（+）アイコンをクリックし、Google Search を選択します。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/add-tool.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=be14ced748ce02515f614ffdffe5bc5a" alt="ツールを追加" width="1136" height="810" data-path="images/use-dify/tutorial/workflow-101-lesson-08/add-tool.png" />
    </Frame>
  </Step>

  <Step title="指示を追加する">
    提供するツールとコンテキストを使って何をすべきかを、エージェントに具体的に伝える必要があります。以下の指示を Instruction フィールドに貼り付けてください。

    ```plaintext wrap theme={null}
    Goal: Answer user questions about Dify products.

    Steps:
    1. I have provided a relevant internal knowledge base retrieval result. First, judge if this result can fully answer the user's questions.
    2. If the context clearly answers it, generate the final answer based on the context.
    3. If the answer is insufficient or irrelevant, use the Google Search tool to find the latest information and generate the answer based on search results.

    Requirement: Keep the final answer concise and accurate.
    ```

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/add-instructions.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=fa09eff27c316d593201a91bd261e9ec" alt="指示を追加" width="1106" height="940" data-path="images/use-dify/tutorial/workflow-101-lesson-08/add-instructions.png" />
    </Frame>
  </Step>

  <Step title="コンテキストとクエリ">
    ここでの設定は、エージェントがデータを参照するために非常に重要です。

    * **コンテキスト**：ナレッジ検索ノードから `Knowledge Retrieval / (x) result Array[Object]` を選択します（これによりナレッジベースの内容がエージェントに渡されます）。
    * **クエリ**：イテレーションノードから `Iteration/{x} item` を選択します。

    **なぜ元の email\_content ではなく item を使うのか？**

    パラメータ抽出器を使って `email_content` から質問リスト（`question_list`）を抽出したことを思い出してください。イテレーションノードはこのリストを 1 つずつ処理しており、item は現在処理中の個別の質問を表しています。

    item をクエリ入力として使用することで、エージェントが現在のタスクに集中でき、意思決定とアクションの精度が向上します。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/context-and-query.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=8877f18bde5e2538c2ea63d34eb2dca1" alt="コンテキストとクエリ" width="1106" height="346" data-path="images/use-dify/tutorial/workflow-101-lesson-08/context-and-query.png" />
    </Frame>
  </Step>

  <Step title="イテレーションの出力を設定する">
    出力変数として `Agent/{x}text String` をクリックします。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/iteration-output.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=528de73fddc8886d3d69c7cc1a952c78" alt="イテレーション出力を設定" width="1150" height="594" data-path="images/use-dify/tutorial/workflow-101-lesson-08/iteration-output.png" />
    </Frame>
  </Step>
</Steps>

<Check>
  🎉 イテレーションノードのアップグレードが完了しました。
</Check>

イテレーションノードは回答のリストを生成するため、それらを 1 つのメールにまとめ直す必要があります。

## ハンズオン 2：最終組み立て

<Steps>
  <Step title="最終編集者（LLM）">
    1. イテレーションノードの後に LLM ノードを追加します。

    2. ノードをクリックし、システムにプロンプトを入力します。以下のプロンプトを参考にするか、自由に編集してください。

       ```plaintext wrap theme={null}
       Combine all answers for the original email.
       Write a complete, clear, and friendly reply to the customer.
       Signature: Anne
       ```

    3. User Message に answers、email content、customer name をそれぞれ対応する変数に置き換えて追加します。現在の LLM ノードは以下のようになります。

           <Frame>
             <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/final-llm.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=d8e72ea267db69e7811cf92a24c6521d" alt="最終 LLM" width="1492" height="1024" data-path="images/use-dify/tutorial/workflow-101-lesson-08/final-llm.png" />
           </Frame>
  </Step>

  <Step title="出力ノードを追加する">
    出力変数を LLM の text に設定し、`email_reply` と名付けます。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/add-output-node.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=498e1e51ab6d5dbbfcb51ddd0a93989c" alt="出力ノードを追加" width="1106" height="450" data-path="images/use-dify/tutorial/workflow-101-lesson-08/add-output-node.png" />
    </Frame>
  </Step>
</Steps>

最終的なワークフローがこちらです。

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8/W-660XSNevX1HYUo/images/use-dify/tutorial/workflow-101-lesson-08/final-workflow.png?fit=max&auto=format&n=W-660XSNevX1HYUo&q=85&s=225e9d6fa6f24dfb0666d7f5f1da0351" alt="最終ワークフロー" width="2466" height="488" data-path="images/use-dify/tutorial/workflow-101-lesson-08/final-workflow.png" />
</Frame>

**テスト実行** をクリックします。さまざまな質問を混ぜて入力してみてください。エージェントノードがコンテキストを使うタイミングと Google 検索を使うタイミングをどのように自律的に判断するか観察しましょう。

## ミニチャレンジ

1. エージェントノードを使ってイテレーションループ全体を置き換えることはできるでしょうか？質問リストを一度にまとめて処理するプロンプトをどのように設計しますか？
2. エージェントの*コンテキスト*フィールドに他にどのような情報を与えれば、より良い判断ができるようになるでしょうか？
