Möt KUBI, den konverserande robotbaristan

KUBI är en konverserande barista som arbetar med ElevenLabs' Conversational AI. Så här fungerar det.

KUBI är en konverserande barista och receptionist på Second Space, ett nästa generations 24/7 co-working space i Kaohsiung, Taiwan. Eftersom arbetsplatsen är helt automatiserad är det viktigt för KUBI — som första kontaktpunkt med medlemmarna — att tillföra en unik och vänlig känsla. Därför valde Second Space ElevenLabs’

Hur KUBI fungerar

KUBI använder en sofistikerad multisensorisk arkitektur för att simulera mänsklig interaktion. Systemet bygger på en mikrotjänstarkitektur där specialiserade tjänster arbetar samtidigt och kommunicerar via en realtidsströmmad händelse. Dessa tjänster hanterar olika uppgifter, inklusive ansikts- och objektigenkänning med realtids-AI, koppdetektering och säkerhetskontroller via kameror, kvittoutskrift, säker ansiktsigenkänning för åtkomstkontroll och precis kontroll av mjölk- och bönbehållare.

Hur KUBI fungerar

  • Miljö Kameratjänst: Använder realtids-AI (PyTorch i Python) för att upptäcka ansikten och objekt.
  • Surfplatta Kameratjänst: Liknande, men upptäcker koppar på bordet och främmande objekt och verifierar säkerhet - till exempel om KUBI faktiskt håller en kopp.
  • Kvittoutskriftstjänst: Enkel och pålitlig med Node + Typescript. Kommunicerar med en RS232 termisk skrivare.
  • Betalningstjänst: Byggd med Kotlin JVM för solid samtidighet och typ-säkerhet. Hanterar statlig kvittorapportering och kommunikation med kreditkortsterminal, kryptobetalningsgateway eller onlinebetalningsleverantörer.
  • Mjölk- och bönbehållare: Separata precisions-tjänster — Arduino. Tidskänslig, låg latens.
  • Ansiktsigenkänning: Säker och starkt typad Kotlin-tjänst, används för åtkomstkontroll.
  • Vattenstråltjänst: Rengör automatiskt mjölkskummarkannor efter användning — Arduino.
  • Och olika andra tjänster, t.ex. för mobilapp-API, menydisplay etc.

Här är några av de tjänster som körs samtidigt:

En central händelsedriven kärna för att binda ihop allt

Varför alla dessa mikrotjänster? Enkelt — vi hanterar dem oberoende, skalar enkelt och använder de bästa verktygen för varje uppgift."BigBoy". Det är i grunden en gigantisk, icke-blockerande händelseprocessor:

En central händelsedriven kärna för att knyta ihop allt

  1. Lyssnar på inkommande händelser från alla tjänster.
  2. Kontrollerar scenarier för lämpliga triggers.
  3. Väljer det bästa scenariot.
  4. Schemalägger åtgärder för uppspelning.
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

Vad är scenarier?

Tänk på scenarier som icke-blockerande kompilatorer för robot åtgärdshändelser. En åtgärdshändelse är vanligtvis den mest nedströms händelsen, det sista steget i en kedja, som resulterar i en fysisk effekt, som rörelse eller tal. Till exempel kan ett hälsningsscenario utlösa:

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

Tänk på scenarier som icke-blockerande kompilatorer för robot åtgärdshändelser

Synkronisering av åtgärdshändelser: Dessa händelser flödar sedan genom en schemaläggare som säkerställer att tal, ansiktsuttryck och rörelser förblir synkroniserade. Synkronisering säkerställer att KUBIs tal matchar dess gester perfekt.

Händelsegenerering med LLM:

