Wir stellen Eleven v4 vorLernen Sie Eleven v4 kennen, unser bisher ausdrucksstärkstes Modell.

Zum Inhalt springen

Lernen Sie KUBI kennen, den dialogfähigen Roboter-Barista

Verfasst von
Thor Schaeff
Veröffentlicht
Zuletzt aktualisiert

AnhörenArtikel anhören

KUBI ist ein dialogfähiger Roboter-Barista und Empfangsmitarbeiter bei Second Space, einem Coworking-Space der nächsten Generation, der rund um die Uhr in Kaohsiung, Taiwan, geöffnet ist. Da der Betrieb vollständig automatisiert ist, ist es für KUBI — als ersten Kontaktpunkt für Mitglieder — besonders wichtig, eine persönliche, freundliche Note einzubringen. Deshalb entschied sich Second Space für die Conversational AI von ElevenLabs, um unterhaltsame und einprägsame Interaktionen mit Mitgliedern zu schaffen. Sehen wir KUBI in Aktion.

So funktioniert KUBI

KUBI nutzt eine ausgefeilte multisensorische Architektur, um menschenähnliche Interaktionen zu simulieren. Das System basiert auf einer Microservices-Architektur, in der spezialisierte Dienste parallel arbeiten und über einen Echtzeit-Event-Stream kommunizieren. Diese Dienste übernehmen verschiedene Aufgaben, darunter Gesichts- und Objekterkennung mittels KI-Inferenz in Echtzeit, Bechererkennung und Plausibilitätsprüfungen per Kamera, Belegdruck, sichere Gesichtserkennung für die Zugangskontrolle sowie die präzise Steuerung von Milch- und Bohnenspendern.

Dies sind einige der parallel laufenden Dienste:

  • Umgebungs-Kameradienst: Nutzt KI-Inferenz in Echtzeit (PyTorch in Python), um Gesichter und Objekte zu erkennen.
  • Tablet-Kameradienst: Sehr ähnlich, erkennt jedoch Becher auf dem Tisch und Fremdkörper und führt Plausibilitätsprüfungen durch — etwa ob der KUBI-Roboter tatsächlich einen Becher hält.
  • Belegdruckdienst: Einfach und zuverlässig mit Node + TypeScript. Kommuniziert mit einem RS232-Thermodrucker.
  • Zahlungsdienst: Mit Kotlin JVM für zuverlässige Parallelverarbeitung und Typsicherheit entwickelt. Übernimmt die Meldung staatlicher Belege sowie die Kommunikation mit einem Kreditkartenterminal, einem Gateway für Kryptozahlungen oder Online-Zahlungsanbietern. 
  • Milch- & Bohnenspender: Separate Präzisionsdienste — Arduino. Zeitkritisch, mit geringer Latenz.
  • Gesichtserkennung: Sicherer, stark typisierter Kotlin-Dienst für die Zugangskontrolle.
  • Wasserstrahldienst: Reinigt Milchaufschäumkännchen nach der Nutzung automatisch — Arduino.
  • Und verschiedene weitere Dienste, etwa für die Mobile-App-API, Menüanzeige usw.…

Warum all diese Microservices? Ganz einfach — wir verwalten sie unabhängig, skalieren sie problemlos und nutzen für jede Aufgabe die besten Tools.

Ein zentraler ereignisgesteuerter Kern, der alles zusammenführt

All diese Microservices koordiniert ein zentraler Dienst, scherzhaft "BigBoy" genannt. Im Grunde ist er ein riesiger, nicht blockierender Event-Prozessor:

So funktioniert BigBoy:

  1. Empfängt eingehende Events von allen Diensten.
  2. Prüft Szenarien auf passende Auslöser.
  3. Wählt das beste Szenario aus.
  4. Plant Aktionen für die Ausführung.

internal object WeatherIdleScenario: SingleTaskScenario(scenario){
   
    importance = Importance.Medium
    compilationTimeout = Time.ThreeSeconds
    interruptable = false
    exeutionExpiration = = Time.TenSeconds
   
    override fun isEligible(event: Event, environment: Environment): Maybe<Boolean> = withEnvironment(environment) {
        just {
            (event is IdleEvent 
                    && !triggeredInLast(40.minutes) 
                    && (personPresent() || hasActiveSessions) 
                    && environment.weatherService.lastReportWithin(10.minutes))
        }
    }
}

private val scenario = ScenarioRecipe { event, env, session ->


    invokeOneOf(
       
        phrase {
              sayWith { 
                "Rainy day today, isn't it? That's why I have my little umbrella! Look!".asEnglish
              }.withAutoGift().withAutoMotion()
        }.given { Weather.isRaining() },

        phrase {
            sayWith {
                "Friend, it's so cold outside! So sad for you... because you're a human. I don't really mind!".asEnglish
            }.withAutoMotion()

           sayWith {
                "Wait, that soudned a bit rude.".asEnglish
            }.withAutoMotion()

        }.given { Weather.isCold() },

    )


}

Was sind Szenarien?

Sie können sich Szenarien als nicht blockierende Compiler für Aktions-Events von Robotern vorstellen. Ein Aktions-Event ist normalerweise das am weitesten nachgelagerte Event, also der letzte Schritt in einer Kette, der eine physische Wirkung wie Bewegung oder Sprache auslöst. Ein Begrüßungsszenario könnte beispielsweise Folgendes auslösen:

SayEvent("Hello! Welcome!", wave.gif)
MotionEvent(HelloMotion)

Event-Generierung mit LLM: Einige Aktions-Events werden automatisch von einem LLM generiert. Beispielsweise würde withAutoMotion anhand des gegebenen Kontexts die beste Bewegung aus einer vordefinierten Liste auswählen. withAutoGif hingegen nutzt ein LLM, um das passendste Tag für die jeweilige Phrase zu generieren. Das Tag wird verwendet, um ein GIF von Giphy abzurufen, das später zusammen mit der Phrase auf KUBIs Gesicht angezeigt wird.

