> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Workflow

## Omówienie

Agent Workflows oferują rozbudowany interfejs wizualny do projektowania złożonych przepływów rozmów w ElevenAgents. Zamiast polegać na liniowych ścieżkach rozmowy, workflow pozwalają tworzyć zaawansowane, rozgałęzione grafy rozmów, które dynamicznie dostosowują się do potrzeb użytkownika.

![Omówienie workflow](/docs/_fern-img/0b5b2cf9754c67ef469c08af5d13786f70ca8e0018d10e92595861abb4ed32cb.webp)

## Tworzenie workflow

Panel jest zalecanym sposobem projektowania workflow dzięki wizualnemu edytorowi grafów. Workflow są przechowywane w głównym polu `workflow` agenta, więc możesz też pobrać, edytować i wysłać JSON przez CLI lub zaktualizować go przez SDK — co przydaje się w kontroli wersji i CI/CD.

#### Tworzenie w panelu

Otwórz agenta w panelu, przejdź do karty **Workflow** i użyj edytora wizualnego, aby dodawać węzły, konfigurować zachowanie subagentów i łączyć krawędzie. Zapisz zmiany.

#### Aktualizacja przez CLI

#### Pobierz konfigurację agenta

```bash
elevenlabs agents pull --agent "<agent-name>"
```

#### Edytuj \`agent_configs/\<agent-name>.json\`

Graf workflow znajduje się pod kluczem głównym `workflow`. `nodes` i `edges` to obiekty z kluczami ID. Poniżej znajduje się minimalny workflow z trzema węzłami, który kieruje węzeł startowy do subagenta wsparcia, a następnie do węzła końcowego:

```json
{
  "workflow": {
    "nodes": {
      "start_node": {
        "type": "start",
        "edge_order": ["start_to_support"]
      },
      "support_agent": {
        "type": "override_agent",
        "label": "Support agent",
        "additional_prompt": "Help the user with their support request, then transition to the end node when resolved.",
        "edge_order": ["support_to_end"]
      },
      "end_node": {
        "type": "end"
      }
    },
    "edges": {
      "start_to_support": {
        "source": "start_node",
        "target": "support_agent",
        "forward_condition": { "type": "unconditional" }
      },
      "support_to_end": {
        "source": "support_agent",
        "target": "end_node",
        "forward_condition": {
          "type": "llm",
          "condition": "The support request has been resolved."
        }
      }
    }
  }
}
```

Większość zespołów najpierw projektuje workflow w panelu, a potem zapisuje wynikowy JSON w kontroli wersji.

#### Wyślij zmiany

```bash
elevenlabs agents push --agent "<agent-name>"
```

