---
title: "循环"
description: "Execute repetitive workflows with progressive refinement"
icon: "infinity"
---

循环节点执行重复性工作流，每个周期都建立在前一个周期的结果基础上。与迭代独立处理数组元素不同，循环创建的是随每次重复而演进的渐进式工作流。

## 循环 vs 迭代

了解何时使用每种重复模式：

<Tabs>
  <Tab title="循环">
    **顺序处理** - 每个周期依赖于之前的结果
    
    **渐进式优化** - 输出在迭代过程中改进或演化
    
    **状态管理** - 变量在周期间持续存在并累积
    
    **使用场景** - 内容优化、问题解决、质量保证
  </Tab>
  
  <Tab title="迭代">
    **独立处理** - 每个项目分别处理
    
    **并行执行** - 项目可以同时处理
    
    **批量操作** - 对多个数据点应用相同操作
    
    **使用场景** - 数据转换、批量处理、并行分析
  </Tab>
</Tabs>

## 配置

### 循环变量

定义在循环迭代间持续存在并在循环完成后保持可访问的变量。这些变量维护状态并启用渐进式工作流。

### 终止条件

配置循环何时应停止执行：

**循环终止条件** - 确定何时退出的表达式（例如，`quality_score > 0.9`）

**最大循环次数** - 防止无限循环的安全限制

**退出循环节点** - 到达此节点时立即终止

<Info>
  当终止条件满足、达到最大次数或执行退出循环节点时，循环终止。如果未指定条件，循环将继续直到达到最大次数。
</Info>

## 基础循环示例

生成随机数直到找到一个小于50的数：

<Frame caption="随机数生成的基础循环工作流">
  <img src="https://assets-docs.dify.ai/2025/04/282013c48b46d3cc4ebf99323da10a31.png" alt="Basic loop workflow" />
</Frame>

**工作流步骤：**
1. **代码节点** 生成1-100之间的随机整数
2. **条件分支节点** 检查数字是否小于50
3. **模板节点** 为小于50的数字返回"done"以触发循环终止
4. 循环继续直到满足终止条件

<Frame caption="循环执行步骤和结果">
  <img src="https://assets-docs.dify.ai/2025/04/9d9fb4db7093521000ac735a26f86962.png" alt="Loop execution steps" />
</Frame>

## 高级循环示例

通过迭代优化创建诗歌，每个版本都建立在前一个版本的基础上：

<video controls src="https://assets-docs.dify.ai/2025/04/7ecfc04458aa38e721baaa5f6355486c.mp4" width="100%" />

**循环变量：**
- `num` - 从0开始的计数器，每次迭代递增
- `verse` - 保存当前诗歌版本的文本变量

**工作流逻辑：**
1. **条件分支节点** 检查`num > 3`以确定何时退出
2. **大型语言模型节点** 基于前一版本生成改进的诗歌
3. **变量分配器** 更新计数器和诗歌内容
4. **退出循环节点** 在4次优化周期后终止

大型语言模型提示词同时引用当前诗句和迭代上下文：

```text
You are a European literary figure creating poetic verses.

Current verse: {{verse}}

Refine and improve this poem based on your previous work.
```

## 常见使用场景

**内容优化** - 通过多次大型语言模型审查逐步改进文本、代码或设计，直到达到质量标准。

**问题解决** - 将复杂问题分解为迭代步骤，每个周期基于之前的进展处理下一个逻辑部分。

**研究工作流** - 基于每个现，迭代搜索、分析和优化研究查询。

**质量保证** - 反复测试和验证输出，进行改进直到满足所有标准。

## 最佳实践

**定义清晰的退出条件** - 确保循环具有具体的、可测量的终止条件，以防止无限执行。

**设置合理限制** - 根据预期复杂性和处理要求使用适当的最大迭代次数。

**有效管理状态** - 使用循环变量在迭代间维护必要信息，同时避免不必要的数据累积。

**监控进度** - 包含日志记录或进度指示器来跟踪循环执行，特别是对于长时间运行的进程。