> ## 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.

# Agenci AI

> Twórz inteligentnych asystentów AI z niestandardowymi przepływami pracy, bazami wiedzy, funkcjami głosowymi i wielokanałowym wdrażaniem

## Czym są Agenci AI?

Agenci AI w Revol to inteligentni asystenci, którzy obsługują interakcje z klientami w wielu kanałach — widżet na stronie internetowej, rozmowy telefoniczne, Telegram, WhatsApp i Instagram. Każdy agent ma własną osobowość, bazę wiedzy, przepływ konwersacji i zestaw narzędzi.

### Tryby działania

Agenci mogą działać w trzech trybach w zależności od potrzeb Twojej firmy:

| Tryb          | Kto komunikuje | Rola agenta                                                                                                                                                                                                           |
| ------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Aktywny**   | Agent AI       | Agent w pełni obsługuje komunikację z klientem — odpowiada na wiadomości, wywołuje narzędzia, realizuje przepływ pracy i samodzielnie rozwiązuje zgłoszenia                                                           |
| **Pasywny**   | Twój zespół    | Twój zespół prowadzi całą komunikację z klientami. Agent monitoruje każdą rozmowę w tle — audytuje zgodność ze standardami komunikacji, śledzi wskaźniki jakości i dostarcza analizy, nigdy nie odpowiadając klientom |
| **Hybrydowy** | Obaj           | AI obsługuje rutynowe interakcje (FAQ, zapytania o produkty, planowanie), a Twój zespół przejmuje złożone lub wrażliwe sprawy. Agent na bieżąco analizuje wszystkie rozmowy, niezależnie od tego, kto odpowiada       |

<Tip>
  **Tryb pasywny** jest idealny dla zespołów, które mają już ustalone procesy komunikacji. Agent staje się stałym audytorem jakości — sprawdza, czy operatorzy przestrzegają skryptów, identyfikuje przeoczone szanse, monitoruje czasy odpowiedzi i wyciąga wnioski z rozmów. Cała analityka, ekstrakcja pamięci i śledzenie działają tak samo jak w trybie aktywnym.
</Tip>

***

## Tworzenie agenta

Kliknij **Utwórz agenta**, aby rozpocząć 2-etapowy kreator:

**Krok 1** — wprowadź nazwę agenta (min. 3 znaki) i opcjonalną pierwszą wiadomość (tekst powitania).

**Krok 2** — wybierz przypadek użycia: Obsługa klienta, Sprzedaż wychodząca, Kwalifikacja leadów, Serwis telefoniczny, Rezerwacja konsultacji, Przyjmowanie klientów, Rekomendacje usług, Planowanie, Zapytania o rozliczenia, Aktualizacje projektów, Biblioteka zasobów, Nauka i rozwój lub Inny. Ma to charakter wyłącznie wizualny — wybrany przypadek użycia nie wpływa na zachowanie ani konfigurację agenta.

