Découvrez KUBI, le robot barista conversationnel

KUBI est un barista conversationnel qui fonctionne avec l'IA conversationnelle d'ElevenLabs. Voici comment.

KUBI est un barista et réceptionniste conversationnel chez Second Space, un espace de co-working nouvelle génération 24/7 à Kaohsiung, Taïwan. Comme le fonctionnement de l'espace est entièrement automatisé, il est très important pour KUBI — en tant que premier point de contact avec les membres — d'ajouter une touche amicale unique. C'est pourquoi Second Space a choisi l'IA conversationnelle d'ElevenLabs pour créer des interactions amusantes et mémorables avec les membres. Voyons KUBI en action.

Comment fonctionne KUBI

KUBI utilise une architecture multisensorielle sophistiquée pour simuler une interaction humaine. Le système repose sur une architecture de microservices, où des services spécialisés fonctionnent simultanément et communiquent via un flux d'événements en temps réel. Ces services gèrent diverses tâches, y compris la reconnaissance faciale et d'objets grâce à l'inférence IA en temps réel, la détection de tasses et les vérifications de sécurité via des caméras, l'impression de reçus, la reconnaissance faciale sécurisée pour le contrôle d'accès, et le contrôle précis des distributeurs de lait et de grains.

Comment fonctionne KUBI

  • Environnement Service de caméra: Utilise l'inférence IA en temps réel (PyTorch en Python) pour repérer les visages et les objets.
  • Tablette Service de caméra: Très similaire, mais détecte les tasses sur la table, les objets étrangers et vérifie la sécurité - par exemple, si le robot KUBI tient réellement une tasse.
  • Service d'impression de reçus: Simple et fiable avec Node + Typescript. Communique avec une imprimante thermique RS232.
  • Service de paiement: Construit avec Kotlin JVM pour une bonne concurrence et sécurité de type. Gère la déclaration des reçus au gouvernement et les communications avec un terminal de carte de crédit, une passerelle de paiements crypto ou des fournisseurs de paiements en ligne.
  • Distributeurs de lait et de grains: Services de précision séparés — Arduino. Sensible au temps, faible latence.
  • Reconnaissance faciale: Service Kotlin sécurisé et fortement typé, utilisé pour le contrôle d'accès.
  • Service de jet d'eau: Nettoie automatiquement les pichets de vapeur de lait après utilisation — Arduino.
  • Et divers autres services, par exemple pour l'API de l'application mobile, l'affichage du menu, etc.

Voici quelques-uns des services qui fonctionnent simultanément :

Un noyau central piloté par événements pour tout relier

Pourquoi tous ces microservices ? Facile — nous les gérons indépendamment, les faisons évoluer facilement, et utilisons les meilleurs outils pour chaque tâche."BigBoy". C'est essentiellement un processeur d'événements géant et non bloquant :

Un noyau central basé sur les événements pour tout relier

  1. Écoute les événements entrants de tous les services.
  2. Vérifie les scénarios pour les déclencheurs éligibles.
  3. Sélectionne le meilleur scénario.
  4. Planifie les actions pour la lecture.
1
2internal object WeatherIdleScenario: SingleTaskScenario(scenario){
3
4 importance = Importance.Medium
5 compilationTimeout = Time.ThreeSeconds
6 interruptable = false
7 exeutionExpiration = = Time.TenSeconds
8
9 override fun isEligible(event: Event, environment: Environment): Maybe<Boolean> = withEnvironment(environment) {
10 just {
11 (event is IdleEvent
12 && !triggeredInLast(40.minutes)
13 && (personPresent() || hasActiveSessions)
14 && environment.weatherService.lastReportWithin(10.minutes))
15 }
16 }
17}
18
19private val scenario = ScenarioRecipe { event, env, session ->
20
21
22 invokeOneOf(
23
24 phrase {
25 sayWith {
26 "Rainy day today, isn't it? That's why I have my little umbrella! Look!".asEnglish
27 }.withAutoGift().withAutoMotion()
28 }.given { Weather.isRaining() },
29
30 phrase {
31 sayWith {
32 "Friend, it's so cold outside! So sad for you... because you're a human. I don't really mind!".asEnglish
33 }.withAutoMotion()
34
35 sayWith {
36 "Wait, that soudned a bit rude.".asEnglish
37 }.withAutoMotion()
38
39 }.given { Weather.isCold() },
40
41 )
42
43
44}
45
46

Qu'est-ce que les scénarios ?

Pensez aux scénarios comme à des compilateurs non bloquants pour les événements d'action du robot. Un événement d'action est généralement l'événement le plus en aval, c'est-à-dire la dernière étape d'une chaîne, entraînant un effet physique, tel qu'un mouvement ou une parole. Par exemple, un scénario de salutation pourrait déclencher :

SayEvent("Bonjour ! Bienvenue !", wave.gif)
MotionEvent(HelloMotion)

