> For the complete documentation index, see [llms.txt](https://docs.intellectdialog.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.intellectdialog.com/integration.intellectdialog/blok-start.md).

# Блок: Старт

Данный блок всегда начинает нашу цепочку обработки данных в рамках создаваемого бизнес процесса

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FTt6EVKoqkedT2O20m7Go%2Fimage.png?alt=media&amp;token=35bdbc5e-07bb-4572-869d-b13da0b9989d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FBL0vhmh52TfQGpvCxyuw%2Fimage.png?alt=media&amp;token=e6985c49-2b28-4f74-a0e9-4ee55288e84a" alt=""><figcaption></figcaption></figure>

## Описание

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FZZqjhcOTaztXBBzJsDEa%2Fimage.png?alt=media&amp;token=274466dd-d744-424c-8076-8e12e4b95885" alt=""><figcaption></figcaption></figure>

* Описание - указываем какую задачу выполняет данный блок, с какой логики начинается бинес-процесс

### Количество символов для подгрузки истории

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FQiIrZy9ENwBlgT2PKT4Q%2Fimage.png?alt=media&amp;token=1802874c-474f-498e-ade7-700692d23e7a" alt=""><figcaption></figcaption></figure>

* Параметр **"Количество символов для подгрузки истории"** отвечает за подгрузку ранее полученной информации от пользователя, чтобы GPT-модель могла оперировать контекстом прошлых коммуникаций в рамках текущего сценария.

  **Пример использования:**

  * Пользователь ранее сообщил важные данные, которые связаны с текущим сценарием (например, имя, детали заказа или другие ключевые сведения).
  * Если эти данные входят в указанные **2048 символов** истории, они автоматически подгружаются, и их повторный запрос не требуется.

  **Регулировка символов:**

  * Вы можете задать любое значение для объёма подгружаемой истории, но важно учитывать, что:
    * **Больше символов** — больше контекста, но выше расход токенов.
    * **Меньше символов** — ниже расход токенов, но меньше объём доступного контекста.

  **Влияние на бизнес-процесс:**

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

  **Зависимость от GPT-модели:**\
  Количество символов влияет на количество токенов, используемых GPT-моделью. Это напрямую связано с затратами на обработку каждого запроса.

  **Рекомендации:**

  * Установить оптимальный лимит, достаточный для обработки критически важного контекста.
  * Оценивать стоимость обработки и необходимость в детализации истории для каждого сценария.

## Системный промт

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FEXiuqOB5l9KKADMOtHrt%2Fimage.png?alt=media&amp;token=57f230b6-db8c-473a-bc44-71ba26be82ce" alt=""><figcaption></figcaption></figure>

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

* **Элементы системного промта:**

  * **Роль бота:**
    * Задаёт, кем является бот в рамках сценария.
      * Пример: "Ты — чат-бот, который обрабатывает запросы, связанные с машинами."
      * **Основная задача:**
        * Описывает ключевую цель взаимодействия.
        * Пример: "На любое сообщение пользователя всегда возвращай вызов одной из заранее определённых функций."
      * **Контекст работы:**
        * Уточняет, как бот должен интерпретировать сообщения пользователя.
        * Пример: "Обрабатывай запросы и используй вызовы функций для выполнения задач."

  **Пример использования:**

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

  **Зачем нужен:**

  * Для чёткого определения роли и задач бота.
  * Чтобы бот корректно реагировал на сообщения, следуя заданным инструкциям.
  * Для ограничения действий бота в рамках заданного сценария.

  **Итог:**\
  Системный промт — ключевой элемент, определяющий поведение бота. Он помогает установить роль, задачи и контекст для правильной работы в сценарии.

  **Вариант примера №1**

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FDHxeTG53cC7YXdD9XcWN%2Fimage.png?alt=media&amp;token=5689c544-4e33-4ca7-bf3f-53e03300e66c" alt=""><figcaption></figcaption></figure>

  **Вариант примера №2**

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2Fm8rZojgHQzzQ4DWxdwIP%2Fimage.png?alt=media&amp;token=07cb04f2-a957-43a0-8c50-8ae7f339888d" alt=""><figcaption></figcaption></figure>

  **Пример системного промта №2:**

  Роль: Ты — чат-бот, который обрабатывает запросы, связанные с занятиями и записями на занятия. Твоя задача — на любое сообщение пользователя всегда возвращать вызов одной из заранее определённых функций.

  Правила:

  1. IMPORTANT: Параметр "phone" является необязательным. Никогда не предлагайте пользователю ввести "phone"
  2. Вам нужно помнить, что сегодняшняя дата - ${today}, а день - ${day}.
  3. Не задавай дополнительных вопросов пользователю. Всегда сразу выбирай и вызывай соответствующую функцию.
  4. Основывайся на предоставленных функциях, всегда вызывай одну из них, в зависимости от запроса пользователя.
  5. Если сообщение пользователя не содержит информации, связанной с занятиями, вызывай функцию anyQuestion.
  6. Используй доступные параметры, если они указаны в запросе пользователя. Если каких-то параметров не хватает, всё равно вызывай функцию с теми данными, что есть.

* **Использование нескольких системных промтов**

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2Fw9rZNPbgvY93161Een5O%2Fimage.png?alt=media&amp;token=b3d0d11b-9148-4627-86d3-32c2750f9bfd" alt=""><figcaption></figcaption></figure>

  **Особенность работы:**\
  СВсе системные промпты рассматриваются как совокупный контекст. Если они не противоречат друг другу, модель учитывает их как единый набор инструкций.

  \
  Если системные промпты противоречат друг другу (например, один требует формальности, а другой — неформальности), модель пытается найти компромисс. Если компромисс невозможен, приоритет отдается более конкретным или последним инструкциям.

  \
  Системные промпты могут обновляться в процессе диалога. Если в какой-то момент контекст меняется, модель будет следовать последним указаниям.ция.

## **Функции с запрашиваемыми параметрами/переменными**

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FDwyuQMczdPRDZ1SPdyWw%2Fimage.png?alt=media&amp;token=1997b537-2c3b-4d67-89c2-2e50774cec7e" alt=""><figcaption></figcaption></figure>

* **Функции** — это дополнительные инструменты, которые можно использовать в сценарии для обработки запросов пользователя. Они позволяют динамически обрабатывать входящие данные, уточнять недостающую информацию **"параметры/переменные"** и выстраивать взаимодействие с внешними API или JSON.&#x20;

### **Этапы работы с функциями**

#### **Добавление функции**

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FQpRIFgazUjuzO9T7lL0j%2Fimage.png?alt=media&amp;token=8ea2dcc9-b483-48b5-9742-b316d0c7f6d2" alt=""><figcaption></figcaption></figure>

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

#### **Определение переменных**

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FPa8arqS9EdSKcBWEG7Wz%2Fimage.png?alt=media&amp;token=680f05d5-f9ed-4221-8f59-db43502d14b2" alt=""><figcaption></figcaption></figure>

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

#### Как происходит обработка запроса

* Если пользователь предоставил все необходимые данные (например, "Мне нужна белая Лада Веста"), каждая из сущностей совпадающая с указанным списком переменных сохраняется как переменные.

### Использование нескольких функций

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

  #### **Цели добавления второй функции**

  1. **Обработка исключений:**
     * Если запрос пользователя не соответствует основной функции, вторая функция определяет, как с ним работать.
     * Это предотвращает зависание сценария и обеспечивает корректное завершение.
  2. **Динамическая маршрутизация:**
     * Вторая функция позволяет перенаправить запрос к другому подразделению или обработчику, если это необходимо.
  3. **Завершение сценария:**
     * Когда запрос не имеет отношения к основной функции, сценарий можно завершить с уведомлением пользователя, чтобы не оставлять запрос без ответа.

  #### **Примеры использования второй функции**

  **Пример 1: Передача запроса**

  * **Ситуация:** Основная функция связана с автомобилями Лада, но пользователь запрашивает другую марку.
  * **Действие:**
    * Вторая функция перенаправляет запрос в подразделение, ответственное за обработку других марок.
    * Пользователь получает уведомление о передаче запроса: "Ваш запрос передан в отдел, работающий с автомобилями Тойота."

  **Пример 2: Завершение сценария**

  * **Ситуация:** Компания работает только с Ладой, и пользователь спрашивает про другую марку.
  * **Действие:**
    * Вторая функция завершает сценарий с уведомлением: "Мы работаем только с автомобилями Лада. Спасибо за обращение."

  #### **Преимущества добавления второй функции**

  1. **Гибкость сценариев:** Возможность адаптировать сценарий для разных типов запросов.
  2. **Повышение пользовательского опыта:** Чёткие ответы и маршрутизация запросов вместо игнорирования.
  3. **Эффективность обработки:** Разграничение задач между функциями упрощает логику и ускоряет выполнение.

**Вариант примера №1**

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FCP1bH7ZnrHMUqks5ZK3G%2Fimage.png?alt=media&amp;token=ae447051-76c1-4cc9-aebb-b51cc327bd12" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FHSp94fS53zO3E5gofSWH%2Fimage.png?alt=media&amp;token=71a4ee5f-e56d-4bf4-8826-0c4a05670f5c" alt=""><figcaption></figcaption></figure>

**Вариант примера №2**

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2Fde8wSra9bktHZ4mHGVbB%2Fimage.png?alt=media&amp;token=6a9d56e0-020c-4680-a2a9-24a6fd5a1417" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FOZ4WmNPg0mjoWy97xT1k%2Fimage.png?alt=media&amp;token=347c824e-9308-4e93-8594-2e61010bc01e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2F4fyBuutG5PXIjk64MGXM%2Fimage.png?alt=media&amp;token=33ea27f1-b16e-4776-9cdb-2cee9686e771" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2F9pIaoptD0gEQz3X91iIP%2Fimage.png?alt=media&amp;token=3c966019-cb19-49d5-8e7e-2b9a34d9fc7d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2Fvd2QVLO7hID7GyqH9YNy%2Fimage.png?alt=media&amp;token=0ec30957-6240-45c4-8dfe-4b1579b44768" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FeI9ieGrsV0ETVuyM1fof%2Fimage.png?alt=media&amp;token=5669658c-864a-4884-84ac-d510f62cbe9c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2Fqy26KuFwKfOzREzyimSI%2Fimage.png?alt=media&amp;token=d232c4a9-d69d-414b-bdd6-6f4e581fda3a" alt=""><figcaption></figcaption></figure>
