Poznaj KUBI, konwersacyjnego robota-baristę
- Autor
- Thor Schaeff
- Opublikowano
- Ostatnia aktualizacja
PosłuchajPosłuchaj tego artykułu
KUBI to konwersacyjny robot-barista i recepcjonista w Second Space — nowoczesnej przestrzeni coworkingowej 24/7 w Kaohsiungu na Tajwanie. Ponieważ przestrzeń działa w pełni automatycznie, KUBI jako pierwszy punkt kontaktu z członkami musi nadać obsłudze wyjątkowo przyjazny charakter. Dlatego Second Space wybrało Conversational AI od ElevenLabs, by tworzyć ciekawe i zapadające w pamięć interakcje z członkami. Zobaczmy KUBI w akcji.
Jak działa KUBI
KUBI wykorzystuje zaawansowaną, wielozmysłową architekturę, by symulować ludzkie interakcje. System opiera się na architekturze mikroserwisów, w której wyspecjalizowane usługi działają równolegle i komunikują się przez strumień zdarzeń w czasie rzeczywistym. Obsługują różne zadania, w tym rozpoznawanie twarzy i obiektów dzięki inferencji AI w czasie rzeczywistym, wykrywanie kubków i kontrolę poprawności przez kamery, drukowanie paragonów, bezpieczne rozpoznawanie twarzy do kontroli dostępu oraz precyzyjne sterowanie dozownikami mleka i ziaren.
Oto część usług działających równolegle:
- Usługa kamery otoczenia: Wykorzystuje inferencję AI w czasie rzeczywistym (PyTorch w Pythonie) do wykrywania twarzy i obiektów.
- Usługa kamery tabletu: Działa podobnie, ale wykrywa kubki na stole i obce obiekty oraz sprawdza poprawność — na przykład czy robot KUBI naprawdę trzyma kubek.
- Usługa drukowania paragonów: Prosta i niezawodna dzięki Node + Typescript. Komunikuje się z termiczną drukarką RS232.
- Usługa płatności: Zbudowana na Kotlin JVM, zapewnia dobrą współbieżność i bezpieczeństwo typów. Obsługuje raportowanie paragonów dla urzędów oraz komunikację z terminalem kart płatniczych, bramką płatności kryptowalutowych i dostawcami płatności online.
- Dozowniki mleka i ziaren: Osobne, precyzyjne usługi — Arduino. Niska latencja, działanie zależne od czasu.
- Rozpoznawanie twarzy: Bezpieczna, ściśle typowana usługa w Kotlinie używana do kontroli dostępu.
- Usługa strumienia wody: Automatycznie czyści dzbanki do spieniania mleka po użyciu — Arduino.
- Oraz wiele innych usług, np. dla API aplikacji mobilnej, wyświetlania menu itd.…
Po co te wszystkie mikroserwisy? To proste — zarządzamy nimi niezależnie, łatwo je skalujemy i dobieramy najlepsze narzędzia do każdego zadania.
Centralny rdzeń zdarzeń, który łączy to wszystko
Wszystkie te mikroserwisy koordynuje centralna usługa, żartobliwie nazwana „BigBoy”. To w zasadzie ogromny, nieblokujący procesor zdarzeń:
Tak działa BigBoy:
- Nasłuchuje zdarzeń przychodzących ze wszystkich usług.
- Sprawdza scenariusze pod kątem pasujących wyzwalaczy.
- Wybiera najlepszy scenariusz.
- Planuje odtworzenie działań.
Czym są scenariusze?
Wyobraź sobie scenariusze jako nieblokujące kompilatory zdarzeń działań robota. Zdarzenie działania to zwykle ostatnie zdarzenie w łańcuchu, które wywołuje fizyczny efekt, np. ruch lub mowę. Na przykład scenariusz powitania może wywołać:
MotionEvent(HelloMotion)
Generowanie zdarzeń przez LLM: Niektóre zdarzenia działań są generowane automatycznie przez LLM. Na przykład withAutoMotion wybiera najlepszy ruch z wcześniej zdefiniowanej listy na podstawie danego kontekstu. Z kolei withAutoGif używa LLM do wygenerowania najtrafniejszego tagu dla danej frazy. Tag służy do pobrania GIF-a z Giphy, który później zostanie wyświetlony na twarzy KUBI razem z frazą.
Synchronizacja zdarzeń działań: Zdarzenia trafiają potem do harmonogramu, który synchronizuje mowę, mimikę i ruchy. Dzięki temu wypowiedzi KUBI idealnie pasują do jego gestów.
Elastyczność i możliwość rozbudowy
Co ciekawe, scenariusze mogą nawet nasłuchiwać zdarzeń działań i dynamicznie wywoływać nowe zdarzenia działań. Na przykład:
- Jeśli BigBoy wykryje SayEvent("Merry Christmas"), może automatycznie uruchomić świąteczne światła i efekty specjalne w pomieszczeniu.
- Inny ciekawy przykład: gdy użytkownik wybierze naszą aplikację mobilną, by złożyć zamówienie, wszystkie jego działania — kliknięcie produktu, płatność itd. — są zamieniane na zdarzenia, a BigBoy może reagować w czasie rzeczywistym. Na przykład, jeśli użytkownik przewinie pozycję „Oatmilk Latte”, KUBI może powiedzieć: „Na pewno nie chcesz Oatmilk Latte? Jest naprawdę dobre!”
BigBoy dosłownie widzi i wie wszystko, co się dzieje. Fajne, prawda?
DevOps i obserwowalność
Większość usług jest hostowana lokalnie i działa w kontenerach Docker. W kontenerze ich cyklem życia zarządza system kontroli procesów Supervisor. Logi błędów są zbierane w Sentry i przesyłane do własnej aplikacji administracyjnej, która monitoruje wyjątki, status usług i czujników w czasie rzeczywistym oraz raporty latencji. Co ciekawe, aplikacja Flutter została w 90% wygenerowana przez AI.
Jak ElevenLabs pomaga tworzyć zapadające w pamięć interakcje
Second Space miało bardzo konkretną wizję osobowości KUBI — mieszankę Deadpoola, Wheatleya z gry Portal i odrobiny Pathfindera z Apex Legends. W 15 minut udało im się zaprojektować głos z emocjami i pauzami, które czynią go jeszcze bardziej ludzkim.
ElevenLabs zapewnia KUBI możliwości mowy dzięki dwóm głównym API:
Text-To-Speech (TTS)
- Obsługuje około 90% naszych interakcji.
- Korzysta z gotowych scenariuszy, by stworzyć odpowiedni klimat.
- Wiadomości generowane przez LLM można personalizować, oferując wysoką jakość audio i świetną wymowę, gdy czas reakcji nie jest kluczowy.
- Oferuje niezwykle naturalną wielojęzyczną mowę po angielsku, chińsku, hiszpańsku, japońsku, a nawet łotewsku (łotewski Deadpool, czemu nie?).
Tryb konwersacyjny (w czasie rzeczywistym)
Gdy klient mówi „Hej, KUBI!”, Conversational AI od ElevenLabs może odpowiedzieć w 200 ms, dzięki czemu interakcja wydaje się naprawdę ludzka.
- Priorytet: niska latencja.
- Poświęca część jakości audio na rzecz szybkości reakcji.
- Korzysta z nowego narzędzia ElevenLabs language_detection działającego w czasie rzeczywistym, by natychmiast i dynamicznie obsługiwać różne języki.
- Sesja Conversational AI uruchamia się na żądanie, gdy członek wchodzi do obiektu lub mówi „Hej, KUBI!”.
Niestandardowe narzędzia konwersacyjne
Dzięki Conversational AI od ElevenLabs przez połączenie WebSocket KUBI może korzystać z function calling, na przykład:
- make_order: Rozpoznaje zamówienia i wysyła zdarzenia bezpośrednio do BigBoy.
- make_payment: Natychmiast powiadamia naszą usługę płatności, aby uruchomić terminal kart płatniczych.
Łatwe przełączanie między modelami LLM w panelu administracyjnym ElevenLabs pomaga Second Space optymalizować rozumienie i dokładność, ponieważ zauważyliśmy, że różne modele lepiej rozpoznają intencje narzędzi niż inne. Obecnie używają Gemini 2.0 Flash jako głównego modelu dla Conversational AI oraz ChatGPT 4o do statycznego generowania mowy.
Ekspansja KUBI na kolejne rynki
Pierwsze commity Second Space na GitHubie z odniesieniem do ElevenLabs pochodzą ze stycznia 2023 roku — jeszcze sprzed premiery modelu wielojęzycznego. Wcześnie dostrzegli dbałość ElevenLabs o jakość i pewnie stworzyli architekturę gotową na przyszłe wsparcie wielu języków. Teraz wejście na rynki takie jak Japonia i Korea Południowa jest tak proste jak przestawienie przełącznika — bez dodatkowej pracy deweloperskiej!
Podsumowanie
Mikroserwisy, zdarzenia w czasie rzeczywistym i zaawansowana technologia głosowa ElevenLabs sprawiają, że KUBI wydaje się naprawdę żywy i gotowy podbić oraz zachwycić świat — jedną kawą i błyskotliwą interakcją na raz.