#### Aktualizacja przez API

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    workflow={
        "nodes": {
            "start_node": {
                "type": "start",
                "edge_order": ["start_to_support"],
            },
            "support_agent": {
                "type": "override_agent",
                "label": "Support agent",
                "additional_prompt": "Help the user with their support request, then transition to the end node when resolved.",
                "edge_order": ["support_to_end"],
            },
            "end_node": {"type": "end"},
        },
        "edges": {
            "start_to_support": {
                "source": "start_node",
                "target": "support_agent",
                "forward_condition": {"type": "unconditional"},
            },
            "support_to_end": {
                "source": "support_agent",
                "target": "end_node",
                "forward_condition": {
                    "type": "llm",
                    "condition": "The support request has been resolved.",
                },
            },
        },
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  workflow: {
    nodes: {
      start_node: {
        type: "start",
        edgeOrder: ["start_to_support"],
      },
      support_agent: {
        type: "override_agent",
        label: "Support agent",
        additionalPrompt:
          "Help the user with their support request, then transition to the end node when resolved.",
        edgeOrder: ["support_to_end"],
      },
      end_node: { type: "end" },
    },
    edges: {
      start_to_support: {
        source: "start_node",
        target: "support_agent",
        forwardCondition: { type: "unconditional" },
      },
      support_to_end: {
        source: "support_agent",
        target: "end_node",
        forwardCondition: {
          type: "llm",
          condition: "The support request has been resolved.",
        },
      },
    },
  },
});
```

## Typy węzłów

Workflow składają się z różnych typów węzłów, z których każdy pełni określoną funkcję w przepływie rozmowy.

![Typy węzłów](/docs/_fern-img/b169065e0f229623a4cd57861802fa30ecd463a142599f5fd60f6fc1b8a6223e.webp)

### Węzły subagentów

Węzły subagentów pozwalają zmieniać zachowanie agenta w określonych punktach workflow. Zmiany są stosowane na bazowej konfiguracji agenta lub mogą całkowicie nadpisać konfigurację bieżącego agenta, co daje pełną kontrolę nad każdą fazą rozmowy.
Można aktualizować lub nadpisywać dowolną część konfiguracji agenta, dostępne narzędzia i dołączone elementy bazy wiedzy.

#### Ogólne

![Dodatkowa konfiguracja agenta subagenta](/docs/_fern-img/8ca72df8768a03adc0064281c906ab0f5710153249d17f7e7d51f465da7e9e94.webp)

Zmień główne ustawienia agenta dla tego konkretnego węzła:

* **Prompt systemowy**: Dodaj lub nadpisz instrukcje systemowe, by kierować zachowaniem agenta
* **Wybór LLM**: Wybierz inny model językowy (np. przełącz z Gemini 2.0 Flash na wydajniejszy model do złożonych zadań wymagających rozumowania)
* **Konfiguracja głosu**: Zmień ustawienia głosu, w tym szybkość i ton, albo wybierz inny głos

**Przykłady użycia:**

* Użyj wydajniejszego LLM w węzłach wymagających złożonego podejmowania decyzji
* Zastosuj bardziej rygorystyczne zasady rozmowy podczas zbierania poufnych informacji
* Zmień charakterystykę głosu w różnych fazach rozmowy
* Zmień osobowość agenta dla określonych typów interakcji

#### Baza wiedzy

![Dodatkowa baza wiedzy subagenta](/docs/_fern-img/168a56fc316596983275999c53bbbe391c4c30a05abedc17cb6a4566eff7773f.webp)

Dodaj wiedzę specyficzną dla węzła bez wpływu na globalną bazę wiedzy:

* **Uwzględnij globalną bazę wiedzy**: Włącz lub wyłącz uwzględnianie głównej bazy wiedzy agenta
* **Dodatkowe dokumenty**: Dodaj dokumenty dotyczące tej fazy rozmowy
* **Wiedza dynamiczna**: Wstrzykuj informacje kontekstowe na podstawie stanu workflow

**Przykłady użycia:**

* Dodaj dokumentację konkretnego produktu podczas rozmów sprzedażowych
* Uwzględnij wytyczne dotyczące zgodności podczas uwierzytelniania
* Udostępnij przewodniki rozwiązywania problemów w procesach wsparcia
* Dodaj informacje o cenach dopiero po kwalifikacji

#### Narzędzia

![Dodatkowe narzędzia subagenta](/docs/_fern-img/9af53c3227661fd88bec57cb21197eb289760d33a874b56152d507373e51bac1.webp)

Zarządzaj narzędziami dostępnymi dla agenta w tym węźle:

* **Uwzględnij globalne narzędzia**: Włącz lub wyłącz uwzględnianie narzędzi z głównej konfiguracji agenta
* **Dodatkowe narzędzia**: Dodaj narzędzia specyficzne dla tego węzła workflow (np. narzędzia webhook, takie jak `book_meeting`)
* **Typ narzędzia**: Określ, czy narzędzia są webhookami, wywołaniami API czy innymi integracjami

**Przykłady użycia:**

* Dodaj narzędzia uwierzytelniania dopiero po wstępnej kwalifikacji
* Włącz narzędzia do przetwarzania płatności w węzłach finalizacji zakupu
* Zapewnij dostęp do CRM po weryfikacji użytkownika
* Dodaj narzędzia do planowania w fazach rezerwacji spotkań
* Uwzględnij narzędzia webhook do konkretnych działań, takich jak rezerwowanie spotkań

### Węzeł komunikatu

Węzeł komunikatu sprawia, że agent wypowiada jedną wiadomość w określonym punkcie workflow, a następnie przechodzi dalej wzdłuż wychodzących krawędzi. Użyj go, gdy brzmienie wiadomości jest ważne i nie powinno być pozostawione subagentowi, na przykład w przypadku powitania, informacji prawnej lub potwierdzenia odczytywanego użytkownikowi.

Każdy węzeł komunikatu wysyła wiadomość w jednym z dwóch trybów:

* **Dosłowny**: agent wypowiada dokładnie wpisany tekst, z opcjonalnym tłumaczeniem dla każdego skonfigurowanego języka.
* **Prompt**: LLM generuje wiadomość na podstawie napisanego przez ciebie opisu.

### Węzeł narzędzia wysyłki

Węzły narzędzi wykonują określone wywołanie narzędzia podczas przepływu rozmowy. W przeciwieństwie do narzędzi w subagentach, węzły narzędzi są dedykowanymi punktami wykonania, które gwarantują wywołanie narzędzia.

![Krawędzie wyników węzła narzędzia](/docs/_fern-img/6b60603e56dfb25e89cdfe4223826f635af874e034af8936d74d3b428611e17b.webp)

**Specjalna konfiguracja krawędzi:**
Węzły narzędzi mają unikalny typ krawędzi, który pozwala przekierować do nowego węzła na podstawie wyniku wykonania narzędzia. Możesz zdefiniować:

* **Ścieżka sukcesu**: Dokąd skierować, gdy narzędzie wykona się pomyślnie
* **Ścieżka błędu**: Dokąd skierować, gdy narzędzie nie powiedzie się lub zwróci błąd

W przyszłości będą dostępne kolejne warunki rozgałęziania.

### Węzeł aktualizacji stanu

Węzeł aktualizacji stanu przypisuje jedną lub więcej [zmiennych dynamicznych](/docs/pl/eleven-agents/customization/personalization/dynamic-variables) za każdym razem, gdy workflow przez niego przechodzi, używając tych samych wyrażeń co narzędzie Aktualizuj stan. W przeciwieństwie do narzędzia, które uruchamia się, gdy LLM zdecyduje się je wywołać, węzeł zawsze stosuje aktualizacje w tym punkcie grafu, a następnie przechodzi dalej wzdłuż wychodzących krawędzi.

Dowiedz się więcej [tutaj](/docs/pl/eleven-agents/customization/tools/system-tools/update-state).

### Węzeł przekazania agenta

Węzeł przekazania agenta ułatwia przekazywanie rozmowy między różnymi agentami konwersacyjnymi. Dowiedz się więcej [tutaj](/docs/pl/eleven-agents/customization/tools/system-tools/agent-transfer).

### Węzeł przekazania na numer

Węzły przekazania na numer przenoszą rozmowę z agentem AI do agenta ludzkiego przez systemy telefoniczne. Dowiedz się więcej [tutaj](/docs/pl/eleven-agents/customization/tools/system-tools/transfer-to-number)

### Węzeł zakończenia

Węzły zakończenia rozmowy elegancko kończą przepływ rozmowy. Dowiedz się więcej [tutaj](/docs/pl/eleven-agents/customization/tools/system-tools/transfer-to-number#:~:text=System%20tools-,End%20call,-Language%20detection)

## Krawędzie i kontrola przepływu

Krawędzie definiują, jak rozmowy przechodzą między węzłami workflow. Obsługują zaawansowaną logikę routingu, która umożliwia dynamiczne ścieżki rozmów uwzględniające kontekst.

![Krawędzie workflow](/docs/_fern-img/02d664c9211bb8cf5452b80ab865f26b8d0b723a6acff75141ea1e9c43f7dbab.webp)

#### Krawędzie do przodu

Krawędzie do przodu przenoszą rozmowę do kolejnych węzłów workflow. Reprezentują główny przepływ rozmowy.

![Konfiguracja krawędzi do przodu](/docs/_fern-img/2400c66bf6f60b0d4262ecd828dea93847197f7cc00d9c8964e6486419bc90be.webp)

#### Krawędzie wstecz

Krawędzie wstecz pozwalają rozmowom wracać do poprzednich węzłów, umożliwiając iteracyjne interakcje i logikę ponawiania prób.

![Konfiguracja krawędzi wstecz](/docs/_fern-img/e211da75e56c826fd763ae4d8149604a866d3ec63271c572e177d52bb9a80e14.webp)

**Przykłady użycia:**

* Ponów nieudane próby uwierzytelnienia
* Wróć, aby zebrać dodatkowe informacje
* Ponowna kwalifikacja po zmianach wymagań użytkownika
* Iteracyjne procesy rozwiązywania problemów

#### Warunek LLM

Używaj warunków LLM, aby tworzyć dynamiczne przepływy rozmów na podstawie oceny języka naturalnego. LLM ocenia warunki w czasie rzeczywistym, aby określić odpowiednią ścieżkę.

![Przekazanie agenta z warunkiem LLM](/docs/_fern-img/507885879d781f291ab35b7dda84e760767a5544ffb6bf7b455e7a1cc19b78b7.webp)

**Opcje konfiguracji:**

* **Etykieta**: Opis warunku krawędzi zrozumiały dla człowieka (nie jest przetwarzany przez LLM)
* **Warunek LLM**: Warunek w języku naturalnym oceniany przez LLM

#### Wyrażenie

Używaj wyrażeń, aby tworzyć logikę warunkową na podstawie zmiennych i danych strukturalnych.

![Przekazanie agenta z wyrażeniem](/docs/_fern-img/712fc40d707906a7c6ccb4b0a76f0fd3857278176606d441bfb5245f5f6e0ffe.webp)

**Opcje konfiguracji:**

* **Etykieta**: Opis warunku krawędzi zrozumiały dla człowieka (nie jest przetwarzany przez LLM)
* **Wyrażenie**: Deterministyczne kryteria oceny oparte na strukturze danych

#### Brak

Bezwarunkowe przejścia automatycznie przenoszą rozmowę do następnego węzła bez żadnych warunków.

![Bezwarunkowe przekazanie agenta](/docs/_fern-img/73b70ce7c783277e64ba533f6d69c84e2ed3120f1fd03dbdebcd4d4f5358eb5b.webp)

**Przykłady użycia:**

* Kolejne kroki, które zawsze następują po sobie
* Automatyczne przejście po zakończeniu działania
* Domyślne ścieżki awaryjne

## Analityka

![Karta analityki workflow pokazująca wejścia do poszczególnych węzłów, czasy trwania, zakończenia i przepływ przez krawędzie nałożone na graf workflow](/docs/_fern-img/a758029a005f0327c1e6319708577efd617399c72cec63d5c342d3af2f0db2a3.webp)

Gdy workflow jest aktywny, karta **Workflow** w [panelu analityki](/docs/pl/eleven-agents/dashboard#workflow-analytics) nakłada na graf dane o użyciu: wejścia do poszczególnych węzłów, średni czas spędzony w nich i zakończenia, a także rozkład krawędzi przychodzących i wychodzących dla każdego węzła. W inspektorze węzła możesz też przejść bezpośrednio do pasujących rozmów w historii przez filtr **Węzeł odwiedzony**.