Synkronisering av åtgärdshändelser: Dessa händelser flödar sedan genom en schemaläggare som säkerställer att tal, ansiktsuttryck och rörelser förblir synkroniserade. Synkronisering säkerställer att KUBIs tal matchar dess gester perfekt. och utlösa nya åtgärdshändelser dynamiskt. Till exempel:

  • Om BigBoy upptäcker
  • Ett annat coolt exempel är - om användaren väljer vår mobilapp för att göra en beställning, konverteras alla användarinteraktioner (klicka på en produkt, göra en betalning etc.) till händelser och BigBoy kan också reagera i realtid. Till exempel, om användaren bläddrar förbi “Havremjölkslatte”, kan KUBI säga “Är du säker på att du inte vill ha den där Havremjölkslatten? Den är riktigt god!”

Det coola är att scenarier till och med kan lyssna på

DevOps och Observability

BigBoy ser och vet bokstavligen allt som händer. Ganska coolt, eller hur?

De flesta av tjänsterna är värd lokalt och är inneslutna i en docker-container. I containern hanteras deras livscykel av Supervisor processkontrollsystem. Felsökningsloggar samlas in i Sentry och matas in i en anpassad adminapp för att övervaka eventuella undantag, realtidsstatus för tjänster och sensorer samt latensrapporteringar. Det coola är att Flutter-appen var 90% genererad av AI.

Använda ElevenLabs för att skapa minnesvärda interaktionerdesigna rösten på 15 minuter komplett med känslor och pauser som gör rösten ännu mer mänsklig.

Second Space hade en mycket specifik personlighet i åtanke för KUBI - en blandning av Deadpool, Wheatley från Portal-spelet och lite Pathfinder från Apex Legends. De lyckades

ElevenLabs driver KUBIs talförmåga genom två kärn-API:er:

  • Hanterar ~90% av våra interaktioner.
  • Använder fördesignade scenarier för den perfekta känslan.
  • Meddelanden genererade av LLMs kan personaliseras, med högkvalitativt ljud, bästa uttal, inte tidskritiska.
  • Erbjuder otroligt naturligt flerspråkigt tal på engelska, kinesiska, spanska, japanska och till och med lettiska (lettiska Deadpool, någon?).

Aktiveras när en kund säger,

Konversationsläge (Realtid)"Hej KUBI!", Conversational AI från ElevenLabs kan svara på 200ms, vilket gör att interaktionen känns riktigt mänsklig.

  • Prioritet: Låg latens.
  • Byter lite ljudkvalitet för responsivitet.
  • Använder ElevenLabs' nya realtids language_detection verktyg, hanterar dynamiskt olika språk direkt.
  • Konversations-AI-session startas på begäran när en medlem går in i anläggningen eller säger “Hej, KUBI!”

Genom att använda ElevenLabs’ Conversational AI via WebSocket-anslutning kan KUBI utnyttja funktionsanrop, till exempel:

Anpassade konversationsverktyg

  • make_order: Känner igen beställningar, skickar händelser direkt till BigBoy.
  • make_payment: Meddelar omedelbart vår PaymentService för att aktivera kortläsaren för betalningar.

Expandera KUBI till fler marknaderintentioner bättre än andra. De använder för närvarande Gemini 2.0 Flash som sin kärnmodell för Conversational AI och ChatGPT 4o för de statiska talgenereringarna.

Att enkelt växla mellan olika LLM-modeller genom ElevenLabs' adminpanel hjälper Second Space att optimera förståelse och noggrannhet, eftersom vi märkte att olika modeller känner igen verktygets

Expandera KUBI till fler marknader

Second Space’s första GitHub-commits som refererar till ElevenLabs går tillbaka till januari 2023 - redan innan flerspråksmodellen släpptes. De insåg ElevenLabs’ engagemang för kvalitet tidigt och byggde självsäkert en arkitektur som förutsåg framtida flerspråksstöd. Nu är det lika enkelt som att trycka på en knapp att gå in på marknader som Japan och Sydkorea — inget extra utvecklingsarbete krävs!

Slutsats

Utforska mer

ElevenLabs

Skapa ljud och röster som imponerar med de bästa AI-verktygen

Kom igång gratis

Har du redan ett konto? Logga in