cerebro-vip INEMA.CLUB
inícioINEMA.VOZ

Tópico sobre LiveKit Agents para voz com IA — arquitetura, sessões,…

INEMA.VOZ · 2025-10-12 · ~11 min · ver no Telegram ↗

INEMA

docs.livekit.io/agents/start/voice-ai ↗

github.com ↗

github.com ↗

(1:1).


PARTE 3 — Extras úteis

Função Onde fazer
Criar vários agentes Painel LiveKit Cloud ou via API
Ver logs e estatísticas https://cloud.livekit.io
Controlar tokens dinamicamente Seu backend (Node/Python)
Interface personalizada SDK React, Flutter, ou WebRTC puro

Uma das partes mais interessantes (e poderosas) do LiveKit Agents: entender como direcionar automaticamente cada pessoa para o agente certo e como criar sua própria interface sem depender do Playground oficial.

Vamos dividir em duas partes práticas:


PARTE 1 — Direcionar cada pessoa para um agente específico

O Playground (https://agents-playground.livekit.io) é apenas uma interface de teste. O que realmente decide qual agente vai responder é o token de acesso (JWT) — e ele é gerado dinamicamente no backend.

1. Cada agente tem um nome interno

Quando você cria agentes no painel do LiveKit, cada um tem um agent_name, por exemplo:

  • agente_vendas
  • agente_suporte
  • agente_educacional

2. Gere tokens diferentes para cada agente

Para conectar uma pessoa a um agente específico, você precisa gerar tokens distintos, informando o agent_name correto. Exemplo em Node.js ou Python (simplificado):

Exemplo (Node.js):

```import { AccessToken } from "livekit-server-sdk";

const token = new AccessToken("API_KEY", "API_SECRET", { identity: "cliente_123", }); token.addGrant({ roomJoin: true, agent: "agente_vendas", // <- define o agente que será usado }); console.log(token.toJwt());```

Exemplo (Python):

```from livekit import AccessToken

token = AccessToken(api_key="API_KEY", api_secret="API_SECRET", identity="cliente_123") token.add_grant({"room_join": True, "agent": "agente_suporte"}) print(token.to_jwt())```

Depois disso, basta direcionar o usuário para:

https://agents-playground.livekit.io/?token=SEU_TOKEN_AQUI

E o Playground abrirá automaticamente o agente correto, sem precisar selecionar manualmente.


3. Direcionamento dinâmico (roteador inteligente)

Você pode usar uma lógica no seu backend para escolher o agente certo, por exemplo:

if cliente.tipo == "empresarial": agent_name = "agente_vendas" elif cliente.solicitacao == "suporte": agent_name = "agente_suporte" else: agent_name = "agente_padrao"

E gerar o token já com o agente correspondente. Assim, cada pessoa acessa um link e é redirecionada para o agente certo automaticamente.


PARTE 2 — Criar sua própria interface (sem usar o Playground)

Você pode criar sua própria interface de voz, web ou app móvel conectada ao LiveKit. O Playground é só uma interface React — o backend é o mesmo.

Opções:

1. Usar o SDK oficial do LiveKit

O LiveKit tem SDKs prontos para:

  • JavaScript / React
  • Flutter
  • iOS (Swift)
  • Android (Kotlin)

Você cria uma interface customizada e usa apenas:

```import { Room, RoomEvent } from 'livekit-client';

const room = await Room.connect('seu-servidor.livekit.io ↗', token);```

E pronto — sua página React pode exibir:

  • um botão “Falar com o agente”
  • mostrar áudio entrando e saindo
  • controlar o microfone, status e respostas do agente

2. Usar o SDK de Voz (Voice Agent)

Para agentes de voz, o fluxo é:

  1. Capturar o microfone (WebRTC)
  2. Enviar para o servidor LiveKit
  3. Receber áudio de volta do agente (voz da IA)

Exemplo com @livekit/components-react:

```import { LiveKitRoom } from '@livekit/components-react';

seu-servidor.livekit.io ↗" connectOptions={{ autoSubscribe: true }} />```

Isso substitui completamente o Playground. Você pode adicionar seu próprio design, botões e lógica de atendimento.


3. Usar API REST + Front-end

Se quiser ainda mais controle, pode criar:

  • uma API que gera tokens (/gerar-token?agent=support)
  • uma página HTML/JS que consome esse token e conecta no LiveKit via WebRTC

Assim você cria um atendimento “de marca”, com layout próprio (ex: do seu site ou aplicativo).


4. Exemplo visual do fluxo

Usuário -> Seu site -> Backend (gera token com agente certo) -> LiveKit (Room) -> Agente IA

Cada usuário tem:

  • um token único,
  • um agente específico,
  • uma conversa isolada

ponto central do funcionamento dos agentes no LiveKit Playground. Vamos detalhar passo a passo como o sistema identifica qual agente vai te atender ao abrir o Playground (ou quando alguém acessa uma URL pública do agente).


1. O LiveKit não “escolhe” o agente — ele segue o token de acesso

Quando você entra no LiveKit Playground, o sistema não “adivinha” qual agente usar. Ele apenas lê o token de acesso que foi gerado pelo backend ou pelo painel do agente.

Esse token é um pequeno código JWT (JSON Web Token) que contém:

  • o nome do agente que deve ser carregado,
  • o Room ID (a sala onde a conversa vai ocorrer),
  • e as permissões do usuário (ex.: pode publicar áudio, receber áudio, etc.).

Então, o LiveKit Playground apenas:

  1. Recebe o token,
  2. Valida com o servidor LiveKit,
  3. E inicia a sessão já conectada ao agente especificado no token.

2. O agente é definido no Agent Manifest (ou Agent Config)

No painel do LiveKit Cloud (ou no seu repositório self-hosted), cada agente é definido por um manifesto JSON, que diz:

  • o nome do agente (ex.: "assistant": "neimaldaner-agent"),
  • os módulos que ele usa (STT, TTS, LLM, ferramentas, prompts de sistema, etc.),
  • e as credenciais de execução (por exemplo, a chave OpenAI ou Claude usada).

Exemplo simples de agent.json:

{ "name": "assistente-vozes", "language": "pt-BR", "llm": "openai:gpt-4o-mini", "stt": "deepgram:nova-2", "tts": "cartesia:pt-br-female", "tools": ["time", "weather"], "system_prompt": "Você é um assistente educado que responde em português." }

Quando você clica em Playground, o sistema carrega exatamente esse manifesto — e conecta a sessão a esse agente.


3. A conexão do usuário segue este fluxo

  1. Backend cria o agente → publica o agent.json.
  2. Token é gerado com agent_name="assistente-vozes".
  3. O usuário acessa a URL do playground (ex.: https://cloud.livekit.io/projects/p_69dai1kwmwz/playground).
  4. O Playground lê o token → encontra o agente "assistente-vozes".
  5. O LiveKit inicia a pipeline (STT → LLM → TTS) daquele agente.
  6. A conversa começa — o agente certo te responde.

4. Se houver vários agentes disponíveis

Você pode ter diversos agentes registrados (ex.: suporte, vendas, clima, tutoria). Cada um terá:

  • um manifesto próprio (agent1.json, agent2.json),
  • e seu próprio endpoint ou Playground link.

Então:

  • Se o token for do agente de clima, ele conecta àquele.
  • Se for do agente de suporte, ele abre outro.

Nada impede, inclusive, de ter um roteador de agentes no backend:

if topic == "vendas": agent = "sales-bot" elif topic == "técnico": agent = "tech-bot" else: agent = "default-assistant"

Esse roteador pode gerar o token correto dinamicamente.


5. No Playground, como você vê qual agente está ativo

Quando você abre o link do Playground:

  • no canto superior esquerdo (ou no título da aba), aparece o nome do agente ativo;
  • no painel lateral, você pode ver as configurações de voz, modelo e ferramentas que estão sendo usadas — todas vindas do agent.json.

6. Resumo final

Etapa Função Onde ocorre
Geração do agente Define o comportamento e ferramentas agent.json
Geração do token Diz qual agente será usado Backend ou painel
Conexão Playground Usa o token para identificar o agente LiveKit Cloud
Sessão Cria sala isolada 1:1 Servidor LiveKit
Conversa Executa STT → LLM → TTS Pipeline do agente

Muito importante para entender como o LiveKit Voice AI (ou qualquer agente de voz com LiveKit) funciona nos bastidores. Vamos detalhar o fluxo de forma prática e clara:


1. Cada usuário = uma sessão independente (room individual)

Sim. Cada pessoa que acessa o agente abre uma sessão própria (ou "sala" no LiveKit). Essa sessão é totalmente isolada:

  • o áudio e vídeo não se misturam com o de outros usuários,
  • o agente conversa apenas com quem está naquela sala,
  • e o modelo de IA (por exemplo, o Claude, GPT, etc.) mantém um contexto exclusivo daquela conversa.

Em termos técnicos:

  • quando o usuário se conecta, o backend cria uma room temporária no LiveKit,
  • gera um token de acesso exclusivo para essa room,
  • e inicializa o pipeline de áudio (STT + LLM + TTS) para aquele participante.

2. O que acontece dentro da sessão

Dentro de cada sessão LiveKit, há três fluxos principais:

Etapa O que faz Exemplos de ferramentas usadas
STT (Speech to Text) Transcreve o que o usuário fala Deepgram, OpenAI Whisper, Vosk, etc.
LLM / Agente IA Gera a resposta com base no prompt e contexto GPT-5, Claude, Sonnet, Mistral, etc.
TTS (Text to Speech) Converte a resposta do agente em voz Cartesia, ElevenLabs, Play.ht, etc.

Esses três módulos trabalham em streaming — ou seja, a fala vai sendo processada em tempo real, e o agente responde rapidamente.


3. Sessões simultâneas (multiusuário)

Como cada pessoa tem sua própria room isolada, o LiveKit pode atender muitos usuários ao mesmo tempo, cada um com sua conversa independente com o mesmo agente.

Exemplo prático:

  • 1.000 pessoas entram no site ao mesmo tempo.
  • O servidor cria 1.000 salas LiveKit (ou reusa uma pool de rooms dinâmicas).
  • Cada sala contém 1 participante (usuário) e 1 agente (IA).
  • Nenhuma interfere na outra — cada uma tem seu contexto, voz e histórico.

Isso é exatamente o que torna o LiveKit ideal para agentes de voz escaláveis, como assistentes virtuais, atendimento ao cliente ou ensino individualizado.


4. Quando há interações em grupo

O LiveKit também suporta salas compartilhadas (multi-usuário) para reuniões ou conferências, mas nesse caso:

  • o agente pode ouvir todos na sala,
  • pode decidir responder a um ou a todos,
  • e você precisa configurar o comportamento de "orquestração" do agente (quem fala, quando responde, se interrompe, etc.).

5. Resumo simples

Tipo de sessão Isolamento Contexto de IA Uso comum
Individual (1:1) Total Exclusivo por usuário Chatbot de voz, assistente pessoal, atendimento automático
Grupo (1:N) Parcial Compartilhado entre os falantes Aulas, reuniões, eventos

Não existe um número máximo fixo de pessoas que podem usar o LiveKit simultaneamente. Isso varia conforme quatro fatores principais:

  • se o serviço é LiveKit Cloud (versão gerenciada) ou self-hosted (instalado em servidores próprios)
  • a capacidade do servidor (CPU, memória e largura de banda) no caso de instalação própria
  • o tipo de plano ou cota contratada no LiveKit Cloud
  • o tipo de uso — apenas áudio, vídeo, número de pessoas falando ou transmitindo ao mesmo tempo, e quantidade de fluxos de vídeo por participante

Exemplos de limites típicos

  • No plano gratuito do LiveKit Cloud, o limite padrão é de cerca de 100 participantes simultâneos.
  • Em planos pagos, esse número pode subir para 1.000 participantes ou mais.
  • Em instalações self-hosted, cada sala ocupa um servidor (ou nó), e o limite prático depende da máquina e da rede disponíveis.
  • Em testes realizados com servidores de médio porte (por exemplo, 16 núcleos de CPU), foi possível alcançar cerca de 3.000 ouvintes em uma sala de áudio para poucos participantes ativos falando.
  • A versão Cloud possui arquitetura escalável, capaz de suportar milhares ou até milhões de usuários concorrentes distribuídos em várias salas com balanceamento automático.

Conclusão resumida

  • No LiveKit Cloud gratuito, o limite gira em torno de 100 pessoas simultâneas.
  • Em planos pagos, pode chegar a centenas ou milhares, dependendo da estrutura contratada.
  • Em modo self-hosted, o número depende do servidor — quanto mais recursos, mais usuários por sala.
  • Já existem casos de salas de áudio com milhares de participantes, desde que a infraestrutura seja robusta.

1. Capacidade simultânea do LiveKit

  • Quantas pessoas podem usar o LiveKit ao mesmo tempo.
  • Diferenças entre LiveKit Cloud e self-hosted.
  • Limites por plano e capacidade por servidor.
  • Escalabilidade com milhares de usuários em salas separadas.

2. Sessões individuais e isolamento

  • Cada pessoa que acessa o agente cria sua própria sala (room).
  • Cada sessão tem contexto de IA independente.
  • Estrutura do fluxo interno: STT (voz → texto) → LLM (raciocínio) → TTS (texto → voz).
  • Diferença entre sessões individuais (1:1) e em grupo (multiusuário).

3. Identificação do agente no Playground

  • O LiveKit Playground usa o token JWT para decidir qual agente carregar.
  • Esse token contém:

  • Nome do agente (agent_name)

  • Identidade do usuário
  • Permissões da sala
  • O agente é definido em um arquivo agent.json (manifesto).
  • O Playground apenas lê o token e conecta ao agente indicado.
  • É possível criar um roteador que direcione usuários a diferentes agentes.

4. Direcionar pessoas para agentes diferentes

  • Como gerar tokens específicos para cada agente.
  • Exemplo prático de geração em Node.js e Python.
  • Como usar um backend roteador que decide o agente ideal conforme perfil ou intenção do usuário.
  • Como construir URLs diretas: https://agents-playground.livekit.io/?token=SEU_TOKEN_AQUI
  • Assim, cada pessoa é conectada ao agente certo automaticamente.

5. Criar interface própria (sem usar o Playground)

  • O Playground é só uma interface de teste; você pode criar a sua.
  • Opções para interface personalizada:
  1. SDKs oficiais do LiveKit (React, Flutter, iOS, Android).
  2. SDK de voz (Voice Agent) com captura e streaming de áudio.
  3. API REST + WebRTC para conectar via navegador com design próprio. * Fluxo típico: Usuário → Seu site → Backend (gera token) → LiveKit (room) → Agente IA. * Cada usuário tem uma sessão e um agente definidos dinamicamente.

6. Sugestão futura (próximo passo)

  • Criação de um exemplo completo em React com:

  • Alternância entre dois agentes,

  • Botão “Falar com o agente”,
  • Layout simples e funcional,
  • Conexão direta via token LiveKit.

LiveKit - Agente de Voz

chatgpt.com ↗

1

Recursos

↑ voltar ao topo · ver no Telegram ↗