# Iteration

## Definition <a href="#definition" id="definition"></a>

Execute multiple steps on an array until all results are output.

The iteration step performs the same steps on each item in a list. To use iteration, ensure that the input value is formatted as a list object. The iteration node allows AI workflows to handle more complex processing logic. It is a user-friendly version of the loop node, making some compromises in customization to allow non-technical users to quickly get started.

## Scenarios <a href="#scenarios" id="scenarios"></a>

### **Example 1: Long Article Iteration Generator**

1. Enter the story title and outline in the **Start Node**.
2. Use a **Generate Subtitles and Outlines Node** to use LLM to generate the complete content from user input.
3. Use a **Extract Subtitles and Outlines Node** to convert the complete content into an array format.
4. Use an **Iteration Node** to wrap an **LLM Node** and generate content for each chapter through multiple iterations.
5. Add a **Direct Answer Node** inside the iteration node to achieve streaming output after each iteration.

**Detailed Configuration Steps**

1. Configure the story title (title) and outline (outline) in the **Start Node**.
2. Use a **Generate Subtitles and Outlines Node** to convert the story title and outline into complete text.
3. Use a **Extract Subtitles and Outlines Node** to convert the story text into an array (Array) structure. The parameter to extract is `sections`, and the parameter type is `Array[Object]`.

{% hint style="info" %}
The effectiveness of parameter extraction is influenced by the model's inference capability and the instructions given. Using a model with stronger inference capabilities and adding examples in the **instructions** can improve the parameter extraction results.
{% endhint %}

4. Use the array-formatted story outline as the input for the iteration node and process it within the iteration node using an **LLM Node**.

Configure the input variables `GenerateOverallOutline/output` and `Iteration/item` in the LLM Node.

{% hint style="info" %}
Built-in variables for iteration: `items[object]` and `index[number]`.

`items[object]` represents the input item for each iteration;

`index[number]` represents the current iteration round;
{% endhint %}

1. Configure a **Direct Reply Node** inside the iteration node to achieve streaming output after each iteration.
2. Complete debugging and preview.

### **Example 2: Long Article Iteration Generator (Another Arrangement)**

* Enter the story title and outline in the **Start Node**.
* Use an **LLM Node** to generate subheadings and corresponding content for the article.
* Use a **Code Node** to convert the complete content into an array format.
* Use an **Iteration Node** to wrap an **LLM Node** and generate content for each chapter through multiple iterations.
* Use a **Template Conversion** Node to convert the string array output from the iteration node back to a string.
* Finally, add a **Direct Reply Node** to directly output the converted string.

## What is Array Content <a href="#what-is-array-content" id="what-is-array-content"></a>

A list is a specific data type where elements are separated by commas and enclosed in `[` and `]`. For example:

**Numeric:**

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

**String:**

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

**JSON Object:**

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

## Nodes Supporting Array Return <a href="#nodes-supporting-array-return" id="nodes-supporting-array-return"></a>

* Code Node
* Parameter Extraction
* Knowledge Base Retrieval
* Iteration
* Tools
* HTTP Request

## How to Obtain Array-Formatted Content <a href="#how-to-obtain-array-formatted-content" id="how-to-obtain-array-formatted-content"></a>

* Return Using the CODE Node
* Return Using the Parameter Extraction Node

## How to Convert an Array to Text <a href="#how-to-convert-an-array-to-text" id="how-to-convert-an-array-to-text"></a>

The output variable of the iteration node is in array format and cannot be directly output. You can use a simple step to convert the array back to text.

* **Convert Using a Code Node**

Code Example:

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

* **Convert Using a Template Node**

Code Example:

```
{{ articleSections | join("/n") }}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.glik.ai/deprecation/orchestration-interface/node-orchestration/node/iteration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
