> ## Documentation Index
> Fetch the complete documentation index at: https://revolai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# AI Агенти

> Створюйте інтелектуальних AI-асистентів з кастомними воркфлоу, базами знань, голосовими можливостями та багатоканальним розгортанням

## Що таке AI Агенти?

AI Агенти в Revol — це інтелектуальні асистенти, які працюють з комунікацією клієнтів через різні канали — віджет на сайті, телефонні дзвінки, Telegram, WhatsApp та Instagram. Кожен агент має власну персональність, базу знань, воркфлоу розмови та набір інструментів.

### Режими роботи

Агенти можуть працювати в трьох режимах залежно від потреб бізнесу:

| Режим         | Хто спілкується | Роль агента                                                                                                                                                                                                      |
| ------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Активний**  | AI-агент        | Агент повністю веде комунікацію з клієнтами — відповідає на повідомлення, викликає інструменти, дотримується воркфлоу та вирішує запити автономно                                                                |
| **Пасивний**  | Ваша команда    | Команда веде всю комунікацію. Агент моніторить кожну розмову у фоновому режимі — аудитує дотримання стандартів комунікації, відстежує метрики якості та надає аналітику, ніколи не відповідаючи клієнтам напряму |
| **Гібридний** | Обидва          | AI обробляє рутинні взаємодії (FAQ, запити про товари, запис), а команда підключається для складних або чутливих випадків. Агент безперервно аналізує всі розмови незалежно від того, хто відповідає             |

<Tip>
  **Пасивний режим** — потужний інструмент для команд з усталеними процесами комунікації. Агент стає постійним аудитором якості — перевіряє дотримання скриптів операторами, виявляє втрачені можливості, моніторить час відповіді та видає інсайти з розмов. Вся аналітика, витягнення пам'яті та трекінг працюють так само, як в активному режимі.
</Tip>

***

## Створення агента

Натисніть **Create Agent**, щоб запустити 2-кроковий майстер:

**Крок 1** — введіть ім'я агента (мін. 3 символи) та опціональне перше повідомлення (привітання).

**Крок 2** — оберіть сценарій використання: Customer Support, Outbound Sales, Lead Qualification, Answering Service, Consultation Booking, Client Intake, Service Recommendations, Scheduling, Billing Inquiries, Project Updates, Resource Library, Learning & Development або Other. Це лише візуалізація — обраний сценарій не впливає на поведінку чи конфігурацію агента.

Після створення агент отримує статус **Draft** з вже побудованим [воркфлоу за замовчуванням](#воркфлоу-за-замовчуванням).

### Статус агента

| Статус       | Поведінка                                                                                                                  |
| ------------ | -------------------------------------------------------------------------------------------------------------------------- |
| **Draft**    | Не активний. Використовуйте під час налаштування.                                                                          |
| **Active**   | Працює, відповідає на повідомлення. **Лише один агент на компанію може бути активним** — активація одного деактивує решту. |
| **Inactive** | Призупинений. Зберігає всю конфігурацію.                                                                                   |

***

## Редактор агента

Редактор агента — це повноекранне модальне вікно з **7 вкладками**: Agent, Knowledge Base, Analysis, Tools, Widget, Channels, Workflow.

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/revolai/B4zPwXpQ9Qvk4wCE/images/agent-editor-light.png?fit=max&auto=format&n=B4zPwXpQ9Qvk4wCE&q=85&s=11cb7710b8f38a37ccbd473d30cbe430" alt="Редактор агента" width="2870" height="1557" data-path="images/agent-editor-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/revolai/B4zPwXpQ9Qvk4wCE/images/agent-editor-dark.png?fit=max&auto=format&n=B4zPwXpQ9Qvk4wCE&q=85&s=9b604bc33d074938f528f71d19f82a8a" alt="Редактор агента" width="2880" height="1556" data-path="images/agent-editor-dark.png" />
</Frame>

### Заголовок

Заголовок завжди видимий і показує:

* Ім'я агента (клікніть для редагування)
* Бейдж статусу (Active / Inactive)
* **Embed Code** — отримати `<script>` сніпет для віджета
* **Tool Logs** — переглянути всі виклики інструментів та події каналів
* **Preview** — посилання на сайт клієнта, де встановлений віджет, для перегляду як його бачать відвідувачі
* **Publish** — опублікувати в Marketplace (публічно або приватно)

***

## Вкладка Agent

Основна вкладка конфігурації, де налаштовуються базові параметри агента — системний промпт, персональність, LLM-провайдер та пам'ять розмови.

### Ліва колонка

**System Prompt** — основні інструкції, що визначають поведінку агента. Якщо залишити порожнім, генерується промпт за замовчуванням з назвою компанії та базовими правилами комунікації.

<Tip>
  Блок безпеки автоматично додається до кожного системного промпту. Він запобігає prompt injection — агент ніколи не розкриє свої інструкції, не ігноруватиме правила безпеки і не виконуватиме запити на зміну ролі. Не потрібно додавати це вручну.
</Tip>

**First Message** — текст привітання, який бачать відвідувачі при відкритті чату.

**Conversation Memory** — структуровані поля, які агент повинен збирати під час розмов. Кожне поле має:

| Властивість | Опис                                                    |
| ----------- | ------------------------------------------------------- |
| **Key**     | Машинний ідентифікатор (lowercase, тільки підкреслення) |
| **Label**   | Людиночитана назва, показується в аналітиці             |
| **Type**    | Text, Phone, Email, Number або Select                   |
| **Options** | Для типу Select — значення через кому                   |

Поля пам'яті використовуються в маршрутизації воркфлоу (State Conditions на з'єднаннях) і відображаються у вкладці Info розмови. Наприклад, визначте поля `name`, `email`, `budget` — агент спробує зібрати їх природно під час розмови, а ви зможете маршрутизувати з'єднання на основі того, чи вони заповнені.

