Przejdź do głównej zawartości

Przepływy pracy

Przepływ pracy to wizualna mapa tego, co Twój agent powinien robić krok po kroku — kto mówi pierwszy, o co pytać, kiedy się rozgałęzić, kiedy przekazać połączenie i kiedy oddać połączenie innemu agentowi. Budujesz go na kanwie, upuszczając węzły i łącząc je.

Użyj przepływu pracy, gdy pojedynczy prompt nie wystarcza — gdy połączenie ma wyraźne etapy („najpierw zakwalifikuj, potem zbierz szczegóły, potem albo zarezerwuj, albo przekaż"), gdy potrzebujesz deterministycznego kierowania na podstawie odpowiedzi dzwoniącego (a nie „AI zwykle robi właściwą rzecz") lub gdy jeden agent powinien oddać część pracy specjaliście.

Prompt vs Przepływ pracy

Prompt to jedna długa instrukcja. Agent czyta ją raz i używa jej przez całe połączenie. Przepływ pracy to wiele małych instrukcji, po jednej na węzeł, z jawnymi przejściami między nimi. Graf napędza połączenie — agent na każdym węźle posiada tylko swój wycinek.

Jeśli Twój agent już dobrze działa z pojedynczym promptem, nie potrzebujesz przepływu pracy. Sięgnij po przepływy pracy, gdy ciągle dodajesz zasady „jeśli X, to Y" do promptu, a przestają one działać niezawodnie.


Edytor

Edytor przepływu pracy żyje we własnej zakładce na stronie agenta. Widzisz kanwę z domyślnym węzłem Start i węzłem Koniec. Dodajesz węzły z paska narzędzi, przeciągasz je na kanwę i łączysz krawędziami.

Panel po prawej stronie przełącza się w miarę zaznaczania rzeczy:

  • Kliknij węzeł — otwiera się jego panel ustawień (prompt, pola, zmienne pobierania itd.).
  • Kliknij krawędź — otwierają się jej ustawienia wyzwalacza (AI decyduje / Warunek / Zawsze).
  • Panel Zmienne (przycisk paska narzędzi) wymienia każdą zmienną, którą przepływ pracy deklaruje lub używa, z przeskokiem jednym kliknięciem do węzła, który każdą z nich ustawia lub odczytuje.

Uruchom Połączenie testowe w przeglądarce bezpośrednio z edytora — świecący świetlik śledzi pozycję na żywo, dzięki czemu widzisz dokładnie, który węzeł jest aktywny w każdej chwili.

Cofnij / Ponów (v2.8) — edytor przechowuje historię do 20 kroków, więc możesz cofnąć błędny ruch (lub go ponowić) bez przebudowywania. Usunięcie węzła najpierw prosi o potwierdzenie (v2.8), więc nie tracisz kroku przez przypadkowe kliknięcie.

Zbuduj jako przepływ pracy (v3.0)

Nie musisz zaczynać od pustej kanwy. Punkt wejścia „zbuduj jako przepływ pracy" udostępnia przepływ pracy dla agenta i przenosi Cię prosto do kreatora — jedna akcja tworzy przepływ pracy i otwiera edytor, gotowy do dodawania węzłów.

Zapis i status

Przepływy pracy mają trzy statusy:

  • Wersja robocza — edytowalna, jeszcze nie na żywo. Użyj Połączenia testowego, aby ją wypróbować.
  • Aktywny — na żywo dla prawdziwych połączeń. Agent używa tego przepływu pracy od następnego połączenia.
  • Szablon — wielokrotnego użytku wzorzec, nigdy bezpośrednio powiązany z agentem. Możesz go zainstancjonować na wielu agentach.

Węzły

Każdy węzeł to krok w rozmowie. Różne typy węzłów robią różne rzeczy — niektóre mówią, niektóre słuchają, niektóre kierują, niektóre uruchamiają narzędzia.

Agent

Węzeł agenta to serce etapu przepływu pracy. Gdy graf dociera do węzła agenta, ten agent przejmuje głos i napędza rozmowę, aż coś wyzwoli przejście.

Konfigurujesz personę i zadanie węzła agenta bezpośrednio na kanwie (zakładka Prompt otwiera się po kliknięciu węzła) — to jest prompt dla tego wycinka rozmowy, a nie całego połączenia. Możesz również dołączyć bazy wiedzy i narzędzia dla każdego węzła.