Pensez aux scénarios comme à des compilateurs non-bloquants pour les événements d'action

Synchronisation des événements d'action : Ces événements passent ensuite par un planificateur qui garantit que la parole, les expressions faciales et les mouvements restent synchronisés. La synchronisation garantit que la parole de KUBI correspond parfaitement à ses gestes.

Génération d'événements avec LLM :

Synchronisation des événements d'action : Ces événements passent ensuite par un planificateur qui assure la synchronisation de la parole, des expressions faciales et des mouvements. La synchronisation garantit que la parole de KUBI correspond parfaitement à ses gestes. et déclencher de nouveaux événements d'action dynamiquement. Par exemple :

  • Si BigBoy détecte
  • Un autre exemple cool est - si l'utilisateur choisit notre application mobile pour passer une commande, toutes les interactions utilisateur (cliquer sur un produit, effectuer un paiement, etc.) sont converties en événements et BigBoy peut également réagir en temps réel. Par exemple, si l'utilisateur fait défiler "Latte au lait d'avoine", KUBI pourrait dire "Êtes-vous sûr de ne pas vouloir ce Latte au lait d'avoine ? Il est vraiment bon !"

Le truc cool, c'est que les scénarios peuvent même écouter les

DevOps et Observabilité

BigBoy voit littéralement et sait tout ce qui se passe. Plutôt cool, non ?

La plupart des services sont hébergés localement et sont encapsulés dans un conteneur Docker. Dans le conteneur, leur cycle de vie est géré par le système de contrôle de processus Supervisor. Les journaux d'erreurs sont collectés dans Sentry et sont intégrés dans une application d'administration personnalisée pour surveiller toute exception, le statut en temps réel des services et des capteurs ainsi que les rapports de latence. Le truc cool, c'est que l'application Flutter a été générée à 90 % par l'IA.

Utiliser ElevenLabs pour créer des interactions mémorablesconcevoir la voix en 15 minutes, complète avec des émotions et des pauses qui rendent la voix encore plus humaine.

Second Space avait une personnalité très spécifique en tête pour KUBI - un mélange de Deadpool, Wheatley du jeu Portal et un peu de Pathfinder d'Apex Legends. Ils ont réussi à

ElevenLabs alimente les capacités vocales de KUBI grâce à deux API principales :

  • Gère environ 90 % de nos interactions.
  • Utilise des scénarios préconçus pour l'ambiance parfaite.
  • Les messages générés par les LLM peuvent être personnalisés, avec un audio de haute qualité, la meilleure prononciation, pas critiques en termes de temps.
  • Offre une parole multilingue incroyablement naturelle en anglais, chinois, espagnol, japonais et même letton (Deadpool letton, quelqu'un ?).

Activé lorsqu'un client dit,

Mode Conversationnel (Temps Réel)"Hey KUBI!", l'IA conversationnelle d'ElevenLabs est capable de répondre en 200ms, rendant l'interaction vraiment humaine.

  • Priorité : Faible latence.
  • Échange une partie de la qualité audio pour la réactivité.
  • Utilise le nouvel outil de language_detection en temps réel d'ElevenLabs, gérant dynamiquement différentes langues instantanément.
  • Session d'IA conversationnelle démarrée à la demande lorsqu'un membre entre dans l'établissement ou dit « Hey, KUBI ! »

En utilisant l'IA conversationnelle d'ElevenLabs via une connexion WebSocket, KUBI peut exploiter l'appel de fonction, par exemple :

Outils Conversationnels Personnalisés

  • make_order: Reconnaît les commandes, envoie des événements directement à BigBoy.
  • make_payment: Notifie immédiatement notre PaymentService pour déclencher la machine à carte de crédit pour les paiements.

Étendre KUBI à d'autres marchésintentions de l'outil que d'autres. Ils utilisent actuellement Gemini 2.0 Flash comme modèle principal pour l'IA conversationnelle et ChatGPT 4o pour les générations de discours statiques.

Passer facilement d'un modèle LLM à un autre via le panneau d'administration d'ElevenLabs aide Second Space à optimiser la compréhension et la précision, car nous avons remarqué que différents modèles reconnaissent mieux les

Étendre KUBI à d'autres marchés

Les premiers commits GitHub de Second Space faisant référence à ElevenLabs remontent à janvier 2023 - même avant la sortie du modèle multilingue. Ils ont reconnu dès le début l'engagement d'ElevenLabs envers la qualité et ont construit une architecture anticipant le support multilingue futur. Maintenant, entrer sur des marchés comme le Japon et la Corée du Sud est aussi simple que d'appuyer sur un interrupteur — aucun travail de développement supplémentaire requis !

Conclusion

En voir plus

ElevenLabs

Créez avec l'audio AI de la plus haute qualité.

Se lancer gratuitement

Vous avez déjà un compte ? Se connecter