Synchronisierung von Aktions-Events: Diese Events durchlaufen anschließend einen Scheduler, der dafür sorgt, dass Sprache, Gesichtsausdrücke und Bewegungen synchron bleiben. So stimmt KUBIs Sprache perfekt mit seinen Gesten überein.

Flexibel und erweiterbar

Das Besondere ist, dass Szenarien sogar auf Aktions-Events reagieren und dynamisch neue Aktions-Events auslösen können. Zum Beispiel:

  • Wenn BigBoy SayEvent("Frohe Weihnachten") erkennt, kann es automatisch festliche Beleuchtung und Spezialeffekte im Raum auslösen.
  • Ein weiteres Beispiel: Wählt ein Nutzer unsere Mobile App, um eine Bestellung aufzugeben, werden alle Nutzerinteraktionen — etwa das Anklicken eines Produkts oder eine Zahlung — in Events umgewandelt, auf die BigBoy ebenfalls in Echtzeit reagieren kann. Scrollt ein Nutzer beispielsweise an „Hafermilch-Latte“ vorbei, könnte KUBI sagen: „Sind Sie sicher, dass Sie keinen Hafermilch-Latte möchten? Er ist wirklich gut!“

BigBoy sieht und weiß buchstäblich alles, was passiert. Ziemlich cool, oder?

DevOps und Observability

Die meisten Dienste werden lokal gehostet und laufen in einem Docker-Container. Im Container verwaltet das Prozesskontrollsystem Supervisor ihren Lebenszyklus. Fehlerprotokolle werden in Sentry gesammelt und an eine eigene Admin-App übermittelt, um Ausnahmen, den Echtzeitstatus von Diensten und Sensoren sowie Latenzberichte zu überwachen. Das Besondere: Die Flutter-App wurde zu 90 % von KI generiert.

Mit ElevenLabs einprägsame Interaktionen schaffen

Second Space hatte eine ganz bestimmte Persönlichkeit für KUBI im Sinn — eine Mischung aus Deadpool, Wheatley aus dem Spiel Portal und etwas Pathfinder aus Apex Legends. Innerhalb von 15 Minuten gelang es dem Team, die Stimme zu gestalten, einschließlich Emotionen und Pausen, die sie noch menschlicher wirken lassen. 

ElevenLabs ermöglicht KUBIs Sprachfähigkeiten über zwei zentrale APIs:

Text to Speech (TTS)

  • Übernimmt rund 90 % unserer Interaktionen.
  • Nutzt vorgefertigte Szenarien für die passende Stimmung.
  • Von LLMs generierte Nachrichten können personalisiert werden — mit hochwertigem Audio und bester Aussprache, ohne Zeitkritik.
  • Bietet unglaublich natürliche mehrsprachige Sprachausgabe auf Englisch, Chinesisch, Spanisch, Japanisch und sogar Lettisch (lettischer Deadpool, jemand?).

Dialogmodus (Echtzeit)

Wird aktiviert, wenn ein Kunde "Hey KUBI!" sagt. Die Conversational AI von ElevenLabs kann dann in 200 ms antworten, sodass die Interaktion wirklich menschlich wirkt.

  • Priorität: Geringe Latenz.
  • Tauscht etwas Audioqualität gegen Reaktionsfähigkeit.
  • Nutzt das neue Echtzeit-Tool language_detection von ElevenLabs und verarbeitet unterschiedliche Sprachen sofort und dynamisch.
  • Die Conversational-AI-Session wird bei Bedarf gestartet, wenn ein Mitglied die Einrichtung betritt oder „Hey, KUBI!“ sagt.

Eigene Conversational Tools

Über eine WebSocket-Verbindung mit der Conversational AI von ElevenLabs kann KUBI beispielsweise Function Calling nutzen: 

  • make_order: Erkennt Bestellungen und sendet Events direkt an BigBoy.
  • make_payment: Benachrichtigt unseren PaymentService sofort, damit das Kreditkartenterminal für die Zahlung aktiviert wird.

Der einfache Wechsel zwischen verschiedenen LLM-Modellen über das Admin-Panel von ElevenLabs hilft Second Space, Verständnis und Genauigkeit zu optimieren. Denn wir haben festgestellt, dass unterschiedliche Modelle die Tool-Intents unterschiedlich gut erkennen. Derzeit nutzen sie Gemini 2.0 Flash als Kernmodell für Conversational AI und ChatGPT 4o für statische Sprachgenerierungen.

KUBI auf weitere Märkte ausweiten

Die ersten GitHub-Commits von Second Space mit Bezug auf ElevenLabs stammen aus dem Januar 2023 — noch bevor das mehrsprachige Modell veröffentlicht wurde. Das Team erkannte früh den Qualitätsanspruch von ElevenLabs und entwickelte mit Zuversicht eine Architektur, die künftige mehrsprachige Unterstützung vorwegnahm. Der Eintritt in Märkte wie Japan und Südkorea ist jetzt so einfach wie das Umlegen eines Schalters — ohne zusätzlichen Entwicklungsaufwand. 

Fazit

Microservices, Echtzeit-Events und die leistungsstarke Sprachtechnologie von ElevenLabs lassen KUBI wirklich lebendig wirken — bereit, die Welt zu erobern und zu begeistern, einen Kaffee und eine schlagfertige Interaktion nach der anderen. 

Verfasst von

A smiling man in a blue polo shirt and black cap standing outdoors in front of a modern building.

Thor Schaeff

Developer Experience

Ähnliche Artikel

Erstellen Sie mit hochwertiger KI-Audio