# Реализация циклов в сценарии | Слот Repeat

## Назначение и общая информация

Слот Repeat и его дочерние Слоты (Repeat Next, Repeat End, Repeat Error, Repeat Limit) предназначены для выполнения цикла из заданного количества итераций в Сценарий агента.Слот Repeat является Комплексный слотом и не может существовать без четырех Дочерний слотов: Repeat Next, Repeat End, Repeat Error, Repeat Limit которые начинают собственные Ветка сценария.Добавить другие дочерние Дочерний слоты невозможно.![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-gLY42byLdJ/e64c531fb1ee3a047007b22adc6de97c7fdaf158dee581eafa56d0010857cac6f96183049bfa62831b67fc0e391aeeb18be3352819a07560bdf0c059d710b9b104b5f21ee31bbed5857d7751c9497b9a156a00a24401f2806a1d451dc9728fd4ee3dbd1f)

Лимит на количество итераций цикла одного слота Repeat: 500 итераций.В Сценарий агента допустимо несколько конструкций Repeat.

Подслот Repeat Next и следующая за ним Ветка сценария являются непосредственно веткой цикла. Сценарий агента идет по этой Ветка сценария до выполнения одного из следующих условий:

* достигнуто установленное в Слоте Количество итераций цикла;
* получено Сообщение собеседника, в случае если в цикле нет Слота, который может его обработать;
* достигнут Лимит на количество итераций цикла одного слота Repeat (500 итераций) или Лимит на количество итераций цикла в минуту на компанию (200 итераций).

Подслот Repeat End предназначен для продолжения Сценарий агента когда закончился цикл, т.е. выполнено установленное в Слоте Количество итераций цикла, а также для выхода из цикла, если в процессе его выполнения поступило Сообщение собеседника, а в цикле нет Слота, который может его обработать.Подслот Repeat Error предназначен для продолжения Сценарий агента в случае, если возникла ошибка выполнения цикла, когда было установлено невалидное количество итераций.Подслот Repeat Limit предназначен для выхода из цикла при достижении Лимит на количество итераций цикла одного слота Repeat (500 итераций) или Лимит на количество итераций цикла в минуту на компанию (200 итераций).

## Создание и настройки комплексного слота Repeat

### Атрибуты слота Repeat

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-36_nbZQO2t/918d5c3a81aa1ba8051cffa4d190fa82424b4a7f1f2eb2b3a9c7791dcd9425264a19665d80c88ae170bf51104ae7d142c0dd62aec8b2edfa841fce091f0741af672415a1250ec2f6e8c0524d19ff4c0e0c8c206960e2560126fc8886f24ee2261f97270c)

1. Slot Name\*ー название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
2. Number of iterations\* ー  Количество итераций цикла.
3. 1. Допустимые значения:
   2. 1. точное значение —  положительное целое число или 0;
      2. Выражение, дающее результат — положительное целое число или 0;
      3. Контекстная переменная.
   3. Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля Number of iterations.
   4. При импорте конфигурационного файла Агента с невалидным значением в поле Number of iterations (см. п. 2а) будут выведены сообщения об ошибке и Агент не будет импортирован в Платформа.\
      ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-qgUEkJ36TX/9b513ed672b1b045ff75d3508aaa1f45ea33d944cbdea99eb540bc5be407b0186a7aeef1b45724b8115ebf5fa2347d14bf4f14c33b8da3ae0640f94b7a3ad7252e5ed2fdf24e987826db8cf7727943e5c3d977246ce5591db1be83a99319804bc3e73696)
4. Подсказка с текстом Variable {{ repeat\_index }} will be used as iteration counter. It will be incremented on 1 every time subslot Next is being executed.
5. Кнопка Show more, по нажатию которой подсказка разворачивается.

<br>

### Подслоты Repeat Next, Repeat End, Repeat Error, Repeat Limit

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-V1YEJyBy0P/9a89720a72d17ca895e627401f5c6ce8a567f79e2100e0a336a93fdf0354e0b532fb0fca4de282b8c15bbc80296b683e9bfc48def1c03941d31134cc3f3107f1d711acffb6a3d517b5f13004e1d5c26457fd106340d78d0e8fe92e2204790c7076ce1397)

1. При создании слота  автоматически генерируются четыре Подслота Repeat Next, Repeat End, Repeat Error, Repeat Limit.
2. Эти Подслоты не подлежат изменению и их можно удалить только с Родительский слотом.
3. Расположение Подслотов определяется автоматически, перемещать Подслоты нельзя.
4. Добавлять новые Подслоты в Родительский слот Repeat нельзя.

### Атрибуты подслотов

#### Repeat Next

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-AQCRN-mZXM/46866810686cdc26276ca13b3ad3a332728bea6b8037ac28e79a6dc287ff27a335d272455f32ff2319a62dee1f6b310d7dce0f0f6f1788724894b2003259f97575bac3c429c70d0bfb05c6c60ec8d1fc760a33f5755219876cca731f131a9bbf5296a7de)

