Wyobraź sobie, że ktoś wchodzi na twoją stronę, klika jeden przycisk i zaczyna mówić — a strona odpowiada głosem: tłumaczy, czym się zajmujesz, odpowiada na pytania o ofertę, a na koniec sama umawia rozmowę w twoim kalendarzu. To nie jest demo z przyszłości. Taki agent głosowy powstaje dziś w kilkanaście minut rozmowy z modelem, a nie w kilka dni ręcznego sklejania interfejsów. Pokażę ci, z czego się składa, jak go zbudować bez klikania po panelach i jak go zabezpieczyć, żeby nie obciążył twojego konta.
Najpierw zrozum, co to za pętla — to nie magia
Najpierw mechanizm, bo wokół „rozmowy z AI” narosło dużo mgły. Agent głosowy to nie jeden cudowny program. To pętla, która powtarza się przy każdej wypowiedzi.
Wygląda tak. Odwiedzający mówi do mikrofonu. Jego głos jest najpierw zamieniany na tekst (po angielsku speech-to-text — to ten sam mechanizm, który dyktuje wiadomości w telefonie). Ten tekst trafia do modelu językowego — tej samej klasy systemu, co duże asystenty tekstowe. Model czyta wypowiedź i podejmuje jedną z dwóch decyzji: albo od razu układa odpowiedź, albo najpierw sięga po narzędzie — zagląda do bazy wiedzy, sprawdza kalendarz, woła zewnętrzną usługę. Gdy ma już odpowiedź, jest ona zamieniana z powrotem na mowę i wypowiadana na głos. Potem odwiedzający mówi dalej i pętla rusza od nowa.
To wszystko. Słucha → rozumie → ewentualnie działa → odpowiada głosem. Gdy raz to zobaczysz jako pętlę, znika poczucie, że masz do czynienia z czymś niepojętym. Masz do czynienia z czterema częściami, które trzeba dobrze ustawić.
Cztery klocki każdego agenta głosowego
Każdy agent głosowy — niezależnie od tego, czy doradza, czy umawia spotkania — składa się z tych samych czterech elementów. Warto je nazwać, bo właśnie nad nimi będziesz później pracować.
Persona to charakter agenta — kim jest i jak się zachowuje. Technicznie zapisuje się ją w tak zwanym system prompt (instrukcji systemowej): to stały opis na samej górze, który agent czyta przed każdą rozmową. „Jesteś asystentem firmy X, rozmawiasz z potencjalnymi klientami, jesteś ciepły i rzeczowy”. Tu decydujesz, czy agent jest formalny, czy swobodny, czy dopytuje, czy odpowiada krótko. Zmieniasz personę — zmieniasz całe zachowanie.
Głos to brzmienie, w którym agent mówi. Wybierasz jeden z gotowych głosów albo używasz klonu głosu — czyli sztucznie odtworzonego brzmienia konkretnej osoby, zbudowanego z kilku godzin nagrań jej mowy. Klon pozwala, by agent mówił „twoim” głosem, ale do prostego startu w zupełności wystarczy gotowy głos z biblioteki.
Wiedza to wszystko, z czego agent może czerpać, żeby nie zmyślać. Dokumenty o firmie, opis oferty, baza klientów, historia zamówień — to, co ma znać, by odpowiadać zgodnie z prawdą, a nie wymyślać na poczekaniu. Agent doradczy dostaje materiały o usługach; agent obsługi klienta dostaje dostęp do statusów zamówień. Bez wiedzy osadzonej w realnych danych agent „halucynuje” — czyli pewnym tonem podaje rzeczy, których nie ma w żadnym źródle.
Narzędzia to działania, które agent może wykonać poza samą rozmową. Sprawdzić wolne terminy w kalendarzu. Zarezerwować spotkanie. Wywołać zewnętrzną usługę przez tak zwany endpoint — czyli konkretny adres, pod który agent wysyła zapytanie i z którego dostaje odpowiedź. Może też uruchomić gotową automatyzację, którą masz już zbudowaną gdzie indziej. Persona, głos i wiedza decydują, jak agent mówi. Narzędzia decydują, co potrafi zrobić.
Code beats clicks — buduj rozmową, nie klikaniem
Tu jest sedno, dla którego w ogóle warto o tym pisać. Klasyczna droga do takiego agenta to dziesiątki ręcznych kroków w panelu platformy głosowej — sam korzystam tu z ElevenLabs, bo ma dobry klon głosu i wygodny panel. Wchodzisz, ręcznie wpisujesz instrukcję systemową, układasz pierwszą wiadomość powitalną, decydujesz, jak wgrać bazę wiedzy, a potem konfigurujesz każde narzędzie z osobna — jego adres, sposób uwierzytelnienia, format zapytania. Łatwo o pomyłkę w adresie, łatwo zapomnieć coś zapisać.
Jest droga znacznie krótsza, którą oddaje hasło „code beats clicks” — kod bije klikanie. Zamiast samodzielnie klikać po panelu, opisujesz cel zwykłym językiem agentowi kodującemu (korzystam z Claude Code). Mówisz mu, co ma powstać. On czyta dokumentację platformy, ustala, jak ją połączyć, i sam konfiguruje za ciebie agenta: personę, głos, instrukcję i narzędzia. Ty nie czytasz ani jednej strony dokumentacji.
Jedna zasada jest tu kluczowa: najpierw plan, potem budowa. Zanim cokolwiek powstanie, pozwól agentowi kodującemu zadać ci pytania i wspólnie uzgodnić plan. To naturalne — my, ludzie, dobrze znamy cel, ale rzadko znamy z góry całą drogę do niego. W praktyce wygląda to tak: rzucasz pomysł ogólnie („chcę asystenta sprzedażowego na stronie, który umawia rozmowy”), a agent dopytuje o brakujące szczegóły — masz już konto na platformie głosowej? Jaki kalendarz podpinasz? Jak ma wyglądać widget? Jaki ton głosu? Jakie dane ma zebrać od rozmówcy? Odpowiadasz, zatwierdzasz plan i dopiero wtedy puszczasz go do roboty. Czas zainwestowany w to ustalenie zwraca się tym, że agent przechodzi przez budowę bez błądzenia.
Trzy drzwi do tego samego silnika
Gdy agent jest już gotowy, masz trzy sposoby, żeby ludzie mogli z niego skorzystać. To ważne rozróżnienie, bo silnik za nimi jest ten sam — różnią się tylko drzwiami.
Pierwszy: testujesz go w panelu. Zanim pokażesz go komukolwiek, rozmawiasz z nim wprost na platformie i sprawdzasz, czy działa. To twoja piaskownica.
Drugi: osadzasz go na stronie jako widget. Widget to mały, samodzielny element, który wstawiasz na stronę — tutaj pływający dymek z przyciskiem „rozpocznij rozmowę” w rogu ekranu. Platforma daje ci jeden gotowy fragment kodu do wklejenia; mówisz agentowi kodującemu „umieść to na mojej stronie” i tyle.
Trzeci: podłączasz agenta do numeru telefonu — na przykład przez usługę pośredniczącą w połączeniach (jak Twilio). Wtedy agent odbiera, gdy ktoś zadzwoni, albo sam dzwoni z tego numeru. Ten sam silnik, te same cztery klocki — inne drzwi. Raz zbudowanego agenta możesz wpuścić i na stronę, i na telefon.
Realny przykład: agent, który umawia rozmowy
Pokażę to na przykładzie, który spotykam najczęściej: agent sprzedażowy na stronie firmy. Odpowiada na pytania potencjalnych klientów, a jego głównym zadaniem jest umówić rozmowę wstępną prosto w kalendarzu — i przy okazji zebrać imię, e-mail, nazwę firmy i problem, który klient chce rozwiązać. Kalendarz podpinasz przez gotową usługę do rezerwacji (cal.com albo Calendly), która pokazuje twoje wolne terminy i synchronizuje się z twoim kalendarzem.
Tu zaczyna się część, której nikt nie przeskoczy: iteracja przez rozmowę. Pierwsza wersja nigdy nie jest gotowa. Sposób pracy jest prosty — rozmawiasz z agentem, notujesz, co jest nie tak, i mówisz mu wprost: oto co mi się podobało, oto co nie zadziałało, popraw to. On idzie, doczytuje i naprawia. W praktyce to zwykle kilka rund, nie godziny mozołu.
W praktyce wyłapiesz rzeczy takie jak te. Głos nie pasuje — brzmi zbyt entuzjastycznie, „zbyt sztucznie” — więc każesz go zmienić. Pierwsza wiadomość powitalna nie odzywa się po kliknięciu, choć w panelu jest ustawiona — więc agent kodujący doczytuje dokumentację i naprawia. Agent źle podaje aktualną godzinę albo myli strefę czasową przy rezerwacji — więc każesz mu trzymać się jednej strefy i potwierdzać pisownię imienia i e-maila, zanim cokolwiek zarezerwuje.
I tu druga ważna umiejętność: myślenie diagnostyczne, gdy narzędzie zwraca zły wynik. Załóżmy, że agent twierdzi, iż wolny jest tylko jeden termin, choć w kalendarzu otwartych jest wiele. Nie panikujesz — zawężasz, który z trzech elementów się zepsuł. Czy to sam kalendarz oddał tylko jeden termin? Czy to narzędzie zbudowało zapytanie błędnie (na przykład pytało o złą strefę czasową)? A może kalendarz oddał wszystkie terminy, ale agent źle odczytał odpowiedź? To trzy różne miejsca i trzy różne naprawy. Opisujesz agentowi kodującemu dokładnie, co zaobserwowałeś, a on — bo potrafi czytać zapisy rozmów i dokumentację — dochodzi, gdzie leży usterka. Pomaga w tym to, że platforma przechowuje pełne zapisy każdej rozmowy: możesz je odsłuchać i przeczytać, co realnie się stało.
Kto za to płaci — zabezpieczenia, których nie pomijaj
To część, którą najłatwiej zlekceważyć, a potem najdrożej zapłacić. Widget na twojej stronie jest podpięty pod twoje konto na platformie głosowej. Za każdą rozmowę płacisz ty. Jeśli ktoś o złych zamiarach będzie gadał z agentem przez całą dobę, koszt spadnie na twoje konto. Dlatego zanim agent ruszy publicznie, ustaw kilka barier.
- Zablokuj domenę. Fragment kodu widgetu da się podejrzeć i skopiować — to banalnie proste. Gdyby ktoś go ukradł i wkleił na swoją stronę, miałby twojego agenta na twój koszt. Dlatego ustal listę dozwolonych adresów (tak zwany allow-list): widget działa tylko na twojej domenie i nigdzie indziej. Skradziony fragment nie ruszy.
- Ogranicz czas i częstotliwość. Ustaw maksymalny czas pojedynczej rozmowy — to twój bezpiecznik budżetowy. Jeśli strona jest publiczna, dołóż limit liczby rozmów w jednostce czasu, żeby ktoś nie wywołał agenta tysiąc razy na sekundę.
- Osadź agenta w prawdziwych dokumentach. Wracamy do klocka „wiedza”: agent oparty na realnych materiałach odpowiada zgodnie z nimi. Pozbawiony źródeł — zmyśla.
- Rozważ kompromis między jakością a opóźnieniem. Premium głos plus najmocniejszy model brzmią najlepiej, ale dają większą latencję — czyli zauważalne opóźnienie między tym, co powiesz, a odpowiedzią agenta. Czasem warto oddać odrobinę jakości za płynność rozmowy. To decyzja, którą podejmujesz pod swój przypadek.
Te zabezpieczenia też ustawisz rozmową z agentem kodującym — „pomóż mi to zablokować, nie chcę, żeby ktoś to nadużył”. Nie musisz znać szczegółów platformy. Musisz wiedzieć, o co poprosić.
Moje przekonanie po tym wszystkim jest proste: budowa sprawnego agenta głosowego przestała być tygodniem sklejania interfejsów, a stała się rozmową z agentem kodującym. Skoro samą konfigurację oddajesz maszynie, swój czas wkładasz tam, gdzie naprawdę robi różnicę — w dopracowanie persony, w solidną wiedzę i w bariery bezpieczeństwa. Wybierz jeden konkretny przypadek — choćby umawianie rozmów wstępnych — opisz cel zwykłym językiem i pozwól, by agent najpierw zadał ci pytania. To dobry pierwszy krok.