
Revolut selects ElevenLabs Agents to bolster customer support
Reducing time to ticket resolution by 8x with multilingual conversational agents.
KUBI é um barista conversacional que funciona com o Conversational AI da ElevenLabs. Veja como isso acontece.
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.
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:
Por que tantos microsserviços? Simples — conseguimos gerenciá-los de forma independente, escalar facilmente e usar as melhores ferramentas para cada tarefa.
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:
| 1 | |
| 2 | internal 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 | |
| 19 | private 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:
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.
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:
O BigBoy literalmente vê e sabe tudo o que está acontecendo. Legal, né?
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.
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:
Ativado quando um cliente diz "Hey KUBI!", o Conversational AI da ElevenLabs responde em 200ms, tornando a interação realmente natural.
Usando o Conversational AI da ElevenLabs via conexão WebSocket, o KUBI pode usar function calling, por exemplo:
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.
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!
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.

Reducing time to ticket resolution by 8x with multilingual conversational agents.
.webp&w=3840&q=95)
Yampa leverages ElevenLabs Flash V2.5 to scale human-like outbound voice agents with ultra-low latency and massive concurrency.