1. Slot Nameー название Слота, которое будет отображено в Дерево сценария. По умолчанию в поле установлено значение Repeat Next. Максимальная длина значения поля — 40 символов.
2. Подсказка с текстом:
3. * Variable {{ repeat\_index }} is incremented on 1 every time subslot Next is being executed
   * If you jump to this slot {{ repeat\_index }} will be incremented and loop will be continued

#### Repeat End

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-CFWI7I3za-/d1486b4194a981f9f6fa0e3b2ba277fcf20ef7f3214774ab0bc83adf316ffea455922231b46ae851300820dd86daf98b4b2675d3a3a4ca7d6d65815b18595ffc1e770c69dad2eb7cc7ed2774321a2a906e3b312986050086f3224e14594f99dea59b7a02)

1. Slot Nameー название Слота, которое будет отображено в Дерево сценария. По умолчанию в поле установлено значение Repeat End. Максимальная длина значения поля — 40 символов.
2. Подсказка с текстом The agent goes to subslot End when the loop completes all iterations.

#### Repeat Error

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-ghDdjtXdIE/5da1f33c969e9f975d0764c5e16dd7ee33f0c9306a5c30578a93b8206c2136c6da5f50d662133857aed369ad4d8e607988f3eb0c1cbc0af63b026bae10a779938a8dfe68d141ed11166a57612d1edb19ece58a3ef41cb2a26c0218f7415f6c4d51400efc)

1. Slot Nameー название Слота, которое будет отображено в Дерево сценария. По умолчанию в поле установлено значение Repeat Error. Максимальная длина значения поля — 40 символов.
2. Подсказка с текстом The agent goes to subslot Error if you set invalid value (e.g. string or negative value) as number of iterations.

#### Repeat Limit

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-ZpE4a8s0ES/2c332be9f6e82e0600326a88aa49ca90e899d172ed80f2adc265fda1d0094ef8988561acb6616d8244e1b9b4207070e264618bec18d5ca3a4c4a55ccb7368051e97de93e06e661118b559a63dd460fc0d43f1f5eafc730b0ce6f512790520c265a897e17)

1. Slot Nameー название Слота, которое будет отображено в Дерево сценария. По умолчанию в поле установлено значение Repeat Limit. Максимальная длина значения поля — 40 символов.
2. Подсказка с текстом The agent goes to slot Limit if the loop reaches the technical limit of iterations (see your subscription limits).

### Использование синтаксиса в Слоте

В Слоте Repeat допустимо использование Выражение в поле Number of iterations. Подробнее: Синтаксис

## Работа слота

Для отражения номера текущей итерации цикла используется Системная контекстная переменная repeat\_index. Нумерация итераций начинается с 0.

### Запуск цикла

1. При попадании в Слот Repeat устанавливается значение repeat\_index, равное -1, и происходит вычисление значения Количество итераций цикла в поле Number of iterations:
2. 1. Если в результате вычисления получается не целое число или число меньше 0, происходит переход в Repeat Error, при этом:
   2. 1. значение repeat\_index не изменяется и остается равным -1 (цикл попытались запустить, но он ни разу не отработал);
      2. error принимает значение invalid number of iterations.
   3. Если в результате вычисления получается 0, происходит переход в Repeat End, при этом:
   4. 1. значение repeat\_index не изменяется и остается равным -1  (цикл попытались запустить, но он ни разу не отработал)
      2. происходит Сброс состояния цикла (см. Сброс состояния цикла)
   5. Если в результате вычисления получается целое число больше 0, происходит переход в Repeat Next.

### Продолжение цикла

1. Ветка сценария Repeat Next реализует цикличный алгоритм без блокировки.
2. При попадании в Подслот Repeat Next происходит определение, куда необходимо совершить дальнейший переход, затем выполняется сам переход:
3. 1. Проверяется достижение указанного в Слоте Repeat Количество итераций цикла:\
      если значение repeat\_index больше или равно числу <указанное в поле Number of iterations значение> - 1, то происходит переход в Repeat End.
   2. > Пример: в поле Number of iterations указано число 10. Т.к. нумерация итераций в repeat\_index начинается с 0, то, когда repeat\_index принимает значение 9, происходит переход в Repeat End.
   3. Проверяется достижение Лимит на количество итераций цикла одного слота Repeat:\
      если значение repeat\_index больше или равно Лимит на количество итераций цикла одного слота Repeat:
   4. 1. происходит переход в Ветка сценария Repeat Limit .
   5. > Пример: Лимит на количество итераций цикла одного слота Repeat равен 500. Если значение repeat\_index равно 500 или 501, происходит переход в Repeat Limit.
4. Начало очередной итерации цикла:\
   Если в предыдущих операциях не произошел выход в Подслоты Repeat Limit и Repeat End, то происходит увеличение значения  на 1 и переход в Repeat Next.
5. > Пример: в поле Number of iterations указано число 10. Значение repeat\_index равно 3. В таком случае repeat\_index принимает значение 4 и происходит переход в Repeat Next.
6. Между итерациями цикла введена искусственная задержка в 0,3 секунды.


---

# 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://chatme-ai-4.gitbook.io/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/realizaciya-ciklov-v-scenarii-or-slot-repeat.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.
