# Блок: Старт

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

<figure><img src="/files/12XpC4FfRAax5EsTbKAs" alt=""><figcaption></figcaption></figure>

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

## Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<figure><img src="/files/7GDtuWdGRl24Y9xniwP4" alt=""><figcaption></figcaption></figure>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  Правила:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<figure><img src="/files/dGsOjgffTx26fJwkxMNt" 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.intellectdialog.com/integration.intellectdialog/blok-start.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.
