Pular para o conteúdo

Conheça KUBI, o Robô Barista Conversacional

KUBI é um barista conversacional que funciona com o Conversational AI da ElevenLabs. Veja como isso acontece.

A robotic arm holding a can of Red Bull energy drink against a blue background.

KUBI é um robô barista e recepcionista conversacional na Second Space, um espaço de coworking 24/7 de nova geração em Kaohsiung, Taiwan. Como toda a operação do espaço é automatizada, é fundamental que o KUBI — sendo o primeiro ponto de contato com os membros — traga um toque único e acolhedor. Por isso, a Second Space escolheu o Conversational AI da ElevenLabs para criar interações divertidas e marcantes com os membros. Vamos ver o KUBI em ação.

Como o KUBI funciona

O KUBI utiliza uma arquitetura multissensorial avançada para simular interações semelhantes às humanas. O sistema é baseado em uma arquitetura de microsserviços, onde serviços especializados operam ao mesmo tempo e se comunicam por meio de um fluxo de eventos em tempo real. Esses serviços cuidam de tarefas como reconhecimento facial e de objetos usando inferência de IA em tempo real, detecção de copos e verificações de integridade por câmeras, impressão de recibos, reconhecimento facial seguro para controle de acesso e controle preciso dos dispensers de leite e grãos.

Esses são alguns dos serviços que rodam simultaneamente:

  • Ambiente Serviço de Câmera: Usa inferência de IA em tempo real (PyTorch em Python) para identificar rostos e objetos.
  • Tablet Serviço de Câmera: Muito parecido, mas detecta copos na mesa, objetos estranhos e faz verificações de integridade — por exemplo, se o robô KUBI está realmente segurando um copo.
  • Serviço de Impressão de Recibos: Simples e confiável com Node + Typescript. Se comunica com uma impressora térmica RS232.
  • Serviço de Pagamento: Desenvolvido com Kotlin JVM para garantir concorrência e segurança de tipos. Gerencia relatórios de recibos para o governo e comunicação com terminais de cartão de crédito, gateway de pagamentos em cripto ou provedores de pagamentos online.
  • Dispensers de Leite e Grãos: Serviços de precisão separados — Arduino. Sensíveis ao tempo, baixa latência.
  • Reconhecimento Facial: Serviço seguro e fortemente tipado em Kotlin, usado para controle de acesso.
  • Serviço de Jato d’Água: Limpa automaticamente as jarras de vapor de leite após o uso — Arduino.
  • E vários outros serviços, como para API do app mobile, exibição de menu, etc…

Por que tantos microsserviços? Simples — conseguimos gerenciá-los de forma independente, escalar facilmente e usar as melhores ferramentas para cada tarefa.

Um núcleo central orientado a eventos para integrar tudo

Coordenando todos esses microsserviços está um serviço central, chamado de forma divertida de "BigBoy". Ele é basicamente um grande processador de eventos não bloqueante:

Veja como o BigBoy funciona:

  1. Escuta eventos recebidos de todos os serviços.
  2. Verifica cenários para acionar gatilhos elegíveis.
  3. Seleciona o melhor cenário.
  4. Agenda ações para execução.
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

O que são cenários?

Pense nos cenários como compiladores não bloqueantes para eventos de ação do robô. Um evento de ação geralmente é o evento mais ao final da cadeia, resultando em um efeito físico, como movimento ou fala. Por exemplo, um cenário de saudação pode acionar:

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

Geração de eventos com LLM: Alguns eventos de ação são gerados automaticamente por um LLM, por exemplo, withAutoMotion escolhe o melhor movimento de uma lista pré-definida com base no contexto. Já o withAutoGif usa um LLM para gerar a tag mais adequada para a frase. Essa tag é usada para buscar um GIF no Giphy, que depois aparece no rosto do KUBI junto com a frase.

Sincronização de eventos de ação: Esses eventos passam por um agendador que garante que fala, expressões faciais e movimentos fiquem sincronizados. Assim, a fala do KUBI combina perfeitamente com seus gestos.

Flexível e expansível