Powitanie — pierwsza linijka. Jeśli to węzeł wejściowy (pierwszy przystanek po Start), to jest to, co dzwoniący słyszy najpierw.

Graf napędza personę

Gdy graf zarządza połączeniem, prompt aktywnego węzła jest nakładany na bazowy prompt agenta (ten w zakładce Model). Graf posiada osobowość i zadanie dla każdego etapu, podczas gdy bazowe instrukcje agenta pozostają na miejscu jako fundament.

Subagent

Subagent to pomocnik, który działa inline — przejmuje rozmowę do skoncentrowanego zadania, a następnie oddaje wynik temu, kto go wywołał.

Subagenci są świetni, gdy jeden fragment pracy jest wielokrotnego użytku lub wydaje się odrębny: „zweryfikuj tożsamość dzwoniącego", „zbierz adres dostawy", „zakwalifikuj leada metodą SPIN". Agent nadrzędny wywołuje subagenta, subagent robi swoje i raportuje wynik, a nadrzędny podejmuje się tam, gdzie skończył.

Węzły subagenta mają te same zakładki co węzeł agenta (Prompt, Wiedza, Narzędzia, Akcje) — edytor automatycznie tworzy dla Ciebie ukrytego agenta zaplecza. Nie widzisz tego ukrytego agenta na swojej głównej liście agentów i nie liczy się on do limitu agentów Twojego planu.

Zmienna zwrotna — miejsce do przechowania wyniku subagenta (np. identity_verified, lead_score).

Kto mówi pierwszy

