---
title: 反復処理（イテレーション）
---

### 定義

配列に対して複数のステップを実行し、すべての結果を出力すること。

イテレーションステップはリスト中の各項目に対して同じステップを実行します。イテレーションを使用する条件は、入力値がリストオブジェクトとしてフォーマットされていることを確認することです。イテレーションノードは、AIワークフローにより複雑な処理ロジックを取り入れることを可能にします。イテレーションノードはループノードの親しみやすいバージョンであり、非技術ユーザーが迅速に始められるようにカスタマイズの程度を調整しています。

***

### シナリオ

#### **例1：長文イテレーション生成器**

<Frame caption="长故事生成器">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/3a403551d48b178d0a41ce2a5748dd2d.png" alt="长故事生成器流程图" />
</Frame>

1. **開始ノード** 内にタイトルとアウトラインを入力
2. **コードノード** を使用してユーザー入力から完全な内容を抽出
3. **パラメータ抽出ノード** を使用して完全な内容を配列形式に変換
4. **イテレーションノード** でラップされた **LLM ノード** を通じて各章の内容を複数回生成
5. イテレーションノード内に **直接応答ノード** を追加して、各イテレーション生成の後にストリーム出力を行う

**具体的な設定ステップ**

1. **開始ノード** にタイトル（title）とアウトライン（outline）を設定；

<Frame caption="開始ノードの設定" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/a5f4c1b7dea3f6d86a9548bd8712eebb.png" alt="开始节点配置界面" />
</Frame>

2. **Jinja-2 テンプレートノード** を使用してタイトルとアウトラインを完全なテキストに変換；

<Frame caption="テンプレートノード" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/52aac7a8678aa2594c52c15f347b385a.png" alt="LLM节点配置界面" />
</Frame>

3. **パラメータ抽出ノード** を使用して、ストーリーテキストを配列（Array）構造に変換。抽出パラメータは `sections`、パラメータタイプは `Array[Object]`

<Frame caption="パラメータ抽出" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/d3beee536ff3c35f4e1eb1ab610f35d7.png" alt="参数提取节点配置界面" />
</Frame>

<Note>
  パラメータ抽出の効果はモデル推論能力と指示に影響されます。推論能力が高いモデルを使用し、**指示** 内に例を追加することでパラメータ抽出の効果を向上させることができます。
</Note>

4. ストーリーアウトラインの配列形式をイテレーションノードの入力として使用し、イテレーションノード内で **LLM ノード** を使用して処理

<Frame caption="イテレーションノードの設定" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/ac91582998868004b298afe2f04e5589.png" alt="迭代节点配置界面" />
</Frame>

LLM ノード内で入力変数 `GenerateOverallOutline/output` と `Iteration/item` を設定

<Frame caption="LLMノードの設定" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/d849ff9164482a83ea8a091fde9cb4d1.png" alt="LLM节点内部配置界面" />
</Frame>

<Note>
イテレーションの組み込み変数：`items[object]` と `index[number]`

`items[object]` は各イテレーションの入力項目を表します；

`index[number]` は現在のイテレーションのラウンドを表します；
</Note>

5. イテレーションノード内に **直接応答ノード** を設定して、各イテレーション生成の後にストリーム出力を実現。

<Frame caption="Answerノードの設定" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/64da09ab904f74c8ec45e098c81f95be.png" alt="直接回复节点配置界面" />
</Frame>

6. 完全なデバッグとプレビュー

<Frame caption="ストーリー章ごとの多段イテレーション生成">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/f443508d9ecc6d30094297243f590e6a.png" alt="完整调试和预览界面" />
</Frame>

#### **例2：長文イテレーション生成器（別の編成方法）**

<Frame caption="長文イテレーション生成器（別の編成方法）">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/6e973b52bb3960bf948f92df8ae2f910.png" alt="长文章迭代生成器另一种编排方式流程图" />
</Frame>

* **開始ノード** にタイトルとアウトラインを入力
* **LLM ノード** を使用して小見出しと対応する内容を生成
* **コードノード** を使用して完全な内容を配列形式に変換
* **イテレーションノード** でラップされた **LLM ノード** を通じて各章の内容を複数回生成
* **テンプレート変換ノード** を使用してイテレーションノードが出力する文字列配列を文字列に変換
* 最後に **直接応答ノード** を追加して変換後の文字列を直接出力

### 配列の内容とは

リストは特定のデータ型であり、要素はコンマで区切られ、 `[` で始まり `]` で終わります。例えば：

**数値型：**

```
[0,1,2,3,4,5]
```

**文字列型：**

```
["monday", "Tuesday", "Wednesday", "Thursday"]
```

**JSON オブジェクト：**

```
[
    {
        "name": "Alice",
        "age": 30,
        "email": "alice@example.com"
    },
    {
        "name": "Bob",
        "age": 25,
        "email": "bob@example.com"
    },
    {
        "name": "Charlie",
        "age": 35,
        "email": "charlie@example.com"
    }
]
```

***

### 配列を返すノード

* コードノード
* パラメータ抽出
* ナレッジベース検索
* イテレーション
* ツール
* HTTPリクエスト

### 配列形式の内容を取得する方法

**CODE ノードを使用して返す**

<Frame caption="コードノード出力Array" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/d3beee536ff3c35f4e1eb1ab610f35d7.png" alt="CODE节点返回数组格式内容界面" />
</Frame>

**パラメータ抽出ノードを使用して返す**

<Frame caption="パラメータ抽出ノード出力array" width="375">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/b5a9d4bee95d7a1331bb7ff7433e47a3.png" alt="参数提取节点返回数组格式内容界面" />
</Frame>

### 配列をテキストに変換する方法

イテレーションノードの出力変数は配列形式であり、直接出力することはできません。配列をテキストに戻すための簡単なステップを実行することができます。

**コードノードを使用した変換**

<Frame caption="コードノード変換" width="334">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/8be2372b00a802e981efe6f0ceff815b.png" alt="使用代码节点将数组转换为文本界面" />
</Frame>

コード例：

```python
def main(articleSections: list):
    data = articleSections
    return {
        "result": "\n".join(data)
    }
```

**テンプレートノードを使用した変換**

<Frame caption="テンプレートノード変換" width="332">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/guides/workflow/node/8c0bcc5de453dea2776d2755449bd971.png" alt="使用模板节点将数组转换为文本界面" />
</Frame>

コード例:

```django
{{ articleSections | join("\n") }}
```

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[このページを編集する](https://github.com/langgenius/dify-docs/edit/main/ja-jp/guides/workflow/node/iteration.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