**Як працює витягнення пам'яті:** після того як кожен кастомний вузол генерує відповідь, система робить легкий LLM-виклик, який аналізує останні повідомлення та витягує значення для налаштованих полів. Витягнуті значення зберігаються одразу, тому наступні вузли в тому ж повідомленні вже бачать оновлену пам'ять — це дозволяє маршрутизацію на основі стану в межах одного повідомлення.

### Права колонка

**Personality** — 5 повзунків (1–10), що формують стиль комунікації:

| Повзунок            | Низький (1–3)             | Високий (7–10)                 |
| ------------------- | ------------------------- | ------------------------------ |
| **Response Length** | Короткі, стислі відповіді | Детальні, розгорнуті відповіді |
| **Humor**           | Строго професійно         | Легкий гумор дозволений        |
| **Formality**       | Неформальний тон          | Офіційна мова                  |
| **Clarity**         | Стандартні пояснення      | Надзвичайно чіткі, покрокові   |
| **Emoji Usage**     | Без емодзі                | Емодзі у відповідях            |

**LLM Provider & Model** — див. [LLM-провайдери](#llm-провайдери).

**Temperature** — контролює випадковість відповідей: 0 = детерміновано (те саме питання → та сама відповідь), 1 = креативно (різноманітні відповіді). За замовчуванням: 0.7.

***

## LLM-провайдери

4 провайдери, кожен зі стандартною (швидшою, дешевшою) та преміум (якіснішою) моделлю:

| Провайдер         | Стандартна           | Преміум                 |
| ----------------- | -------------------- | ----------------------- |
| **OpenAI**        | GPT-4o Mini          | GPT-4o                  |
| **Anthropic**     | Claude 3.5 Haiku     | Claude 3.5 Sonnet       |
| **Google Gemini** | Gemini 2.0 Flash     | Gemini 2.5 Pro          |
| **Groq**          | Llama 3.1 8B Instant | Llama 3.3 70B Versatile |

<Note>
  Преміум-моделі потребують розширений план. На стандартних планах преміум-моделі заблоковані з підказкою для оновлення.
</Note>

Всі провайдери підтримують виклик функцій (tools), стрімінг, circuit breaker (автоматичне перемикання при падінні провайдера) та retry з експоненціальним відступом при rate limits.

LLM встановлюється глобально на вкладці Agent, але може бути **перевизначений на рівні вузла воркфлоу** — наприклад, використовуйте швидку модель для пошуку продуктів і преміум-модель для фінального форматування відповіді.

***

## Воркфлоу

Вкладка Workflow — візуальний канвас, де ви проектуєте логіку розмови агента. Замість одного промпту, воркфлоу розділяє обробку між **вузлами** — кожен зі своїм промптом, інструментами та базою знань — з'єднаними **з'єднаннями** з умовами маршрутизації.

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/revolai/B4zPwXpQ9Qvk4wCE/images/agent-workflow-light.png?fit=max&auto=format&n=B4zPwXpQ9Qvk4wCE&q=85&s=4d108a836bee8a8d9fa255a4ec5463dc" alt="Редактор воркфлоу" width="2867" height="1553" data-path="images/agent-workflow-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/revolai/B4zPwXpQ9Qvk4wCE/images/agent-workflow-dark.png?fit=max&auto=format&n=B4zPwXpQ9Qvk4wCE&q=85&s=35782e7838c7f60e8298d7db2533c303" alt="Редактор воркфлоу" width="2879" height="1554" data-path="images/agent-workflow-dark.png" />
</Frame>

### Воркфлоу за замовчуванням

Кожен новий агент починає з цього попередньо побудованого воркфлоу:

```
[Voice Input*] → [Start] → [Product Agent] ──→ [Formatter] → [Voice Output*]
                           → [Media Agent]   ──↗
                           → [Company Agent] ──↗
```

*Голосові вузли неактивні за замовчуванням — активуються при увімкненні голосу.*

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/revolai/NOERXHD6sNh6Rtlx/images/agent-default-workflow-light.png?fit=max&auto=format&n=NOERXHD6sNh6Rtlx&q=85&s=fce42112cc57cfdeffbaa32208b70955" alt="Воркфлоу за замовчуванням" width="1780" height="783" data-path="images/agent-default-workflow-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/revolai/NOERXHD6sNh6Rtlx/images/agent-default-workflow-dark.png?fit=max&auto=format&n=NOERXHD6sNh6Rtlx&q=85&s=5797ff31e018f88788e8b92948cf6620" alt="Воркфлоу за замовчуванням" width="1640" height="733" data-path="images/agent-default-workflow-dark.png" />
</Frame>

Вузол **Start** маршрутизує повідомлення до трьох паралельних системних агентів. Кожен обробляє повідомлення зі своїми інструментами та знаннями. **Formatter** об'єднує їх результати в єдину відповідь.

### Типи вузлів

| Вузол                  | Тип                | Опис                                                                                |
| ---------------------- | ------------------ | ----------------------------------------------------------------------------------- |
| **Start**              | `start`            | Точка входу. Завжди присутній, не можна видалити.                                   |
| **Product Agent**      | `system_product`   | Пошук продуктів, перевірка наявності, деталі. Має доступ до інструментів продуктів. |
| **Media Agent**        | `system_media`     | Отримання фото, відео та документів.                                                |
| **Company Agent**      | `system_company`   | Інформація про компанію, питання підтримки.                                         |
| **Response Formatter** | `system_formatter` | Об'єднує виходи паралельних вузлів у когерентну відповідь.                          |
| **Voice Input (STT)**  | `system_stt`       | Перетворення мовлення в текст. Неактивний за замовчуванням.                         |
| **Voice Output (TTS)** | `system_tts`       | Перетворення тексту в мовлення. Неактивний за замовчуванням.                        |
| **Custom**             | `custom`           | Ваш власний вузол з кастомним промптом, інструментами, БЗ та налаштуваннями LLM.    |

### Додавання кастомних вузлів

Натисніть **+ Add Node** на панелі інструментів канвасу → введіть назву → новий Custom вузол з'являється на канвасі. Можна додати скільки завгодно кастомних вузлів.

Кастомні вузли — найпотужніша частина воркфлоу. Кожен кастомний вузол — це по суті міні-агент зі своїми:

* **Conversation Goal** — системний промпт для цього вузла (наприклад, "Допоможіть користувачам обрати правильний тарифний план на основі розміру команди та бюджету")
* **Tools** — обрати, які інструменти може викликати цей вузол (незалежно від інструментів агента)
* **Knowledge Base** — обрати конкретні джерела знань для RAG-контексту цього вузла
* **LLM Override** — використовувати іншу модель для цього вузла
* **Agent Mode** — увімкнути багатораундовий виклик інструментів (див. нижче)

### Панель налаштувань вузла

Натисніть на будь-який вузол на канвасі, щоб відкрити панель налаштувань справа. Панель має вкладки, які залежать від типу вузла:

**Вкладка General** (всі вузли):

| Налаштування          | Опис                                                                           |
| --------------------- | ------------------------------------------------------------------------------ |
| **Name**              | Відображуване ім'я (заблоковане для Start)                                     |
| **Active**            | Перемикач участі вузла у воркфлоу                                              |
| **Conversation Goal** | Системний промпт для цього вузла. Доступний для всіх, крім Start та Formatter. |

**Agent Mode** (лише кастомні вузли з інструментами):

Коли увімкнений, вузол може робити **кілька раундів викликів інструментів** перед відповіддю. Без Agent Mode вузол робить максимум 1 виклик інструменту за повідомлення.

| Налаштування   | Діапазон | За замовч. | Опис                                      |
| -------------- | -------- | ---------- | ----------------------------------------- |
| **Max Rounds** | 2–10     | 5          | Скільки раундів викликів LLM може зробити |
| **Timeout**    | 10–60с   | 30с        | Максимальний час виконання                |

<Tip>
  Використовуйте Agent Mode, коли вузлу потрібно ланцюгувати кілька інструментів — наприклад, спочатку знайти продукти, потім перевірити наявність найкращого, потім отримати детальні характеристики. Без Agent Mode вузлу знадобилось би 3 окремих повідомлення.
</Tip>

**Перевизначення LLM** (всі, крім Start):

Перемикач для використання іншого LLM-провайдера та моделі для цього вузла. Коли вимкнений, вузол використовує глобальне налаштування агента. Випадаючий список показує "Default (agent setting)" без перевизначення.

**Вкладка Tools** (кастомні та системні вузли):

Список всіх доступних інструментів, згрупованих за категорією (Products, Support, Documents). Кожен інструмент має перемикач. Інструменти тут незалежні від вкладки Tools агента — ви контролюєте, які саме інструменти має кожен вузол.

**Вкладка Knowledge Base** (лише кастомні вузли):

Обрати конкретні джерела знань для RAG-контексту цього вузла. Випадаюче меню "Add document" з пошуком та фільтрацією за типом. Якщо джерела не обрані, вузол використовує глобальну базу знань агента.

<Note>
  Підказка внизу посилається на вкладку Knowledge Base агента: "To make more data available for this node, add files to the agent's Knowledge Base."
</Note>

**Вкладка Edges** (всі вузли):

Налаштування вихідних з'єднань до інших вузлів. Див. [Умови з'єднань](#умови-зєднань).

**Вкладка Voice Settings** (лише вузли STT та TTS):

Налаштування розпізнавання та синтезу мовлення — див. розділ [Голос](#голос).

**Delete Node** — доступно лише для кастомних вузлів. Системні вузли не можна видалити.

### Умови з'єднань

З'єднання (edges) з'єднують вузли та контролюють маршрутизацію повідомлень. Кожне з'єднання має **цільовий вузол**, **тип умови** та **пріоритет**. Воркфлоу оцінює з'єднання по рівнях пріоритету — перший рівень, що дає збіг, перемагає, нижчі рівні не перевіряються.

Натисніть **+ Add Edge** у вкладці Edges вузла, щоб створити з'єднання.

| Умова               | Пріоритет      | Коли маршрутизує                                                                                         |
| ------------------- | -------------- | -------------------------------------------------------------------------------------------------------- |
| **Keyword**         | 100 (найвищий) | Повідомлення містить **будь-яке** з вказаних ключових слів. Без врахування регістру, збіг по межах слів. |
| **State Condition** | 95             | Всі вказані умови полів пам'яті виконуються (логіка AND).                                                |
| **Always**          | 90             | Завжди маршрутизує — для безумовних з'єднань.                                                            |
| **Intent**          | 50             | На основі визначеного наміру повідомлення.                                                               |
| **Fallback**        | 10 (найнижчий) | Маршрутизує лише якщо **жодне інше з'єднання** з цього вузла не спрацювало.                              |

#### Умова Keyword

Введіть ключові слова через кому. Воркфлоу перевіряє, чи містить повідомлення відвідувача будь-яке з них, використовуючи збіг без врахування регістру по межах слів.

Кілька keyword-з'єднань можуть спрацювати на одне повідомлення — всі збіги запускаються паралельно, надсилаючи повідомлення до кількох вузлів одночасно.

**Приклад:** Ключові слова `ціна, вартість, скільки коштує, прайс` — з'єднання спрацьовує, коли відвідувач питає "Скільки коштує?" або "Який у вас прайс?"

#### Умова State Condition

Перевірка значень полів [Conversation Memory](#conversation-memory). Ви будуєте правила з:

| Оператор         | Значення                   | Приклад                                                     |
| ---------------- | -------------------------- | ----------------------------------------------------------- |
| **is filled**    | Поле має будь-яке значення | `email` заповнено → маршрут до вузла "Надіслати пропозицію" |
| **is empty**     | Поле не має значення       | `name` порожнє → маршрут до вузла "Запитати ім'я"           |
| **equals**       | Точний збіг                | `budget` дорівнює `enterprise`                              |
| **not equals**   | Не збігається              | `plan` не дорівнює `free`                                   |
| **contains**     | Збіг підрядка              | `interests` містить `premium`                               |
| **greater than** | Числове порівняння         | `budget` > `5000`                                           |
| **less than**    | Числове порівняння         | `team_size` \< `10`                                         |

Кілька умов в одному з'єднанні використовують **логіку AND** — всі повинні бути істинними.

<Note>
  State conditions повністю пропускаються, якщо пам'ять порожня (жодне поле ще не зібрано). Це означає, що умови `is empty` не спрацюють, поки агент не почне збирати хоча б одне поле пам'яті.
</Note>

**Приклад воркфлоу зі State Conditions:**

```
[Start] → (name порожнє)       → [Вузол "Запитати ім'я"]
        → (name заповнене,      → [Вузол "Надіслати пропозицію"]
           email заповнене)
        → (fallback)            → [Вузол "Загальний чат"]
```

#### Умова Always

З'єднання завжди спрацьовує. Всі Always-з'єднання з вузла запускаються паралельно — повідомлення надсилається до кожного цільового вузла одночасно. Саме так воркфлоу за замовчуванням розгалужується від Start до трьох системних агентів.

#### Умова Fallback

Маршрутизує лише коли жодне з'єднання з вищим пріоритетом не спрацювало. На відміну від Keyword та Always, спрацьовує лише **одне** fallback-з'єднання (перше) — без паралельного виконання.

<Warning>
  Якщо жодне з'єднання не спрацювало і немає fallback, вихід вузла може не потрапити до Formatter і відвідувач не отримає відповіді з цієї гілки.
</Warning>

### Стратегія об'єднання

Коли кілька вузлів дають результати паралельно (як 3 системних агенти у воркфлоу за замовчуванням), **Formatter** об'єднує їх:

| Стратегія  | Вартість              | Як працює                                                 |
| ---------- | --------------------- | --------------------------------------------------------- |
| **Concat** | Безкоштовно           | Конкатенує всі виходи вузлів у контекст для Formatter     |
| **LLM**    | Додатковий виклик LLM | Використовує LLM для синтезу єдиної когерентної відповіді |

### Керування канвасом

| Дія                                 | Результат                                                  |
| ----------------------------------- | ---------------------------------------------------------- |
| **Перетягування** порожньої області | Переміщення канвасу                                        |
| **Ctrl + Прокрутка** або щипок      | Зум (0.3x–2.0x)                                            |
| **Двопальцева прокрутка**           | Переміщення                                                |
| **+ Add Node**                      | Створити новий кастомний вузол                             |
| **Template**                        | Застосувати шаблон воркфлоу з маркетплейсу                 |
| **Reset**                           | Відновити воркфлоу за замовчуванням (діалог підтвердження) |
| **Test**                            | Відкрити тестовий чат внизу канвасу                        |

***

## Інструменти

Інструменти — це функції, які агент може викликати під час розмов. Вони розширюють агента за межі генерації тексту — пошук продуктів, запити до баз даних, відправлення листів, здійснення дзвінків.

### Як працюють інструменти

<Steps>
  <Step title="LLM вирішує використати інструмент">
    На основі повідомлення відвідувача та опису інструментів у промпті, LLM генерує виклик інструменту з параметрами (наприклад, `get_products({ query: "кросівки", available_only: true })`).
  </Step>

  <Step title="Інструмент виконується">
    Система виконує функцію інструменту з наданими параметрами і отримує результат.
  </Step>

  <Step title="Результат повертається до LLM">
    Результат інструменту вставляється назад у розмову. LLM використовує його для формулювання природної відповіді.
  </Step>

  <Step title="Багатораундовий режим (Agent Mode)">
    Якщо у вузла увімкнений Agent Mode, LLM може зробити ще один виклик на основі першого результату — до налаштованої кількості раундів.
  </Step>
</Steps>

Кожен виклик інструменту логується з вхідними, вихідними даними, часом виконання та статусом. Переглядайте логи через **Tool Logs** у заголовку агента.

### Вбудовані інструменти (9)

Завжди доступні, інтеграція не потрібна:

| Інструмент                 | Категорія | Що робить                                                                                      |
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------- |
| **get\_products**          | Products  | Пошук продуктів за назвою/описом. Повертає список з цінами та наявністю.                       |
| **get\_product\_details**  | Products  | Повні деталі одного продукту — всі параметри, ціни, опис.                                      |
| **check\_availability**    | Products  | Перевірка наявності конкретного продукту.                                                      |
| **search\_by\_parameters** | Products  | Фільтрація продуктів за значеннями атрибутів з операторами: `=`, `<=`, `>=`, `<`, `>`, `like`. |
| **get\_company\_info**     | Support   | Назва компанії, опис, телефон, контакти.                                                       |
| **search\_documents**      | Documents | Семантичний RAG-пошук — знаходить релевантні фрагменти з бази знань.                           |
| **get\_photos**            | Documents | Отримання фото за запитом або ID продукту.                                                     |
| **get\_videos**            | Documents | Отримання відео за запитом або ID продукту.                                                    |
| **get\_documents**         | Documents | Отримання PDF/Word/Excel файлів, фільтрація за форматом.                                       |

### Інтеграційні інструменти (60+)

Підключіть зовнішні сервіси в [Інтеграціях](/uk/integrations/overview) для розблокування інструментів:

<AccordionGroup>
  <Accordion title="VoIP — Twilio, Binotel, Ringostat">
    Здійснення вихідних дзвінків, відправлення SMS, отримання історії дзвінків.
  </Accordion>

  <Accordion title="Telegram">
    Відправлення повідомлень, файлів, редагування/видалення повідомлень, отримання історії чату та інформації.
  </Accordion>

  <Accordion title="WhatsApp">
    Відправлення повідомлень, медіа, шаблонних повідомлень, отримання профілю, позначення як прочитане.
  </Accordion>

  <Accordion title="Facebook та Instagram">
    Відправлення повідомлень, медіа, кнопок (Facebook), отримання профілю. Facebook Ads: кампанії, групи оголошень, інсайти, пауза кампаній.
  </Accordion>

  <Accordion title="Gmail">
    Читання вхідних, відправлення листів, відповіді, чернетки, пошук, вкладення.
  </Accordion>

  <Accordion title="Google Calendar">
    Перегляд/створення/оновлення/видалення подій, перевірка доступності, пошук вільного часу.
  </Accordion>

  <Accordion title="Google Docs">
    Читання/створення/доповнення/експорт/пошук документів.
  </Accordion>

  <Accordion title="Google Sheets">
    Читання/запис діапазонів, додавання рядків, оновлення клітинок, пошук, створення таблиць.
  </Accordion>

  <Accordion title="Google Drive">
    Перегляд/читання/створення/оновлення/видалення файлів, створення папок, спільний доступ, пошук.
  </Accordion>

  <Accordion title="Google Meet">
    Створення посилань на зустрічі.
  </Accordion>

  <Accordion title="Google Ads">
    Отримання кампаній, ключових слів, пауза кампаній.
  </Accordion>

  <Accordion title="Webhooks">
    Відправлення кастомних JSON-payload на будь-який URL, тест з'єднання.
  </Accordion>
</AccordionGroup>

### Інструменти на рівні агента vs вузла

Є **два місця** для управління інструментами:

1. **Agent → вкладка Tools** — показує всі інтеграційні інструменти, згруповані за провайдером. Увімкніть/вимкніть інструменти на рівні агента. Інструменти тут стають доступними для всіх вузлів воркфлоу.

2. **Workflow → Налаштування вузла → вкладка Tools** — перемикайте інструменти для кожного вузла. Вузол може використовувати лише інструменти, увімкнені на рівні агента. Це дозволяє обмежити доступ вузлів до конкретних інструментів.

**Приклад:** Увімкніть інструменти Gmail на рівні агента, але дайте доступ до `send_email` лише кастомному вузлу "Відправити follow-up" — інші вузли не зможуть відправляти листи.

***

## База знань (RAG)

Вкладка Knowledge Base підключає джерела даних, які агент використовує для відповідей. Коли відвідувач щось запитує, агент шукає в базі знань за **векторною подібністю** (RAG — Retrieval-Augmented Generation) і включає релевантний контекст у відповідь.

### Типи джерел

| Джерело       | Що індексується                                                  |
| ------------- | ---------------------------------------------------------------- |
| **Products**  | Назва, опис, додатковий промпт, ціна                             |
| **Documents** | Назва файлу + витягнутий текстовий вміст (PDF, Word, Excel, TXT) |
| **Photos**    | Назва фото + опис                                                |
| **Videos**    | Назва відео + опис/вміст                                         |
| **Text**      | Назва + вільний текст                                            |
| **Links**     | Назва URL + отриманий вміст сторінки                             |
| **Company**   | Назва компанії, промо-текст, опис, телефон                       |

### Як працює RAG

<Steps>
  <Step title="Додайте джерела">
    У вкладці Knowledge Base натисніть "Add document" і оберіть джерела з даних компанії — продукти, файли, текстові фрагменти, посилання.
  </Step>

  <Step title="Тренування">
    Система розбиває кожне джерело на сегменти (за замовчуванням макс. 2000 символів на чанк, 20% перекриття на межах речень), генерує векторні ембедінги через OpenAI `text-embedding-ada-002` (1536 вимірів) і зберігає в PostgreSQL з pgvector.
  </Step>

  <Step title="Відвідувач надсилає повідомлення">
    Повідомлення відвідувача ембедиться в той самий векторний простір. Система знаходить найбільш подібні чанки за косинусною подібністю.
  </Step>

  <Step title="Ін'єкція контексту">
    Топ-чанки (за замовчуванням: до 5, мінімальна подібність 0.6) вставляються в промпт агента як контекст бази знань.
  </Step>

  <Step title="Відповідь">
    LLM бачить питання відвідувача поруч з релевантними знаннями і генерує інформовану відповідь.
  </Step>
</Steps>

Тренування запускається автоматично при додаванні або зміні джерел. Прогрес показується у вкладці Knowledge Base (відсоток, оброблені елементи).

### База знань на рівні агента vs вузла

* **На рівні агента** (вкладка Knowledge Base) — джерела доступні всім вузлам воркфлоу
* **На рівні вузла** (Workflow → Вузол → вкладка Knowledge Base) — обмежити RAG конкретними джерелами для цього вузла

**Приклад:** Ваш кастомний вузол "Технічна підтримка" бачить лише інструкції до продуктів та FAQ, а вузол "Продажі" бачить каталоги з цінами.

<Tip>
  Конкретний, добре структурований контент працює краще, ніж довгі загальні документи. Описи продуктів з чіткими параметрами дають точні відповіді. Короткі FAQ працюють краще за великі мануали.
</Tip>

***

## Голос

Голосові налаштування доступні у вкладці Widget → підвкладка **Voice** або безпосередньо у вузлах STT/TTS воркфлоу.

### Розпізнавання мовлення (STT)

| Налаштування   | Опції                                                  |
| -------------- | ------------------------------------------------------ |
| **Провайдер**  | OpenAI Whisper, Google Speech (незабаром)              |
| **Мова**       | Українська, English                                    |
| **Привітання** | Текст + попередньо синтезоване аудіо при старті голосу |
| **Прощання**   | Текст + попередньо синтезоване аудіо при завершенні    |

### Синтез мовлення (TTS)

| Налаштування  | Опції                                                                                                                   |
| ------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Провайдер** | OpenAI TTS (ElevenLabs і Google Cloud незабаром)                                                                        |
| **Голос**     | Alloy (нейтральний), Echo (теплий), Fable (експресивний), Onyx (глибокий), Nova (дружній, за замовч.), Shimmer (м'який) |
| **Модель**    | `tts-1` (стандартна), `tts-1-hd` (HD якість)                                                                            |
| **Швидкість** | 0.5x – 2.0x                                                                                                             |

### Голосовий конвеєр

<Steps>
  <Step title="Аудіо отримано">
    Аудіо відвідувача надсилається на сервер (макс. 10МБ, формати: webm, ogg, wav, mp3).
  </Step>

  <Step title="STT-транскрипція">
    Аудіо транскрибується в текст. Транскрипт стрімиться в реальному часі через SSE.
  </Step>

  <Step title="Обробка воркфлоу">
    Транскрипт обробляється тим самим воркфлоу, що й текст — RAG, інструменти, маршрутизація.
  </Step>

  <Step title="TTS-синтез">
    Відповідь розбивається на речення, кожне синтезується в аудіо. Чанки стрімяться в міру генерації.
  </Step>

  <Step title="Відтворення">
    Відвідувач чує відповідь як стрімінг-аудіо, бачачи текст.
  </Step>
</Steps>

<Note>
  Голос потребує план з голосовими можливостями. На планах без голосу контроли показують підказку для оновлення, а Chat Only Mode примусово увімкнений.
</Note>

***

## Канали

Вкладка Channels контролює, де агент отримує повідомлення.

| Канал         | Потребує             | Опис                                                       |
| ------------- | -------------------- | ---------------------------------------------------------- |
| **Widget**    | Нічого (вбудований)  | Чат-віджет на сайті через трекер-скрипт                    |
| **Phone**     | VoIP-інтеграція      | Вхідні/вихідні дзвінки через Twilio, Binotel або Ringostat |
| **Telegram**  | Telegram-інтеграція  | Розмови через Telegram-бота                                |
| **WhatsApp**  | WhatsApp-інтеграція  | WhatsApp Business API                                      |
| **Instagram** | Instagram-інтеграція | Instagram DM                                               |

### Підключення каналу

**Widget** — натисніть Enable. Віджет починає відповідати на сайті одразу.

**Інші канали:**

1. Підключіть інтеграцію в [Інтеграціях](/uk/integrations/overview)
2. У вкладці Channels оберіть ресурс з випадаючого списку (номер телефону, бот, сторінка)
3. Натисніть Enable — генерується унікальний **webhook URL**

Кожна картка каналу показує статус підключення, назву ресурсу, кількість розмов та webhook URL з кнопкою копіювання.

***

## Кастомізація віджета

Вкладка Widget має **живий перегляд** зліва (перемикач desktop/tablet/mobile) та панель налаштувань справа з 3 підвкладками.

### Зовнішній вигляд

| Налаштування   | Опис                                                                                                 |
| -------------- | ---------------------------------------------------------------------------------------------------- |
| **Кольори**    | 6 кольорових пікерів: Primary, Chat button, Message background, Animation, Rating stars, Status text |
| **Написи**     | Заголовок, текст кнопки дзвінка, тексту чату, плейсхолдер введення                                   |
| **Позиція**    | Bottom Right, Bottom Center, Bottom Left, Top Right, Top Center, Top Left                            |
| **Тема**       | Light або Dark                                                                                       |
| **Розмір**     | Small, Medium, Large                                                                                 |
| **Радіус**     | 0–50px закруглення кутів                                                                             |
| **Прозорість** | 0–100% прозорість фону                                                                               |
| **Аватар**     | URL кастомного аватара                                                                               |

### Поведінка

| Налаштування              | Опис                                                            |
| ------------------------- | --------------------------------------------------------------- |
| **Мова**                  | English, Українська, Polski, Deutsch, Español                   |
| **Збір відгуків**         | Показувати зірковий рейтинг після розмови                       |
| **Текст під час дзвінка** | Дозволити введення тексту під час голосового дзвінка            |
| **Тільки чат**            | Вимкнути голос (тільки текст). Примусово для планів без голосу. |
| **Умови використання**    | Вимагати прийняття перед чатом. Кастомний текст і URL.          |
| **Звукові ефекти**        | Увімкнення/вимкнення звуків сповіщень                           |
| **Автовідкриття**         | Автоматично відкривати віджет після затримки (0–60 секунд)      |
| **Автопривітання**        | Автоматично надсилати перше повідомлення                        |
| **На мобільних**          | Відображення на мобільних пристроях                             |
| **На десктопі**           | Відображення на десктопних пристроях                            |
| **Powered By**            | Показати/приховати брендинг "Powered by Revol"                  |
| **Вітальне повідомлення** | Текст у заголовку віджета                                       |

### Голос

Налаштування STT та TTS — ті самі, що описані в розділі [Голос](#голос). Налаштовуються тут або у вузлах STT/TTS воркфлоу (синхронізуються).

***

## Аналітика

Двоколонковий макет: список розмов (зліва) + деталі розмови (справа).

### Фільтри

| Фільтр     | Опис                                               |
| ---------- | -------------------------------------------------- |
| **Пошук**  | Текстовий пошук по розмовах                        |
| **Канал**  | All / Web / Telephony / Messengers / Widget / тощо |
| **Статус** | All / Active / Closed / Archived                   |
| **Період** | Дата від/до                                        |

Список розмов показує 20 на сторінку з пагінацією "Load more". Нові розмови з'являються в реальному часі через WebSocket.

### Деталі розмови (4 підвкладки)

| Вкладка           | Вміст                                                                       |
| ----------------- | --------------------------------------------------------------------------- |
| **Transcription** | Повна нитка повідомлень — бульбашки користувача та асистента з мітками часу |
| **Rating**        | Зірковий рейтинг відвідувача (1–5) та опціональний коментар                 |
| **Tokens**        | Розбивка використання токенів по повідомленнях                              |
| **Info**          | Канал, статус, ID сесії, зібрані поля пам'яті, дата створення               |

***

## Архітектура системного промпту

Розуміння складання фінального промпту допомагає писати кращі інструкції.

<Steps>
  <Step title="Ваш системний промпт">
    Текст з вкладки Agent (або Conversation Goal вузла для кастомних вузлів). Якщо порожній, генерується промпт за замовчуванням з назвою компанії та базовими правилами.
  </Step>

  <Step title="Блок безпеки">
    Автоматично додається. 4 правила проти ін'єкцій — агент не розкриє промпт, не змінить роль і не виконає спроби перевизначення.
  </Step>

  <Step title="Інструкції стилю">
    Генеруються з повзунків персональності — довжина відповіді, гумор, формальність, чіткість, емодзі перетворюються на текстові інструкції.
  </Step>

  <Step title="Описи інструментів">
    Функціональні схеми всіх увімкнених інструментів, щоб LLM знав, що може викликати.
  </Step>

  <Step title="RAG-контекст">
    Релевантні чанки бази знань, вставлені як блок "Knowledge Base Context".
  </Step>

  <Step title="Контекст кампанії">
    Якщо відвідувач прийшов через кампанію з налаштуванням AI Agent Behavior, промпт кампанії вставляється.
  </Step>

  <Step title="Стан пам'яті">
    Поточні значення зібраних полів пам'яті (наприклад, `name: Іван, email: ivan@example.com`), щоб агент знав, що вже зібрав.
  </Step>

  <Step title="Визначення мови">
    Якщо повідомлення відвідувача не містить кириличних символів, додається системна інструкція: "Відповідай тією ж мовою, якою написане повідомлення користувача."
  </Step>
</Steps>

***

## Код вставки

Натисніть **Embed** у заголовку агента, щоб отримати HTML-сніпет:

```html theme={null}
<script
  src="https://your-domain.com/tracker.js"
  data-company-id="YOUR_COMPANY_ID"
  data-api-key="YOUR_API_KEY"
  async>
</script>
```

Завантажує трекер (аналітика, кампанії, події, тригери, підміна номерів) і чат-віджет з активним агентом. Якщо API-ключ не існує, натисніть **Generate API Key**.

***

## Ліміти плану

| Ресурс                   | Що контролює                                                         |
| ------------------------ | -------------------------------------------------------------------- |
| **Max Agents**           | Кількість агентів                                                    |
| **Max Conversations**    | Розмови за білінговий період                                         |
| **Standard Token Quota** | Токени для стандартних моделей (GPT-4o Mini, Haiku, Flash, Llama 8B) |
| **Premium Token Quota**  | Токени для преміум-моделей (GPT-4o, Sonnet, Gemini Pro, Llama 70B)   |
| **Daily Token Limit**    | Денний ліміт токенів по всіх моделях                                 |
| **STT Minutes**          | Хвилини транскрипції                                                 |
| **TTS Characters**       | Символи синтезу мовлення                                             |
| **Embedding Tokens**     | Токени для тренування бази знань                                     |
| **Storage**              | Сховище файлів                                                       |
| **Voice**                | Прапорець функції — увімкнення/вимкнення голосу                      |
| **Model Access**         | `standard` або `premium` — доступ до преміум-моделей                 |