O legal é que os cenários podem até escutar eventos de ação e acionar novos eventos de ação de forma dinâmica. Por exemplo:

  • Se o BigBoy detectar SayEvent("Feliz Natal"), ele pode acionar automaticamente luzes festivas e efeitos especiais no ambiente.
  • Outro exemplo interessante: se o usuário escolher nosso app mobile para fazer um pedido, todas as interações (clicar em um produto, fazer pagamento, etc.) viram eventos e o BigBoy pode reagir em tempo real. Por exemplo, se o usuário passar pelo “Latte com leite de aveia”, o KUBI pode dizer: “Tem certeza que não quer esse Latte com leite de aveia? É muito bom!”

O BigBoy literalmente vê e sabe tudo o que está acontecendo. Legal, né?

DevOps e Observabilidade

A maioria dos serviços roda localmente e está em containers docker. Dentro do container, o ciclo de vida é gerenciado pelo Supervisor. Logs de erro são coletados no Sentry e enviados para um app administrativo personalizado, que monitora exceções, status em tempo real dos serviços e sensores, além de relatórios de latência. O mais interessante é que 90% do app Flutter foi gerado por IA.

Usando ElevenLabs para criar interações marcantes

A Second Space queria uma personalidade bem específica para o KUBI — uma mistura de Deadpool, Wheatley do jogo Portal e um pouco do Pathfinder de Apex Legends. Eles conseguiram criar a voz em 15 minutos, com emoções e pausas que deixam a voz ainda mais humana.

A ElevenLabs potencializa as falas do KUBI com duas APIs principais:

Text-To-Speech (TTS)

  • Responsável por cerca de 90% das nossas interações.
  • Usa cenários pré-definidos para criar o clima ideal.
  • Mensagens geradas por LLMs podem ser personalizadas, com áudio de alta qualidade, melhor pronúncia e sem necessidade de resposta imediata.
  • Oferece fala multilíngue incrivelmente natural em inglês, chinês, espanhol, japonês e até letão (Deadpool letão, alguém?).

Modo Conversacional (Tempo Real)

Ativado quando um cliente diz "Hey KUBI!", o Conversational AI da ElevenLabs responde em 200ms, tornando a interação realmente natural.

  • Prioridade: Baixa latência.
  • Troca um pouco da qualidade do áudio por mais rapidez na resposta.
  • Usa a nova ferramenta de language_detection em tempo real da ElevenLabs, lidando com diferentes idiomas instantaneamente.
  • A sessão de Conversational AI começa sob demanda quando um membro entra no espaço ou diz “Hey, KUBI!”

Ferramentas conversacionais personalizadas

Usando o Conversational AI da ElevenLabs via conexão WebSocket, o KUBI pode usar function calling, por exemplo:

  • make_order: Reconhece pedidos e envia eventos direto para o BigBoy.
  • make_payment: Notifica imediatamente nosso PaymentService para acionar a máquina de cartão.

Alternar entre diferentes modelos LLM facilmente pelo painel administrativo da ElevenLabs ajuda a Second Space a otimizar o entendimento e a precisão, já que percebemos que modelos diferentes reconhecem as intents das ferramentas melhor que outros. Atualmente, eles usam o Gemini 2.0 Flash como modelo principal para Conversational AI e o ChatGPT 4o para geração de falas estáticas.

Expandindo o KUBI para novos mercados

Os primeiros commits da Second Space no GitHub mencionando a ElevenLabs são de janeiro de 2023 — antes mesmo do lançamento do modelo multilíngue. Eles perceberam cedo o compromisso da ElevenLabs com a qualidade e criaram uma arquitetura já pensando no suporte a vários idiomas. Agora, entrar em mercados como Japão e Coreia do Sul é tão simples quanto apertar um botão — sem trabalho extra de desenvolvimento!

Conclusão

Microsserviços, eventos em tempo real e a tecnologia de voz da ElevenLabs fazem o KUBI parecer realmente vivo e pronto para encantar o mundo, um café e uma conversa divertida de cada vez.

Explore artigos da equipe ElevenLabs

ElevenLabs

Crie com o áudio IA da mais alta qualidade