Po utworzeniu agent rozpoczyna w statusie **Szkic** z już zbudowanym [domyślnym przepływem pracy](#domyslny-przeplyw-pracy).

### Status agenta

| Status         | Zachowanie                                                                                                                      |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Szkic**      | Nieaktywny. Używaj podczas konfiguracji.                                                                                        |
| **Aktywny**    | Działający, odpowiada na wiadomości. **Tylko jeden agent na firmę może być aktywny** — aktywacja jednego dezaktywuje pozostałe. |
| **Nieaktywny** | Wstrzymany. Zachowuje całą konfigurację.                                                                                        |

***

## Edytor agenta

Edytor agenta to pełnoekranowe okno modalne z **7 zakładkami**: Agent, Baza wiedzy, Analiza, Narzędzia, Widżet, Kanały, Przepływ pracy.

<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="Edytor agenta" 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="Edytor agenta" width="2880" height="1556" data-path="images/agent-editor-dark.png" />
</Frame>

### Nagłówek

Nagłówek jest zawsze widoczny i pokazuje:

* Nazwa agenta (kliknij, aby zmienić nazwę inline)
* Znacznik statusu (Aktywny / Nieaktywny)
* **Kod osadzania** — pobierz fragment `<script>` widżetu
* **Logi narzędzi** — przeglądaj wszystkie wykonania narzędzi i zdarzenia kanałów
* **Podgląd** — link do strony klienta, na której zainstalowany jest widżet, aby zobaczyć go tak jak odwiedzający
* **Opublikuj** — opublikuj w Marketplace (publiczny lub prywatny)

***

## Zakładka Agent

Główna zakładka konfiguracji, w której ustawiasz podstawowe parametry agenta — prompt systemowy, osobowość, dostawcę LLM i pamięć konwersacji.

### Lewa kolumna

**Prompt systemowy** — główne instrukcje definiujące zachowanie agenta. Jeśli pozostawisz puste pole, zostanie wygenerowany domyślny prompt z nazwą Twojej firmy i podstawowymi zasadami komunikacji.

<Tip>
  Blok bezpieczeństwa jest automatycznie dołączany do każdego promptu systemowego. Zapobiega on wstrzykiwaniu promptów — agent nigdy nie ujawni swoich instrukcji, nie zignoruje zasad bezpieczeństwa ani nie zastosuje się do prób zmiany swojej roli. Nie musisz dodawać tego ręcznie.
</Tip>

**Pierwsza wiadomość** — tekst powitania, który odwiedzający widzą po otwarciu czatu.

**Pamięć konwersacji** — ustrukturyzowane pola, które agent powinien zbierać podczas rozmów. Każde pole ma:

| Właściwość   | Opis                                                      |
| ------------ | --------------------------------------------------------- |
| **Klucz**    | Identyfikator maszynowy (małe litery, tylko podkreślenia) |
| **Etykieta** | Nazwa czytelna dla człowieka wyświetlana w analityce      |
| **Typ**      | Tekst, Telefon, Email, Liczba lub Wybór                   |
| **Opcje**    | Dla typu Wybór — wartości oddzielone przecinkami          |

Pola pamięci są używane w routingu przepływu pracy (Warunki stanu na krawędziach) i pojawiają się w zakładce Informacje rozmowy. Na przykład możesz zdefiniować pola takie jak `name`, `email`, `budget` — agent będzie próbował zebrać je naturalnie podczas rozmowy, a Ty możesz kierować krawędzie przepływu pracy na podstawie tego, czy zostały wypełnione.

**Jak działa ekstrakcja pamięci:** po tym, jak każdy niestandardowy węzeł wygeneruje odpowiedź, system wykonuje lekkie wywołanie LLM, które analizuje ostatnie wiadomości i wyodrębnia wartości dla skonfigurowanych pól. Wyodrębnione wartości są zapisywane natychmiast, więc kolejne węzły w tej samej turze widzą już zaktualizowaną pamięć — umożliwiając routing oparty na stanie w ramach jednej tury konwersacji.

### Prawa kolumna

**Osobowość** — 5 suwaków (1–10), które kształtują styl komunikacji:

| Suwak                  | Niski (1–3)                 | Wysoki (7–10)                        |
| ---------------------- | --------------------------- | ------------------------------------ |
| **Długość odpowiedzi** | Krótkie, zwięzłe odpowiedzi | Szczegółowe, wyczerpujące odpowiedzi |
| **Humor**              | Ściśle profesjonalny        | Dopuszczalny lekki humor             |
| **Formalność**         | Swobodny, konwersacyjny ton | Formalny, biznesowy język            |
| **Jasność**            | Standardowe wyjaśnienia     | Ekstra jasne, krok po kroku          |
| **Użycie emoji**       | Bez emoji                   | Emoji w odpowiedziach                |

**Dostawca i model LLM** — zobacz [Dostawcy LLM](#dostawcy-llm).

**Temperatura** — kontroluje losowość odpowiedzi: 0 = deterministyczny (to samo pytanie → ta sama odpowiedź), 1 = kreatywny (zróżnicowane odpowiedzi). Domyślnie: 0.7.

***

## Dostawcy LLM

4 dostawców, każdy ze standardowym (szybszym, tańszym) i premium (wyższa jakość) modelem:

| Dostawca          | Standardowy          | Premium                 |
| ----------------- | -------------------- | ----------------------- |
| **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>
  Modele premium wymagają ulepszonego planu. W planach standardowych modele premium są zablokowane z informacją o konieczności aktualizacji.
</Note>

Wszyscy dostawcy obsługują wywoływanie funkcji (narzędzia), strumieniowanie, wyłącznik automatyczny (automatyczne przełączenie awaryjne, gdy dostawca jest niedostępny) i ponawianie z wykładniczym wycofywaniem przy limitach zapytań.

LLM jest ustawiany globalnie w zakładce Agent, ale może być **nadpisany dla poszczególnych węzłów przepływu pracy** — na przykład użyj szybkiego modelu do wyszukiwania produktów i modelu premium do końcowego formatowania odpowiedzi.

***

## Przepływ pracy

Zakładka Przepływ pracy to wizualne płótno, na którym projektujesz logikę konwersacji agenta. Zamiast jednego promptu, przepływ pracy dzieli przetwarzanie na **węzły** — każdy z własnym promptem, narzędziami i bazą wiedzy — połączone **krawędziami** z warunkami routingu.

<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="Edytor przepływu pracy" 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="Edytor przepływu pracy" width="2879" height="1554" data-path="images/agent-workflow-dark.png" />
</Frame>

### Domyślny przepływ pracy

Każdy nowy agent zaczyna z tym wbudowanym przepływem pracy:

```
[Wejście głosowe*] → [Start] → [Agent produktowy] ──→ [Formater] → [Wyjście głosowe*]
                               → [Agent multimedialny] ──↗
                               → [Agent firmowy]   ──↗
```

*Węzły głosowe są domyślnie nieaktywne — aktywują się po włączeniu głosu.*

<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="Domyślny przepływ pracy" 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="Domyślny przepływ pracy" width="1640" height="733" data-path="images/agent-default-workflow-dark.png" />
</Frame>

Węzeł **Start** kieruje wiadomość do trzech równoległych agentów systemowych. Każdy przetwarza wiadomość przy użyciu własnych narzędzi i wiedzy. **Formater** łączy ich wyniki w jedną odpowiedź.

### Typy węzłów

| Węzeł                     | Typ                | Opis                                                                                             |
| ------------------------- | ------------------ | ------------------------------------------------------------------------------------------------ |
| **Start**                 | `start`            | Punkt wejścia. Zawsze obecny, nie można go usunąć.                                               |
| **Agent produktowy**      | `system_product`   | Wyszukuje produkty, sprawdza dostępność, pokazuje szczegóły. Ma dostęp do narzędzi produktowych. |
| **Agent multimedialny**   | `system_media`     | Pobiera zdjęcia, filmy i dokumenty.                                                              |
| **Agent firmowy**         | `system_company`   | Informacje o firmie, pytania wsparcia.                                                           |
| **Formater odpowiedzi**   | `system_formatter` | Łączy wyniki z równoległych węzłów w spójną końcową odpowiedź.                                   |
| **Wejście głosowe (STT)** | `system_stt`       | Konwersja mowy na tekst. Domyślnie nieaktywne.                                                   |
| **Wyjście głosowe (TTS)** | `system_tts`       | Synteza tekstu na mowę. Domyślnie nieaktywne.                                                    |
| **Niestandardowy**        | `custom`           | Własny węzeł z niestandardowym promptem, narzędziami, bazą wiedzy i ustawieniami LLM.            |

### Dodawanie niestandardowych węzłów

Kliknij **+ Dodaj węzeł** na pasku narzędzi płótna → wprowadź nazwę → nowy niestandardowy węzeł pojawi się na płótnie. Możesz dodać dowolną liczbę niestandardowych węzłów.

Niestandardowe węzły to najpotężniejsza część przepływu pracy. Każdy niestandardowy węzeł to w zasadzie swój własny mini-agent z:

* **Cel konwersacji** — prompt systemowy specyficzny dla tego węzła (np. „Pomóż użytkownikom wybrać odpowiedni plan subskrypcji na podstawie wielkości zespołu i budżetu")
* **Narzędzia** — wybierz, które narzędzia ten węzeł może wywoływać (niezależnie od narzędzi na poziomie agenta)
* **Baza wiedzy** — wybierz konkretne źródła wiedzy dla kontekstu RAG tego węzła
* **Nadpisanie LLM** — użyj innego modelu dla tego węzła
* **Tryb agenta** — włącz wieloturowe wywoływanie narzędzi (zobacz poniżej)

### Panel ustawień węzła

Kliknij dowolny węzeł na płótnie, aby otworzyć panel ustawień po prawej stronie. Panel ma zakładki, które różnią się w zależności od typu węzła:

**Zakładka Ogólne** (wszystkie węzły):

| Ustawienie          | Opis                                                                                          |
| ------------------- | --------------------------------------------------------------------------------------------- |
| **Nazwa**           | Wyświetlana nazwa (wyłączona dla węzła Start)                                                 |
| **Aktywny**         | Przełącznik, czy ten węzeł uczestniczy w przepływie pracy                                     |
| **Cel konwersacji** | Prompt systemowy dla tego węzła. Dostępny na wszystkich węzłach z wyjątkiem Start i Formater. |

**Tryb agenta** (tylko niestandardowe węzły z narzędziami):

Po włączeniu węzeł może wykonywać **wiele rund wywołań narzędzi** przed odpowiedzią. Bez trybu agenta węzeł wykonuje co najwyżej 1 wywołanie narzędzia na wiadomość.

| Ustawienie      | Zakres | Domyślnie | Opis                                                                      |
| --------------- | ------ | --------- | ------------------------------------------------------------------------- |
| **Maks. rund**  | 2–10   | 5         | Ile rund wywołań narzędzi LLM może wykonać przed koniecznością odpowiedzi |
| **Limit czasu** | 10–60s | 30s       | Maksymalny czas dla całego wykonania trybu agenta                         |

<Tip>
  Użyj trybu agenta, gdy węzeł musi łączyć wiele narzędzi — na przykład najpierw wyszukać produkty, potem sprawdzić dostępność najlepszego dopasowania, a następnie pobrać szczegółowe specyfikacje. Bez trybu agenta węzeł potrzebowałby 3 oddzielnych tur konwersacji, aby to zrobić.
</Tip>

**Nadpisanie LLM** (wszystkie z wyjątkiem Start):

Przełącznik, aby użyć innego dostawcy i modelu LLM dla tego konkretnego węzła. Gdy wyłączony, węzeł używa globalnego ustawienia LLM agenta. Lista rozwijana pokazuje „Domyślny (ustawienie agenta)", gdy nie jest nadpisany.

**Zakładka Narzędzia** (węzły niestandardowe i systemowe):

Lista wszystkich dostępnych narzędzi pogrupowanych według kategorii (Produkty, Wsparcie, Dokumenty). Każde narzędzie ma przełącznik. Narzędzia włączone tutaj są niezależne od zakładki Narzędzia na poziomie agenta — kontrolujesz dokładnie, do których narzędzi każdy węzeł ma dostęp.

**Zakładka Baza wiedzy** (tylko węzły niestandardowe):

Wybierz konkretne źródła wiedzy dla kontekstu RAG tego węzła. Ma rozwijaną listę „Dodaj dokument" z wyszukiwaniem i filtrowaniem typów. Jeśli nie wybrano źródeł, węzeł korzysta z globalnej bazy wiedzy agenta.

<Note>
  Wskazówka na dole prowadzi do zakładki Baza wiedzy agenta: „Aby udostępnić więcej danych dla tego węzła, dodaj pliki do Bazy wiedzy agenta."
</Note>

**Zakładka Krawędzie** (wszystkie węzły):

Konfiguruj połączenia wychodzące do innych węzłów. Zobacz [Warunki krawędzi](#warunki-krawedzi) poniżej.

**Zakładka Ustawienia głosu** (tylko węzły STT i TTS):

Konfiguruj rozpoznawanie i syntezę mowy — zobacz sekcję [Głos](#glos).

**Usuń węzeł** — dostępne tylko dla niestandardowych węzłów. Węzły systemowe nie mogą być usunięte.

### Warunki krawędzi

Krawędzie łączą węzły i kontrolują routing wiadomości. Każda krawędź ma **węzeł docelowy**, **typ warunku** i **priorytet**. Przepływ pracy ocenia krawędzie warstwami priorytetów — pierwsza warstwa, która daje dopasowanie, wygrywa, niższe warstwy nie są oceniane.

Kliknij **+ Dodaj krawędź** w zakładce Krawędzie węzła, aby utworzyć połączenie.

| Warunek            | Priorytet       | Kiedy kieruje                                                                                                                   |
| ------------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Słowo kluczowe** | 100 (najwyższy) | Wiadomość zawiera **którekolwiek** z podanych słów kluczowych. Bez rozróżniania wielkości liter, dopasowanie na granicach słów. |
| **Warunek stanu**  | 95              | Wszystkie określone warunki pól pamięci są spełnione (logika AND).                                                              |
| **Zawsze**         | 90              | Zawsze kieruje — użyj do bezwarunkowych połączeń.                                                                               |
| **Intencja**       | 50              | Na podstawie wykrytej intencji wiadomości.                                                                                      |
| **Awaryjny**       | 10 (najniższy)  | Kieruje tylko wtedy, gdy **żadna inna krawędź** z tego węzła nie pasowała.                                                      |

#### Warunek słowa kluczowego

Wprowadź słowa kluczowe oddzielone przecinkami. Przepływ pracy sprawdza, czy wiadomość odwiedzającego zawiera którekolwiek z nich, używając dopasowania bez rozróżniania wielkości liter na granicach słów.

Wiele krawędzi ze słowami kluczowymi może pasować do tej samej wiadomości — wszystkie pasujące krawędzie uruchamiają się równolegle, wysyłając wiadomość do wielu węzłów jednocześnie.

**Przykład:** Słowa kluczowe `cena, koszt, cennik, ile kosztuje` — krawędź uruchamia się, gdy odwiedzający pyta „Ile to kosztuje?" lub „Jaki jest cennik?"

#### Warunek stanu

Sprawdź wartości pól [Pamięci konwersacji](#pamiec-konwersacji). Budujesz reguły za pomocą:

| Operator            | Znaczenie                   | Przykład                                                  |
| ------------------- | --------------------------- | --------------------------------------------------------- |
| **jest wypełnione** | Pole ma jakąkolwiek wartość | `email` jest wypełnione → kieruj do węzła „Wyślij ofertę" |
| **jest puste**      | Pole nie ma wartości        | `name` jest puste → kieruj do węzła „Zapytaj o imię"      |
| **równa się**       | Dokładne dopasowanie        | `budget` równa się `enterprise`                           |
| **nie równa się**   | Nie pasuje                  | `plan` nie równa się `free`                               |
| **zawiera**         | Dopasowanie podciągu        | `interests` zawiera `premium`                             |
| **większe niż**     | Porównanie numeryczne       | `budget` > `5000`                                         |
| **mniejsze niż**    | Porównanie numeryczne       | `team_size` \< `10`                                       |

Wiele warunków w jednej krawędzi używa **logiki AND** — wszystkie muszą być prawdziwe.

<Note>
  Warunki stanu są całkowicie pomijane, jeśli pamięć jest pusta (nie zebrano jeszcze żadnych pól). Oznacza to, że warunki `jest puste` nie uruchomią się, dopóki agent nie zacznie zbierać przynajmniej jednego pola pamięci.
</Note>

**Przykładowy przepływ pracy z warunkami stanu:**

```
[Start] → (name jest puste)     → [Węzeł Zapytaj o imię]
        → (name jest wypełnione, → [Węzeł Wyślij ofertę]
           email jest wypełnione)
        → (awaryjny)            → [Węzeł Czat ogólny]
```

#### Warunek Zawsze

Krawędź zawsze się uruchamia. Wszystkie krawędzie Zawsze z węzła uruchamiają się równolegle — wiadomość jest wysyłana do każdego celu jednocześnie. W ten sposób domyślny przepływ pracy rozgałęzia się ze Start do trzech agentów systemowych naraz.

#### Warunek Awaryjny

Kieruje tylko wtedy, gdy żadna krawędź o wyższym priorytecie nie pasowała. W przeciwieństwie do Słowa kluczowego i Zawsze, uruchamia się tylko **jedna** krawędź awaryjna (pierwsza) — brak równoległego wykonania.

<Warning>
  Jeśli żadna krawędź nie pasuje i nie ma krawędzi awaryjnej, wynik węzła może nie dotrzeć do Formatera i odwiedzający nie otrzyma odpowiedzi z tej gałęzi.
</Warning>

### Strategia łączenia

Gdy wiele węzłów produkuje wyniki równolegle (jak 3 agenci systemowi w domyślnym przepływie pracy), **Formater** łączy je:

| Strategia        | Koszt                   | Jak to działa                                                        |
| ---------------- | ----------------------- | -------------------------------------------------------------------- |
| **Konkatenacja** | Bezpłatna               | Łączy wszystkie wyniki węzłów w kontekst dla Formatera               |
| **LLM**          | Dodatkowe wywołanie LLM | Używa LLM do syntezy jednej spójnej odpowiedzi ze wszystkich wyników |

### Sterowanie płótnem

| Sterowanie                          | Akcja                                                 |
| ----------------------------------- | ----------------------------------------------------- |
| **Przeciągnij** pusty obszar        | Przesuń płótno                                        |
| **Ctrl + Przewiń** lub szczypnięcie | Powiększenie (0.3x–2.0x)                              |
| **Przewijanie dwoma palcami**       | Przesuwanie                                           |
| **+ Dodaj węzeł**                   | Utwórz nowy niestandardowy węzeł                      |
| **Szablon**                         | Zastosuj gotowy szablon przepływu pracy z marketplace |
| **Resetuj**                         | Odbuduj domyślny przepływ pracy (okno potwierdzenia)  |
| **Test**                            | Otwórz panel czatu testowego na dole płótna           |

***

## Narzędzia

Narzędzia to funkcje, które agent może wywoływać podczas rozmów. Rozszerzają one agenta poza generowanie tekstu — wyszukiwanie produktów, odpytywanie baz danych, wysyłanie e-maili, wykonywanie połączeń.

### Jak działają narzędzia

<Steps>
  <Step title="LLM decyduje o użyciu narzędzia">
    Na podstawie wiadomości odwiedzającego i opisów narzędzi w swoim prompcie, LLM generuje wywołanie narzędzia z parametrami (np. `get_products({ query: "buty do biegania", available_only: true })`).
  </Step>

  <Step title="Narzędzie się wykonuje">
    System uruchamia funkcję narzędzia z podanymi parametrami i otrzymuje wynik.
  </Step>

  <Step title="Wynik wraca do LLM">
    Wynik narzędzia jest wstrzykiwany z powrotem do rozmowy. LLM używa go do sformułowania naturalnej odpowiedzi.
  </Step>

  <Step title="Wielorundowe (tryb agenta)">
    Jeśli węzeł ma włączony tryb agenta, LLM może wykonać kolejne wywołanie narzędzia na podstawie pierwszego wyniku — do skonfigurowanej maksymalnej liczby rund.
  </Step>
</Steps>

Każde wywołanie narzędzia jest logowane z danymi wejściowymi, wyjściowymi, czasem wykonania i statusem. Przeglądaj logi przez **Logi narzędzi** w nagłówku agenta.

### Wbudowane narzędzia (9)

Zawsze dostępne, bez wymaganej integracji:

| Narzędzie                  | Kategoria | Co robi                                                                                     |
| -------------------------- | --------- | ------------------------------------------------------------------------------------------- |
| **get\_products**          | Produkty  | Wyszukiwanie produktów po nazwie/opisie. Zwraca listę z cenami i dostępnością.              |
| **get\_product\_details**  | Produkty  | Pełne szczegóły jednego produktu — wszystkie parametry, ceny, opis.                         |
| **check\_availability**    | Produkty  | Sprawdź, czy konkretny produkt jest w magazynie.                                            |
| **search\_by\_parameters** | Produkty  | Filtruj produkty po wartościach atrybutów z operatorami: `=`, `<=`, `>=`, `<`, `>`, `like`. |
| **get\_company\_info**     | Wsparcie  | Nazwa firmy, opis, telefon, kontakty.                                                       |
| **search\_documents**      | Dokumenty | Semantyczne wyszukiwanie RAG — znajduje odpowiednie fragmenty w bazie wiedzy.               |
| **get\_photos**            | Dokumenty | Pobieranie zdjęć po zapytaniu lub ID produktu.                                              |
| **get\_videos**            | Dokumenty | Pobieranie filmów po zapytaniu lub ID produktu.                                             |
| **get\_documents**         | Dokumenty | Pobieranie plików PDF/Word/Excel z filtrowaniem po formacie.                                |

### Narzędzia integracyjne (60+)

Podłącz zewnętrzne usługi w [Integracje](/integrations/overview), aby odblokować narzędzia:

<AccordionGroup>
  <Accordion title="VoIP — Twilio, Binotel, Ringostat">
    Wykonywanie połączeń wychodzących, wysyłanie SMS, pobieranie historii połączeń.
  </Accordion>

  <Accordion title="Telegram">
    Wysyłanie wiadomości, wysyłanie plików, edycja/usuwanie wiadomości, pobieranie historii czatu i informacji.
  </Accordion>

  <Accordion title="WhatsApp">
    Wysyłanie wiadomości, wysyłanie multimediów, wysyłanie wiadomości szablonowych, pobieranie profilu, oznaczanie jako przeczytane.
  </Accordion>

  <Accordion title="Facebook i Instagram">
    Wysyłanie wiadomości, wysyłanie multimediów, wysyłanie przycisków (Facebook), pobieranie profilu. Facebook Ads: pobieranie kampanii, zestawów reklam, statystyk, wstrzymywanie kampanii.
  </Accordion>

  <Accordion title="Gmail">
    Odczyt skrzynki odbiorczej, wysyłanie e-maili, odpowiadanie, tworzenie wersji roboczych, wyszukiwanie, pobieranie załączników.
  </Accordion>

  <Accordion title="Google Calendar">
    Wyświetlanie/tworzenie/aktualizacja/usuwanie wydarzeń, sprawdzanie dostępności, znajdowanie wolnych terminów.
  </Accordion>

  <Accordion title="Google Docs">
    Odczyt/tworzenie/dołączanie/eksport/wyszukiwanie dokumentów.
  </Accordion>

  <Accordion title="Google Sheets">
    Odczyt/zapis zakresów, dodawanie wierszy, aktualizacja komórek, wyszukiwanie wierszy, tworzenie arkuszy kalkulacyjnych.
  </Accordion>

  <Accordion title="Google Drive">
    Wyświetlanie/odczyt/tworzenie/aktualizacja/usuwanie plików, tworzenie folderów, udostępnianie plików, wyszukiwanie.
  </Accordion>

  <Accordion title="Google Meet">
    Tworzenie linków do spotkań.
  </Accordion>

  <Accordion title="Google Ads">
    Pobieranie kampanii, pobieranie słów kluczowych, wstrzymywanie kampanii.
  </Accordion>

  <Accordion title="Webhooki">
    Wysyłanie niestandardowych ładunków JSON na dowolny URL, testowanie połączeń webhooków.
  </Accordion>
</AccordionGroup>

### Zakładka Narzędzia a narzędzia na poziomie węzła

Są **dwa miejsca** do zarządzania narzędziami:

1. **Agent → Zakładka Narzędzia** — pokazuje wszystkie narzędzia integracyjne pogrupowane według dostawcy. Włączaj/wyłączaj narzędzia na poziomie agenta. Narzędzia tutaj stają się dostępne dla wszystkich węzłów przepływu pracy.

2. **Przepływ pracy → Ustawienia węzła → Zakładka Narzędzia** — przełączaj narzędzia per węzeł. Węzeł może używać tylko narzędzi włączonych na poziomie agenta. Pozwala to ograniczyć, do których narzędzi poszczególne węzły mają dostęp.

**Przykład:** Włącz narzędzia Gmail na poziomie agenta, ale daj tylko niestandardowemu węzłowi „Wyślij follow-up" dostęp do `send_email` — inne węzły nie będą wyzwalać e-maili.

***

## Baza wiedzy (RAG)

Zakładka Baza wiedzy łączy źródła danych, których agent używa do odpowiadania na pytania. Gdy odwiedzający zadaje pytanie, agent przeszukuje bazę wiedzy za pomocą **podobieństwa wektorowego** (RAG — Retrieval-Augmented Generation) i dołącza odpowiedni kontekst do swojej odpowiedzi.

### Typy źródeł

| Źródło        | Co jest indeksowane                                               |
| ------------- | ----------------------------------------------------------------- |
| **Produkty**  | Nazwa, opis, dodatkowy prompt, cena                               |
| **Dokumenty** | Nazwa pliku + wyodrębniona treść tekstowa (PDF, Word, Excel, TXT) |
| **Zdjęcia**   | Nazwa zdjęcia + opis                                              |
| **Filmy**     | Nazwa filmu + opis/treść                                          |
| **Tekst**     | Nazwa + treść tekstowa                                            |
| **Linki**     | Nazwa URL + pobrana treść strony                                  |
| **Firma**     | Nazwa firmy, tekst promocyjny, opis, telefon                      |

### Jak działa RAG

<Steps>
  <Step title="Dodaj źródła">
    W zakładce Baza wiedzy kliknij „Dodaj dokument" i wybierz źródła z danych firmy — produkty, pliki, fragmenty tekstowe, linki.
  </Step>

  <Step title="Trening">
    System dzieli każde źródło na segmenty (domyślnie maks. 2000 znaków na fragment, 20% nakładanie na granicach zdań), generuje osadzenia wektorowe za pomocą OpenAI `text-embedding-ada-002` (1536 wymiarów) i przechowuje je w PostgreSQL z pgvector.
  </Step>

  <Step title="Odwiedzający wysyła wiadomość">
    Wiadomość odwiedzającego jest osadzona w tej samej przestrzeni wektorowej. System znajduje najbardziej podobne fragmenty za pomocą podobieństwa kosinusowego.
  </Step>

  <Step title="Wstrzykiwanie kontekstu">
    Najlepiej dopasowane fragmenty (domyślnie: do 5, minimalne podobieństwo 0.6) są wstrzykiwane do promptu agenta jako kontekst bazy wiedzy.
  </Step>

  <Step title="Odpowiedź">
    LLM widzi pytanie odwiedzającego wraz z odpowiednią wiedzą i generuje poinformowaną odpowiedź.
  </Step>
</Steps>

Trening uruchamia się automatycznie po dodaniu lub zmianie źródeł. Postęp jest pokazywany w zakładce Baza wiedzy (procent, przetworzone elementy).

### Wiedza na poziomie agenta a wiedza na poziomie węzła

* **Baza wiedzy na poziomie agenta** (zakładka Baza wiedzy) — źródła dostępne dla wszystkich węzłów przepływu pracy
* **Baza wiedzy na poziomie węzła** (Przepływ pracy → Węzeł → Zakładka Baza wiedzy) — ogranicz RAG do konkretnych źródeł tylko dla tego węzła

**Przykład:** Twój niestandardowy węzeł „Wsparcie techniczne" widzi tylko instrukcje produktów i dokumenty FAQ, podczas gdy węzeł „Sprzedaż" widzi katalogi produktów z cenami.

<Tip>
  Konkretna, dobrze ustrukturyzowana treść działa lepiej niż długie ogólne dokumenty. Opisy produktów z jasnymi parametrami dają agentowi precyzyjne odpowiedzi. Krótkie wpisy FAQ działają lepiej niż obszerne podręczniki.
</Tip>

***

## Głos

Ustawienia głosu konfiguruje się w podzakładce **Głos** zakładki Widżet lub bezpośrednio w węzłach STT/TTS przepływu pracy.

### Zamiana mowy na tekst (STT)

| Ustawienie     | Opcje                                                                             |
| -------------- | --------------------------------------------------------------------------------- |
| **Dostawca**   | OpenAI Whisper, Google Speech (wkrótce)                                           |
| **Język**      | Ukraiński, Angielski                                                              |
| **Powitanie**  | Tekst + wcześniej zsyntezowane audio odtwarzane przy rozpoczęciu rozmowy głosowej |
| **Pożegnanie** | Tekst + wcześniej zsyntezowane audio odtwarzane przy zakończeniu rozmowy głosowej |

### Zamiana tekstu na mowę (TTS)

| Ustawienie   | Opcje                                                                                                                  |
| ------------ | ---------------------------------------------------------------------------------------------------------------------- |
| **Dostawca** | OpenAI TTS (ElevenLabs i Google Cloud wkrótce)                                                                         |
| **Głos**     | Alloy (neutralny), Echo (ciepły), Fable (ekspresyjny), Onyx (głęboki), Nova (przyjazny, domyślny), Shimmer (delikatny) |
| **Model**    | `tts-1` (standardowy), `tts-1-hd` (jakość HD)                                                                          |
| **Szybkość** | 0.5x – 2.0x                                                                                                            |

### Potok głosowy

<Steps>
  <Step title="Audio odebrane">
    Audio odwiedzającego wysłane na serwer (maks. 10MB, formaty: webm, ogg, wav, mp3).
  </Step>

  <Step title="Transkrypcja STT">
    Audio transkrybowane na tekst. Transkrypcja strumieniowana w czasie rzeczywistym przez SSE.
  </Step>

  <Step title="Przetwarzanie przepływu pracy">
    Transkrypcja przetwarzana przez ten sam przepływ pracy co tekst — RAG, narzędzia, routing węzłów.
  </Step>

  <Step title="Synteza TTS">
    Odpowiedź dzielona na zdania, każde syntezowane na audio. Fragmenty strumieniowane w miarę generowania.
  </Step>

  <Step title="Odtwarzanie">
    Odwiedzający słyszy odpowiedź jako strumieniowane audio, jednocześnie widząc tekst.
  </Step>
</Steps>

<Note>
  Głos wymaga planu z funkcjami głosowymi. W planach bez głosu kontrolki głosowe pokazują informację o konieczności aktualizacji, a tryb Tylko czat jest wymuszony.
</Note>

***

## Kanały

Zakładka Kanały kontroluje, skąd agent otrzymuje wiadomości.

| Kanał         | Wymaga               | Opis                                                                   |
| ------------- | -------------------- | ---------------------------------------------------------------------- |
| **Widżet**    | Nic (wbudowany)      | Widżet czatu na stronie internetowej przez skrypt trackera             |
| **Telefon**   | Integracja VoIP      | Połączenia przychodzące/wychodzące przez Twilio, Binotel lub Ringostat |
| **Telegram**  | Integracja Telegram  | Rozmowy bota Telegram                                                  |
| **WhatsApp**  | Integracja WhatsApp  | WhatsApp Business API                                                  |
| **Instagram** | Integracja Instagram | Instagram DM                                                           |

### Podłączanie kanału

**Widżet** — kliknij Włącz. Widżet natychmiast odpowiada na Twojej stronie.

**Inne kanały:**

1. Podłącz integrację w [Integracje](/integrations/overview)
2. W zakładce Kanały wybierz zasób z listy rozwijanej (np. numer telefonu, bot, strona)
3. Kliknij Włącz — generowany jest unikalny **URL webhooka**

Każda karta kanału pokazuje status połączenia, nazwę zasobu, łączną liczbę rozmów i URL webhooka z przyciskiem kopiowania.

***

## Personalizacja widżetu

Zakładka Widżet ma **podgląd na żywo** po lewej (przełącznik komputer/tablet/telefon) i panel ustawień po prawej z 3 podzakładkami.

### Wygląd

| Ustawienie             | Opis                                                                                                  |
| ---------------------- | ----------------------------------------------------------------------------------------------------- |
| **Kolory**             | 6 selektorów kolorów: Główny, Przycisk czatu, Tło wiadomości, Animacja, Gwiazdki oceny, Tekst statusu |
| **Etykiety**           | Główny tytuł, Tekst przycisku połączenia, Tekst przycisku czatu, Tekst zastępczy pola wprowadzania    |
| **Pozycja**            | Dolna prawa, Dolna środkowa, Dolna lewa, Górna prawa, Górna środkowa, Górna lewa                      |
| **Motyw**              | Jasny lub Ciemny                                                                                      |
| **Rozmiar**            | Mały, Średni, Duży                                                                                    |
| **Zaokrąglenie rogów** | 0–50px zaokrąglenie rogów                                                                             |
| **Krycie**             | 0–100% krycie tła                                                                                     |
| **Awatar**             | Niestandardowy URL awatara                                                                            |

### Zachowanie

| Ustawienie                 | Opis                                                         |
| -------------------------- | ------------------------------------------------------------ |
| **Język**                  | Angielski, Ukraiński, Polski, Niemiecki, Hiszpański          |
| **Zbieranie opinii**       | Pokaż ocenę gwiazdkową po rozmowie                           |
| **Tekst podczas rozmowy**  | Zezwól na pisanie podczas aktywnego połączenia głosowego     |
| **Tryb tylko czat**        | Wyłącz głos (tylko tekst). Wymuszony w planach bez głosu.    |
| **Regulamin**              | Wymagaj akceptacji przed czatem. Niestandardowy tekst i URL. |
| **Efekty dźwiękowe**       | Dźwięki powiadomień wł./wył.                                 |
| **Automatyczne otwarcie**  | Otwórz widżet automatycznie po opóźnieniu (0–60 sekund)      |
| **Automatyczne powitanie** | Wyślij pierwszą wiadomość automatycznie                      |
| **Pokaż na telefonie**     | Wyświetlaj na urządzeniach mobilnych                         |
| **Pokaż na komputerze**    | Wyświetlaj na urządzeniach stacjonarnych                     |
| **Powered By**             | Pokaż/ukryj branding „Powered by Revol"                      |
| **Wiadomość powitalna**    | Tekst wyświetlany w nagłówku widżetu                         |

### Głos

Ustawienia STT i TTS — takie same jak opisane w sekcji [Głos](#glos). Konfigurowane tutaj lub w węzłach STT/TTS przepływu pracy (są zsynchronizowane).

***

## Analiza

Układ dwukolumnowy: lista rozmów (lewa) + szczegóły rozmowy (prawa).

### Filtry

| Filtr            | Opis                                                       |
| ---------------- | ---------------------------------------------------------- |
| **Wyszukiwanie** | Wyszukiwanie tekstowe w rozmowach                          |
| **Kanał**        | Wszystkie / Web / Telefonia / Komunikatory / Widżet / itp. |
| **Status**       | Wszystkie / Aktywne / Zamknięte / Zarchiwizowane           |
| **Zakres dat**   | Selektory daty Od/Do                                       |

Lista rozmów pokazuje 20 na stronę z paginacją „Załaduj więcej". Nowe rozmowy pojawiają się w czasie rzeczywistym przez WebSocket.

### Szczegóły rozmowy (4 podzakładki)

| Zakładka         | Treść                                                                            |
| ---------------- | -------------------------------------------------------------------------------- |
| **Transkrypcja** | Pełny wątek wiadomości — bąbelki użytkownika i asystenta z sygnaturami czasowymi |
| **Ocena**        | Ocena gwiazdkowa odwiedzającego (1–5) i opcjonalny komentarz                     |
| **Tokeny**       | Zestawienie zużycia tokenów na wiadomość                                         |
| **Informacje**   | Kanał, status, ID sesji, zebrane pola pamięci, data utworzenia                   |

***

## Architektura promptu systemowego

Zrozumienie, jak składany jest końcowy prompt, pomaga pisać lepsze instrukcje.

<Steps>
  <Step title="Twój prompt systemowy">
    Tekst z zakładki Agent (lub Cel konwersacji węzła dla niestandardowych węzłów). Jeśli pusty, generowany jest domyślny prompt z nazwą firmy i podstawowymi zasadami.
  </Step>

  <Step title="Blok bezpieczeństwa">
    Automatycznie dołączany. 4 zasady anty-wstrzykiwania — agent nie ujawni swojego promptu, nie zmieni roli ani nie zastosuje się do prób nadpisania.
  </Step>

  <Step title="Instrukcje stylu">
    Generowane z suwaków osobowości — mapuje długość odpowiedzi, humor, formalność, jasność i emoji na instrukcje tekstowe.
  </Step>

  <Step title="Opisy narzędzi">
    Schematy funkcji dla wszystkich włączonych narzędzi, aby LLM wiedział, co może wywoływać.
  </Step>

  <Step title="Kontekst RAG">
    Odpowiednie fragmenty bazy wiedzy, wstrzyknięte jako blok „Kontekst bazy wiedzy".
  </Step>

  <Step title="Kontekst kampanii">
    Jeśli odwiedzający przyszedł przez kampanię z ustawionym zachowaniem agenta AI, ten prompt jest wstrzykiwany.
  </Step>

  <Step title="Stan pamięci">
    Aktualne wartości zebranych pól pamięci (np. `name: Jan, email: jan@example.com`), aby agent wiedział, co już zebrał.
  </Step>

  <Step title="Wykrywanie języka">
    Jeśli wiadomość odwiedzającego nie zawiera znaków cyrylicy, dodawana jest instrukcja systemowa: „Odpowiadaj w tym samym języku co wiadomość użytkownika."
  </Step>
</Steps>

***

## Kod osadzania

Kliknij **Osadź** w nagłówku agenta, aby uzyskać fragment 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>
```

Ładuje to zarówno tracker (analityka, kampanie, zdarzenia, wyzwalacze, podmiana numeru telefonu), jak i widżet czatu z aktywnym agentem. Jeśli nie istnieje klucz API, najpierw kliknij **Wygeneruj klucz API**.

***

## Limity planu

| Zasób                         | Co kontroluje                                                         |
| ----------------------------- | --------------------------------------------------------------------- |
| **Maks. agentów**             | Łączna liczba agentów, których możesz utworzyć                        |
| **Maks. rozmów**              | Rozmowy na okres rozliczeniowy                                        |
| **Standardowa kwota tokenów** | Tokeny dla modeli standardowych (GPT-4o Mini, Haiku, Flash, Llama 8B) |
| **Premium kwota tokenów**     | Tokeny dla modeli premium (GPT-4o, Sonnet, Gemini Pro, Llama 70B)     |
| **Dzienny limit tokenów**     | Dzienny limit dla wszystkich modeli                                   |
| **Minuty STT**                | Czas transkrypcji mowy na tekst                                       |
| **Znaki TTS**                 | Znaki syntezy tekstu na mowę                                          |
| **Tokeny osadzeń**            | Tokeny na trening bazy wiedzy                                         |
| **Magazyn**                   | Przechowywanie plików dla dokumentów, zdjęć, filmów                   |
| **Głos**                      | Flaga funkcji — włącza/wyłącza potok głosowy                          |
| **Dostęp do modeli**          | `standard` lub `premium` — kontroluje dostęp do modeli premium        |