Domyślnie subagent otwiera swoją turę mówieniem — wita lub zadaje pierwsze pytanie w momencie, gdy przejmuje. Dwa przełączniki to zmieniają:

  • Poczekaj na dzwoniącego (nie mów pierwszy) — subagent milczy przy wejściu i odpowiada dopiero, gdy dzwoniący coś powie. Włącz to, gdy subagent jest pierwszym przystankiem w połączeniu i chcesz, aby dzwoniący zaczął (prawdziwe „Halo?") zamiast agenta otwierającego — lub w trakcie połączenia, gdy poprzedni krok powiedział już wszystko, a subagent powinien tylko nasłuchiwać odpowiedzi.
  • Cichy krok (nie mów) — subagent w ogóle nie mówi. Odczytuje dotychczasową rozmowę, decyduje o wyniku i oddaje sterowanie z powrotem. Użyj go jako niewidzialnego routera: „przeczytaj, o co pytał dzwoniący, i zdecyduj, który to dział" — bez wypowiedzianych słów, tylko decyzja, na której graf się rozgałęzia.

Dozwolone wartości wyniku

Subagent zwykle kończy z dowolną wartością, którą uznał za odpowiednią. Jeśli zamierzasz rozgałęziać się na tym wyniku za pomocą krawędzi Warunek, przypnij go zamiast tego do zamkniętej listy dozwolonych wartości:

  • Wymień każdą dozwoloną wartość w Dozwolone wartości wyniku (np. sales, support, billing).
  • Subagent musi zakończyć dokładnie jedną z nich — nie może wymyślić nowej.
  • Sparuj każdą wartość z krawędzią Warunek (result is "sales" → …) dla czystego, przewidywalnego kierowania.

To niezawodny sposób, aby subagent zdecydował i pokierował: wynik jest gwarantowany, że pasuje do jednej z Twoich gałęzi.

Kierowanie na wyjściu z subagenta

Subagent oddaje pojedynczy wynik, gdy skończy. Okabluj, co dzieje się dalej, za pomocą krawędzi Warunek lub Zawsze na tym wyniku — wyjście subagenta nie używa krawędzi „AI decyduje". Dlatego Dozwolone wartości wyniku + krawędzie Warunek to zalecany wzorzec dla subagenta kierującego.

Wiadomość

Węzeł Wiadomość wypowiada stałą linijkę, bez tury AI, bez improwizacji. Użyj go do przejść („Chwileczkę, już Pana przekierowuję…"), prawnie wymaganych zastrzeżeń lub gotowych potwierdzeń, gdzie sformułowanie ma znaczenie.

Tekst — co wypowiedzieć. Obsługuje tokeny {{variable}} do wstrzykiwania zebranych wartości, np. "Dziękuję {{first_name}}, zapisałem Pana na {{appointment_time}}."

Węzeł Wiadomość konsumuje turę — agent nie doda nic więcej na wierzchu.

Zbieranie danych

Węzeł Zbieranie danych zadaje jedno pytanie i przechwytuje odpowiedź dzwoniącego do zmiennej.

Prompt — pytanie do zadania. Obsługuje {{tokeny}}. Zmienna — nazwa miejsca do przechowania odpowiedzi. Maks. cisza (v2.8) — limit na pytanie określający, jak długo czekać na odpowiedź dzwoniącego, zanim ruszymy dalej. Ustaw go dla każdego węzła Zbierania danych, aby szybkie pytanie tak/nie mogło wygasnąć wcześniej niż takie, które prosi dzwoniącego o odczytanie długiego numeru konta.

Użyj go, gdy potrzebujesz konkretnej wartości przed kontynuowaniem — e-mail, numer konta, liczba osób, kategoria problemu. Następna tura dzwoniącego staje się wartością; możesz się na niej rozgałęzić za pomocą krawędzi Warunek zaraz potem.

Aktualizacja stanu

Węzeł Aktualizacja stanu zapisuje jedną lub więcej wartości do zmiennych przepływu pracy bez mówienia czy pytania. Użyj go do wstępnego ustawiania domyślnych wartości, oznaczania flag postępu lub etapowania wartości obliczonych z wcześniejszych kroków.

Zmienna / Wartość — jedna para klucz-wartość. Więcej zmiennych (opcjonalnie) — dodatkowe pary klucz-wartość.

Zarówno klucze, jak i wartości obsługują {{tokeny}}, więc możesz komponować nowe wartości z istniejących.

Warunek

Węzeł Warunek to węzeł wyłącznie kierujący — nie mówi, nie pyta, po prostu wysyła połączenie w dół tej wychodzącej gałęzi, która pasuje.

Sam warunek żyje na każdej wychodzącej krawędzi, a nie na węźle — zobacz Krawędzie Warunek poniżej.

Użyj węzła Warunek, gdy chcesz mieć wyraźny punkt „rozgałęzienia" w swoim grafie: wiele gałęzi zależnych od wartości jednej zmiennej. W porównaniu z umieszczaniem warunków na krawędziach węzła agenta, dedykowany węzeł Warunek sprawia, że logika kierowania jest wizualnie oczywista.

Narzędzie

Węzeł Narzędzie uruchamia jedno z podłączonych narzędzi agenta jako krok grafu — nie dając AI żadnego głosu w kwestii tego, czy je wywołać. Użyj go, gdy chcesz faktu, a nie rozmowy: „wyszukaj tego klienta", „sprawdź stan magazynowy", „pobierz (GET) aktualną pogodę".

Możesz albo:

  • Wybrać jedno z istniejących narzędzi agenta (wyszukiwanie w kalendarzu, wyszukiwanie w bazie wiedzy, konkretną akcję integracji), albo
  • Skonfigurować wbudowane wywołanie HTTP bezpośrednio na węźle (URL, metoda, nagłówki, parametry, body).

Odpowiedź narzędzia staje się dostępna dla wszystkich węzłów niżej w grafie. Jeśli odpowiedź jest obiektem JSON, każde pole najwyższego poziomu staje się własną zmienną — więc odpowiedź taka jak {"is_known": true, "tier": "gold"} zapisuje zarówno is_known, jak i tier, na których możesz się rozgałęzić.

Tokeny narzędzia

Każde pole tekstowe na węźle Narzędzie — URL, wartości nagłówków, body — obsługuje {{tokeny}}. Wciągnij zmienną do ścieżki URL, nagłówka lub body żądania bez pisania żadnego kodu.

Jeśli wywołanie narzędzia zawiedzie (błąd HTTP, limit czasu, sieć), węzeł loguje niepowodzenie, a graf idzie dalej — bez danych. Zaplanuj swoje warunki niżej w grafie tak, aby obsłużyć przypadek „brak wartości".

Wiedza (RAG)

Węzeł Wiedza (RAG) to wariant Narzędzia skupiony na pobieraniu z bazy wiedzy. Wybierz jedną z baz wiedzy agenta, napisz zapytanie wyszukiwania (z {{tokenami}}, jeśli chcesz), a węzeł uruchomi wyszukiwanie jako krok grafu.

Użyj go, gdy chcesz, aby przepływ pracy coś wyszukał zanim przemówi węzeł Agent — np. pobierz najnowsze zamówienie klienta, aby następny węzeł Agent mógł je wspomnieć bez potrzeby pytania. Pobrana treść trafia do zmiennej, którą możesz wciągnąć do promptów i wiadomości.

Integracja

Węzeł Integracja to skupiony wariant Narzędzia, dla podłączonych usług zewnętrznych — Google Calendar, Outlook, HubSpot. Wybierasz dostawcę i konkretną akcję (np. check_availability, create_event), ustawiasz parametry, a węzeł wywołuje integrację deterministycznie.

Jeśli integracja nie jest podłączona u tego agenta, węzeł przechodzi bez robienia czegokolwiek — Twój graf kontynuuje. Sprawdź warunki niżej w grafie dla przypadku „nie uruchomiono".

Przekazanie telefoniczne

Węzeł Przekazanie telefoniczne wykonuje ciepłe przekazanie połączenia na zewnętrzny numer telefonu. Po udanym przekazaniu połączenie opuściło Twój przepływ pracy — Twój agent nie jest już na linii.

Numer — cel w formacie międzynarodowym z wiodącym + (np. +15551234567). Obsługuje {{tokeny}}, więc cel może pochodzić z wcześniejszego kroku (np. odpowiedź na „z którym biurem mamy Pana połączyć?").

Jeśli przekazanie nie dojdzie do skutku (nieprawidłowy numer, brak odpowiedzi, nieskonfigurowane połączenie telefoniczne), graf cofa się, a bieżący agent pozostaje na linii. Rozmowa toczy się normalnie — agent może przeprosić i spróbować innej ścieżki.

Zakończ połączenie

Węzeł Zakończ połączenie finalizuje — agent wypowiada skonfigurowane pożegnanie, a następnie rozłącza się. Użyj go jako czystego zakończenia dla gałęzi „wszystko gotowe" lub dla gałęzi „nie możemy pomóc, przepraszamy" z trudnego do obsłużenia Warunku.

Nie jest potrzebna żadna konfiguracja poza okablowaniem krawędzi do niego.

Ponowne użycie przepływu pracy (Podprzepływ)

Węzeł Podprzepływ jest zarezerwowany do osadzania innego przepływu pracy jako podgrafu. Ten węzeł jest w edytorze, ale nie jest jeszcze w pełni okablowany — graf przechodzi przez niego bez robienia czegokolwiek. Nie polegaj na nim w połączeniach produkcyjnych. Włączymy go, gdy udostępnimy podgrafy wielokrotnego użytku.


Krawędzie (połączenia)

Okablujesz jeden węzeł do następnego za pomocą krawędzi. Wyzwalacz krawędzi decyduje, kiedy uruchamia się przejście.

Są trzy wyzwalacze:

WyzwalaczKto decydujeKiedy się uruchamia
AI decydujeAIGdy rozmowa czyni to naturalnym następnym krokiem. AI otrzymuje „narzędzie przejścia", które może wywołać.
WarunekŚrodowisko uruchomienioweGdy zmienna pasuje do zasady, którą napiszesz. Oceniane zanim AI odpowie.
ZawszeŚrodowisko uruchomienioweBezwarunkowo — w momencie, gdy węzeł źródłowy się kończy. Bez wejścia od dzwoniącego, bez udziału AI.

AI decyduje (napędzane intencją)

Użyj AI decyduje, gdy tylko AI potrafi rozpoznać, kiedy się przełączyć — „jeśli dzwoniący pyta o ceny, przekaż do agenta sprzedaży", „jeśli brzmi to jak skarga, uruchom subagenta przepraszającego".

Piszesz krótki opis intencji na krawędzi (np. „Dzwoniący pyta o ceny lub chce dokonać upgrade'u"). AI widzi go jako narzędzie oznaczone tą intencją i decyduje, czy je wywołać, na podstawie rozmowy. Jeśli istnieje wiele krawędzi AI-decyduje, AI wybiera co najwyżej jedną na turę.

Warunek (deterministyczne rozgałęzianie)

Użyj Warunku, gdy chcesz, aby graf — a nie AI — decydował na podstawie znanego faktu: „jeśli lead_score is more than 7, wyślij do domykacza; w przeciwnym razie zakończ połączenie uprzejmie".

Warunki oceniają się zanim AI odpowie, więc zawsze wygrywają z AI na tej turze. AI nie może nadpisać pasującego warunku.

Możesz zbudować warunek z tych operatorów:

OperatorZnaczeniePrzykład
isdokładne dopasowanie (bez rozróżniania wielkości liter dla tekstu)intent is "billing"
is notnie pasujestatus is not "active"
containsdopasowanie podciągu (bez rozróżniania wielkości liter)feedback contains "broken"
is more thanliczbowe >lead_score is more than 7
is less thanliczbowe <wait_minutes is less than 5

Możesz również łączyć klauzule za pomocą All (każda klauzula musi pasować — AND) lub Any (co najmniej jedna musi pasować — OR) oraz zagnieżdżać je. Więc zasada taka jak „dzwoniący jest znany i jego poziom to gold lub premium" staje się:

All:
- is_known is true
- Any:
- tier is gold
- tier is premium
Brakujące zmienne nigdy nie pasują

Jeśli odwołujesz się do zmiennej, która nie została jeszcze ustawiona (np. AI nigdy jej nie zebrało), warunki na niej zawsze zawodzą — nie zgłaszają błędu, po prostu nie pasują. Więc loyalty_tier is "gold" zwraca fałsz, jeśli loyalty_tier nigdy nie zostało ustawione. Zaprojektuj swoje gałęzie tak, aby to obsłużyć — zwykle gałęzią else (patrz niżej).

Gałąź else — gdy żaden warunek nie pasuje

Jeśli masz kilka krawędzi Warunek wychodzących z węzła i żadna z nich nie pasuje, połączenie spada do krawędzi o najniższym priorytecie niebędącej Warunkiem (Zawsze lub krawędź AI-decyduje). Jeśli nie ma żadnego fallbacka, AI odzyskuje kontrolę i może kontynuować swobodnie.

Częsty wzorzec: kilka Warunków dla dobrze znanych ścieżek, plus krawędź Zawsze do przypadku ogólnego (Wiadomość, potem Zakończ połączenie lub przekazanie).

Zawsze (auto-przejście)

Użyj Zawsze, gdy następny krok jest bezwarunkowy — bez decyzji, bez wejścia od dzwoniącego. Dwa naturalne zastosowania:

  • Łańcuchowanie kroków: Wiadomość → Aktualizacja stanu → Wiadomość → Narzędzie → Warunek. Każdy krok się kończy, a krawędź Zawsze od razu przechodzi dalej.
  • Auto-przejście po tym, jak agent skończy mówić: węzeł agenta z wychodzącą krawędzią Zawsze oznacza „gdy tylko AI przestanie mówić, przejdź dalej" — bez potrzeby odpowiedzi dzwoniącego. Przydatne dla przepływów w stylu monologu, takich jak agent prezenter, który dostarcza treść i przechodzi do następnej sekcji.
Priorytet między wyzwalaczami

Warunek i Zawsze (te deterministyczne) zawsze wygrywają z AI decyduje. Jeśli Warunek pasuje, narzędzia przejścia AI są ignorowane na tej turze. To właśnie pozwala Ci pisać zasady, których AI nie może obejść.

Kolejność gałęzi

Gdy kilka krawędzi opuszcza ten sam węzeł, edytor pozwala ustawić priorytet poprzez przeciąganie wierszy w górę lub w dół. Gałęzie o niższym priorytecie są sprawdzane najpierw. Ma to znaczenie tylko, gdy dwie gałęzie mogłyby obie uruchomić się na tej samej turze — zwykle dwie krawędzie Warunek z nakładającymi się zasadami. Wygrywa pierwsza pasująca gałąź.

Przenieś kontekst — ile pamięta następny agent

Każda krawędź ma ustawienie Przenieś kontekst, które kontroluje, jaką część transkryptu rozmowy widzi następny węzeł:

  • Pełny transkrypt (domyślnie) — następny agent widzi wszystko, co dotąd powiedziano.
  • Tylko podsumowanie — platforma podsumowuje wcześniejszą rozmowę i przekazuje krótkie podsumowanie następnemu agentowi.
  • Nic — następny agent zaczyna od nowa, bez wcześniejszego transkryptu.

Użyj Tylko podsumowanie przy przekazywaniu do agenta specjalisty, który nie potrzebuje każdego słowa — oszczędza to tokeny i utrzymuje skupienie nowego agenta. Użyj Nic dla gałęzi, w których persona nowego agenta ma być oddzielna (np. ankieta zadowolenia na końcu połączenia).


Zmienne

Zmienne to pamięć przepływu pracy. Większość rzeczy w przepływie pracy dotyczy albo ustawienia zmiennej, albo jej odczytania.

Deklarowanie zmiennych

Panel Zmienne (przycisk paska narzędzi) pokazuje każdą zmienną w przepływie pracy wraz z krokami, które każdą z nich ustawiają lub odczytują. Kliknij zmienną, aby przeskoczyć do jej settera; to najszybszy sposób, aby znaleźć, gdzie coś idzie nie tak.

Możesz zadeklarować zmienną z wartością domyślną w panelu — przydatne dla flag takich jak escalated=false, które muszą istnieć od początku, aby Twoje warunki nigdy po cichu nie zawodziły na „brakującej".

Wbudowane zmienne połączenia

Kilka zmiennych jest wypełnianych za Ciebie na samym początku każdego połączenia — nie deklarujesz ich ani nie ustawiasz, są po prostu do odczytu:

ZmiennaCo przechowuje
{{call_from}}Numer telefonu dzwoniącego
{{call_to}}Numer, na który wybrano (Twój numer)
{{call_direction}}inbound lub outbound

Ponieważ istnieją od pierwszej chwili, możesz się na nich rozgałęzić już na pierwszym węźle — na przykład Warunek na call_from, aby przywitać znanego VIP-a po imieniu, kierować według kodu kraju lub wysłać nieznane numery ścieżką weryfikacji, zanim cokolwiek innego się wydarzy.

Jak ustawiane są zmienne

ŹródłoPrzykład
Wartości domyślne (zadeklarowane w panelu Zmienne)escalated = false ustawione przed rozpoczęciem połączenia
Zbieranie danychWypowiedziana odpowiedź dzwoniącego jest przechwytywana do zmiennej węzła
Aktualizacja stanuZapisujesz wartość (literał lub złożoną z {{tokenów}}) bezpośrednio
Wynik Narzędzia / IntegracjiCała odpowiedź jest przechowywana pod nazwą węzła; jeśli odpowiedź jest obiektem JSON, każde pole najwyższego poziomu również staje się własną zmienną
Zwrot subagentaCokolwiek subagent kończy, jest przechowywane w zmiennej zwrotnej węzła subagenta

Odczytywanie zmiennych — {{tokeny}}

Wszędzie, gdzie możesz wpisać tekst na węźle — prompt agenta, tekst Wiadomości, prompt Zbierania danych, URL / body / nagłówki Narzędzia, numer Przekazania telefonicznego, wartość Aktualizacji stanu, wartości warunków — możesz wstawić {{variable}}, a zostanie podstawiona w czasie uruchomienia.

Działają też ścieżki z kropkami dla danych zagnieżdżonych — np. jeśli odpowiedź Narzędzia to {"customer": {"name": "Anna", "tier": "gold"}}, możesz odczytać {{customer.name}} lub {{customer.tier}}.

Nieznane tokeny pozostają widoczne

Jeśli token odwołuje się do zmiennej, która nie istnieje, dosłowny tekst {{name}} jest pozostawiany na miejscu (nie jest wymazywany). Jest to celowe — sprawia, że zepsute szablony łatwo dostrzec w połączeniu testowym, zamiast po cichu je połykać.


Typowe wzorce

Zakwalifikuj → Rozgałęź → Pokieruj

Start
└─ Agent (greeting + qualify)
└─ Gather input (intent)
└─ Condition: intent == "sales" → Agent (sales)
└─ Condition: intent == "support" → Subagent (triage)
└─ Always (catch-all) → Message "Let me connect you" → Phone transfer

Wyszukaj → Spersonalizuj

Start
└─ Tool (CRM lookup, writes is_known, name, tier)
└─ Condition: is_known == true → Agent (warm greeting with {{name}})
└─ Always (else) → Agent (cold greeting)

Pomocnik wielokrotnego użytku (odnoga do subagenta)

Agent (main conversation)
└─ AI decides: "Caller mentions an address" → Subagent (address collector)
└─ on finish: result = full_address
└─ Agent continues with {{full_address}}

Co jest zablokowane podczas połączenia z przepływem pracy

Kilka domyślnych ustawień zmienia się, gdy graf zarządza połączeniem:

  • Język jest zablokowany do tego, którego używa pierwszy agent przepływu pracy. AI nie może zmieniać języków w trakcie połączenia. Zapobiega to zsuwaniu się modelu do niewłaściwego języka na hałaśliwej turze.
  • Główny prompt agenta jest zastępowany przez prompt aktywnego węzła. To zasada „graf posiada personę" — zobacz ostrzeżenie pod Agent.
  • Pierwsza wiadomość pochodzi z powitania węzła wejściowego, a nie z pola „Wiadomość początkowa" głównego agenta.

Bezpieczeństwo pętli — budżet kroków

Każdy przepływ pracy ma maksymalną liczbę przejść na połączenie (domyślnie 25). Za każdym razem, gdy graf przechodzi do nowego węzła, licznik zmniejsza się o jeden. Gdy osiąga zero, przepływ pracy przestaje skakać między węzłami, aby zapobiec niekontrolowanym pętlom.

Możesz wybrać węzeł zapasowy dla tego przypadku (zwykle Przekazanie telefoniczne lub Zakończ połączenie) — połączenie przekierowuje tam, gdy budżet się skończy. W przeciwnym razie AI odzyskuje kontrolę, a graf faktycznie zamraża się na resztę połączenia.

Bardzo rzadko musisz o tym myśleć — to siatka bezpieczeństwa dla grafów, które przypadkowo się zapętlają. Jeśli natrafisz na to w normalnym użyciu, prawdopodobnie masz gdzieś cykl.


Testowanie

Przycisk Połączenie testowe w edytorze otwiera połączenie w przeglądarce z bieżącą wersją roboczą przepływu pracy. Podczas trwania połączenia świecący świetlik porusza się między węzłami na kanwie, dzięki czemu widzisz dokładnie, gdzie jest połączenie. Edytor jest zablokowany podczas połączenia testowego, aby zapobiec desynchronizacji edycji ze stanem na żywo.

Użyj Połączenia testowego, aby zweryfikować:

  • Czy Twoje warunki pasują do wartości, których oczekujesz (obserwuj, jak świetlik przeskakuje przez gałąź, o której myślałeś, że się uruchomi).
  • Czy Twoje tokeny podstawiają się poprawnie (nasłuchuj błąkającego się {{name}}, jeśli wartość nie została jeszcze ustawiona).
  • Czy niepowodzenia narzędzi degradują z gracją (czy Twoja ścieżka zapasowa faktycznie się uruchamia).

Warte poznania tryby awaryjne

SytuacjaCo się dzieje
Wywołanie Narzędzia / Integracji zawodziGraf kontynuuje bez danych. Twoje warunki niżej w grafie powinny obsłużyć brakującą zmienną.
Przekazanie telefoniczne zawodzi (nieprawidłowy numer, brak odpowiedzi, brak połączenia telefonicznego)Graf cofa się, bieżący agent pozostaje na linii, a rozmowa toczy się normalnie.
Subagent nie może wystartowaćOdnoga jest anulowana, agent nadrzędny pozostaje, a wypowiadana jest krótka linijka o niepowodzeniu.
{{missing_variable}} w tekściePozostawione dosłownie w wyjściu — łatwe do dostrzeżenia podczas połączeń testowych.
Węzeł PodprzepływObecnie przechodzi bez robienia czegokolwiek. Nie polegaj na nim jeszcze.
Budżet kroków wyczerpanyPrzekierowuje do węzła zapasowego, jeśli jest ustawiony, w przeciwnym razie AI odzyskuje kontrolę.

Kiedy NIE używać przepływu pracy

Przepływy pracy są potężne, ale nie są właściwą odpowiedzią dla każdego agenta. Trzymaj się pojedynczego promptu, gdy:

  • Rozmowa jest otwarta („odpowiadaj na pytania dzwoniącego o nasze produkty").
  • Nie masz jednoznacznej logiki rozgałęzień — większość decyzji to kwestie osądu, które AI dobrze obsługuje.
  • Pisałbyś jeden węzeł agenta i jeden Zakończ połączenie — to po prostu prompt z dodatkowymi krokami.

Sięgnij po przepływ pracy, gdy:

  • Potrafisz naszkicować połączenie jako schemat blokowy z trzema lub więcej odrębnymi etapami.
  • Potrzebujesz co najmniej jednej deterministycznej gałęzi na zmiennej (Warunek).
  • Chcesz ponownie użyć wycinka rozmowy u wielu agentów (subagent).
  • Już piętrzysz zasady „jeśli dzwoniący mówi X, to zrób Y" w prompcie, a nie są one niezawodne.