# Пользовательские переменные

Благодаря опции "Пользовательские переменные" вы можете создать одну или несколько переменных самостоятельно. Создание переменных может быть полезным в ситуации, когда необходимо, чтобы бот запомнил конкретную информацию, которую затем необходимо передать, на которую нужно будет ссылаться, либо которая будет использоваться для корректной генерации ответов.\
Переменные позволяют сокращать контекст и экономить токены.

Данная опция находится в разделе **"Дополнительные настройки"**

<figure><img src="/files/wgJllFtTvnpGynpXIQVI" alt=""><figcaption></figcaption></figure>

Доступно 2 варианта переменных:

* Фиксированные переменные
* Динамические переменные

**Фиксированные переменные** позволяют создать переменные с известным типом данных. Мы выбираем их, когда заранее знаем какую информацию необходимо получить от пользователя, какого типа и формата эта информация должна быть. Иными словами когда нам важна типизация и валидация данных. Данные, содержащиеся в таких переменных могут быть использованы для передачи по API другому сервису.

Рассмотрим пример:

Нужна следующая информация для корректного заполнения полей: имя, дата рождения, email. Формат данных должен быть следующим: Имя, 15.01.1990, <pochta@mail.ru>. Введем переменные **name, birth\_date, email**, тип данных "Строка". В инструкции обозначим формат, в котором данные должны быть переданы в переменные. *"Запроси у пользователя имя, дату рождения, email, данные должны быть переданы в следующем формате: Имя, 15.01.1990, <pochta@mail.ru> Если информация не соответствует формату, запроси повторно, уточни необходимый формат. Получив информацию в корректном формате, сохрани ее как строку в переменные **set\_fields\_values(name, birth\_date, email)** соответственно"*\
Если пользователь передаст какую-то информацию некорректно, бот запросит повторно, чтобы в итоге передать корректную по типу и формату информацию. Конечный сервис в тоге получит информацию, которая не вызовет ошибку.

Пользователь предоставляет информацию в некорректном формате, бот уточняет формат и просит повторно ее прислать:

<figure><img src="/files/TyGfzXUthYC7yFNWtmpL" alt=""><figcaption></figcaption></figure>

После получения информации в корректном формате, она валидирована и сохраняется в переменные:

<figure><img src="/files/NqCfEHr8QM2VcUq1KxiI" alt=""><figcaption></figcaption></figure>

В экспорте видим, что функция выполнена:

<figure><img src="/files/vxOt8ZY9X6XaQ880lnUI" alt=""><figcaption></figcaption></figure>

**Динамические переменные** позволяют сохранить любую информацию, любого объема, информация всегда сохраняется, как **строка**, в динамических переменных нет типизации. Эти переменные могут применяться более гибко. Нейросеть сама определяет важную информацию и задает переменную. Этот тип переменных мы не можем передавать в другие сервисы. Динамические переменные позволяют получать более качественную генерацию со стороны бота. При необходимости мы можем обозначать информацию, которую необходимо сохранить.

Рассмотрим на примере:

Нам нужно сохранить цели пользователя для финансового планирования. Укажем это в инструкции: *"Запроси у пользователя финансовые цели. Передай финансовые цели в функцию memorize. Используй финансовые цели для построения бюджета"*

<figure><img src="/files/qI6ZI8T4jjzN7cOfMSth" alt=""><figcaption></figcaption></figure>

В экспорте видим выполнение функции:

<figure><img src="/files/tHuCpi6diwUUK7LTdsti" alt=""><figcaption></figcaption></figure>

#### Фиксированные переменные

Чтобы создать **Фиксированную переменную** выполните следующие шаги:

{% stepper %}
{% step %}
Для создания нажмите кнопку *"Добавить переменную"*

<figure><img src="/files/XJASmxVcE4rYBWjus0gM" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Затем задайте название переменной, ее описание и тип данных.

Существует 4 типа переменных:

* **Строка** - любая информация, которая должна восприниматься системой, как текст ("арбуз", "suvvy", "+79001234567")
* **Целочисленное** - целое число (1, 2, 5, -1)
* **Целочисленное или дробное** - целое число, либо дробное (1, 1.0, 3.4, -1.2)
* **Булево** - true или false (да или нет)

При выборе необходимо строго учитывать тип информации, которая будет содержаться в переменной.

<figure><img src="/files/IKTmh1IToKB5rIX7zwrf" alt=""><figcaption></figcaption></figure>

В нашем примере выберем тип "**Целочисленное**".
{% endstep %}

{% step %}
После ввода всех параметров нажмите на иконку *"Сохранить"*

<figure><img src="/files/qfCsl1xFHp3CrgY1katC" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

**Фиксированные переменные** связаны с функцией

```
set_fields_values
```

В инструкции пропишите какие данные в какую переменную следует сохранить, лучше указать тип данных, который будет сохраняться в переменную, чтобы избежать путаницы и числовые данные не были переданы, как тип данных "Строка". Например:

"*Запроси у пользователя его возраст и сохрани числовые данные в переменную* set\_fields\_values(*age)"*

#### Динамические переменные

Для включения **Динамических переменных** активируйте соответствующий переключатель. В инструкции пропишите какую информацию нужно сохранить.

**Подробно** опишите, что именно должно быть сохранено.

<figure><img src="/files/PGhEf6JPmTS9oVa1g6R6" alt=""><figcaption></figcaption></figure>

После активации Динамических переменных появится дополнительная опция для **удаления информации из этих переменных при очистке.**

<figure><img src="/files/UeOCMXYqvRDkanJDVScS" alt=""><figcaption></figcaption></figure>

Динамические переменные связаны с функцией

```
memorize
```

При включенных **Динамических переменных** нейросеть самостоятельно принимает решение о том, какую информацию запомнить. Но если нам необходимо, чтобы была сохранена конкретная информация, мы можем самостоятельно уточнить, что именно необходимо запомнить. Для этого в инструкции добавляем фразу: "Передай эту информацию в функцию **memorize**".

При необходимости можем получить информацию о переменных. Для этого запрашиваем следующее:\
"Верни сохраненную в функции **memorize** информацию"

<figure><img src="/files/DHkPIi4m1ckeffR9bFg8" alt=""><figcaption></figcaption></figure>


---

# 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.suvvy.ai/ru/osnovnye-nastroiki/dopolnitelnye-nastroiki/less-than-greater-than-polzovatelskie-peremennye.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.
