循环属性使用说明

本篇文档为您介绍循环使用说明。

概述

在使用大模型的过程中,有些场景下需要使用到循环。例如,用大模型生成测评数据,如果需要生成多条时,可以选择多次执行当前大模型节点,而不需要拉多个节点,更不需要通过多次执行应用调用来实现。考虑到循环的中间结果与业务逻辑实现紧密相关,同时方便控制循环的次数和跳出条件,我们将循环作为节点的属性进行扩展。

循环属性展示

image

循环属性需要在【是否开启循环】打开后才生效,一共有5项配置可以配置。

1、最大循环次数:循环最大次数,当没有符合【终止条件】时最多循环的次数,默认为2,最大为10,

2、循环集合变量:节点发生循环后,每一轮都会有一个结果,这个变量会存储每次循环的结果,返回结果是一个list。

3、当前循环变量:节点发生循环,当前轮次的结果会保存在当前变量下,方便获取最终的变量,或者用当前变量设置终止条件。 4、循环次数变量:循环最终次数保存在当前变量下,可用于设置终止条件,比如this.loopCount == 2,则循环2次跳出。

5、设置终止条件:可以在【设置终止条件】中设置符合跳出循环的条件组,匹配逻辑和逻辑节点基本一致,不同的是这个条件可以引用当前节点的循环属性,比如this.loopCount为当前循环的次数,this.finalItem为当次循环结果,this.list为循环结果list等。当终止条件符合时,跳出循环。

如下图:image

支持范围

当前仅支持大模型设置循环属性,后续其他节点会视情况再开放扩展。

结果示例

循环结果调试结果image

循环结果展示

{
  "finalResult": {
    "LLM_UItAJj": {
      "loopResult": {
        "stopReason": "满足跳出条件", // 循环跳出原因,有2种,满足跳出条件、达到循环次数
        "testList": [
          {
            "params": {
              "modelId": "qwen-max",
              "prompt": "输出一句鲁迅说过的名言,不输出下面提到过的名言:${svcVars.LLM_UItAJj.loopResult.testList.#response.text#},仅输出到名言本身"
            },
            "response": {
              "text": "“其实地上本没有路,走的人多了,也便成了路。”"
            }
          },
          {
            "params": {
              "modelId": "qwen-max",
              "prompt": "输出一句鲁迅说过的名言,不输出下面提到过的名言:${svcVars.LLM_UItAJj.loopResult.testList.#response.text#},仅输出到名言本身"
            },
            "response": {
              "text": "“时间就像海绵里的水,只要愿挤,总还是有的。”"
            }
          },
          {
            "params": {
              "modelId": "qwen-max",
              "prompt": "输出一句鲁迅说过的名言,不输出下面提到过的名言:${svcVars.LLM_UItAJj.loopResult.testList.#response.text#},仅输出到名言本身"
            },
            "response": {
              "text": "“不在沉默中爆发,就在沉默中灭亡。”"
            }
          }
        ],
        "loopCount": 3, // 完成的循环次数
        "isStop": true, // 是否结束
        "testItem": "“不在沉默中爆发,就在沉默中灭亡。”" // 最后一次循环结果
      },
      ……
    }
  }
}