Skip to main content
A API MKA1 fornece uma interface de voz em tempo real por meio do LiveKit. Este guia aborda como obter um token de sala, conectar-se a uma sessão de voz, enviar entrada de áudio e texto e capturar as respostas do agente.

Visão geral

A integração de voz consiste em três componentes principais:
  1. Token de sala: Um JWT que concede acesso a uma sala LiveKit
  2. Conexão LiveKit: Comunicação em tempo real baseada em WebRTC
  3. Agente de voz: Processa entradas de áudio/texto e gera respostas faladas
O pipeline do agente funciona da seguinte forma:
  • STT (Speech-to-Text): O áudio é transmitido via WebSocket a 16 kHz e transcrito
  • LLM: O texto transcrito é processado pela API de Respostas MKA1
  • TTS (Text-to-Speech): A saída do LLM é sintetizada em áudio a 24 kHz
Toda solicitação que o agente de voz envia para a API de Respostas inclui automaticamente "voice_mode": "true" nos metadata da solicitação. Isso permite distinguir respostas originadas por voz das baseadas em texto ao revisar o uso ou o histórico de respostas.

Como obter um token de sala

Para iniciar uma sessão de voz, primeiro solicite um token de sala da API MKA1. O endpoint de token requer uma chave de API e opcionalmente aceita X-On-Behalf-Of para identificar usuários finais. Consulte Autenticação para mais detalhes.

Parâmetros

O corpo da solicitação possui dois objetos de nível superior:

llm — Configuração do LLM (obrigatório)

O objeto llm aceita os mesmos campos do corpo da solicitação da API de Respostas, exceto os campos gerenciados pelo agente de voz (input, stream, store, background). Não é possível especificar previous_response_id e conversation ao mesmo tempo.
Os metadados do token são incorporados em um JWT, que é transmitido como um cabeçalho HTTP. Mantenha a carga total de llm abaixo de aproximadamente 8 KB — arrays grandes de tools podem precisar ser reduzidos.
Para sessões de voz, desative o raciocínio definindo "reasoning": { "effort": "none" }. O raciocínio adiciona tempo de reflexão antes de o modelo responder, o que aumenta a latência e cria pausas perceptíveis na conversa. Desativá-lo mantém as respostas rápidas e naturais.

stt — Configuração de reconhecimento de fala (opcional)

Controla a detecção de atividade de voz (VAD) no servidor e o comportamento de detecção de fim de fala.

Configuração avançada

Você pode transmitir ferramentas, instruções personalizadas e ajuste de STT em uma única solicitação de token:

Resposta

O token inclui metadados que o agente de voz usa para configurar a sessão.

Como continuar uma sessão

Para continuar a partir de uma resposta anterior:
Para continuar uma conversa existente:
Ao continuar uma sessão, a chave de API e o cabeçalho X-On-Behalf-Of (se usado) devem corresponder à sessão original. O agente de voz criptografa ambos no token de sala e os transmite a todos os serviços MKA1 downstream. Se não corresponderem, o agente não terá acesso ao contexto anterior.

Como conectar-se a uma sala

Depois de obter um token, use o SDK do LiveKit para conectar-se à sala.

Como enviar entrada de áudio

O agente aceita entrada de áudio por meio da faixa de áudio da sala LiveKit. O áudio é processado a uma taxa de amostragem de 16 kHz.

Comportamento de áudio

  • Detecção de atividade de voz (VAD): O VAD é tratado no servidor pelo agente MKA1, não localmente. O agente detecta automaticamente quando você para de falar e começa o processamento.
  • Taxa de amostragem: O áudio é transmitido a 16 kHz para o serviço STT.
  • Detecção de fim de fala: O agente usa detecção de fim de fala no servidor para determinar quando a fala termina. Não há atraso local de detecção de fim de fala.

Como enviar entrada de texto

Você também pode enviar mensagens de texto diretamente ao agente sem falar.

Como receber respostas do agente

O agente responde de três maneiras:
  1. Saída de áudio: Fala sintetizada por meio de uma faixa de áudio
  2. Transcrição: Texto do que o agente está dizendo (para legendas)
  3. Metadados da resposta: ID da resposta e ID da conversa por meio do canal de dados

Como assinar a saída de áudio

Como receber transcrições

O agente publica transcrições de sua fala. Você pode usá-las para legendas ou registros.

Como receber metadados da resposta

O agente publica o response_id e o conversation_id (se aplicável) quando começa a gerar uma resposta. Salve o response_id para encadear sessões futuras usando previous_response_id.

Continuidade de conversa

O agente oferece suporte a conversas com vários turnos e memória persistente. Cada resposta recebe automaticamente um response_id, enquanto as conversas devem ser criadas e gerenciadas explicitamente por meio da API de Conversas. Há duas formas de continuar uma conversa: llm.previous_response_id encadeia uma nova sessão a uma resposta específica. O agente recebe o contexto dessa resposta e de todas as respostas anteriores da cadeia. Use isto quando:
  • Você deseja continuar a partir de um ponto específico de uma conversa
  • Você está criando um fluxo de conversa linear
  • Você deseja criar uma ramificação a partir de uma resposta específica
llm.conversation faz referência a uma conversa criada pela API de Conversas. Use isto quando:
  • Você precisa gerenciar metadados da conversa (títulos, tags etc.)
  • Você deseja listar ou pesquisar conversas anteriores
  • Você está criando uma interface de chat com histórico de conversa persistente
  • Vários clientes precisam acessar a mesma conversa

Como iniciar uma nova sessão

Como continuar a partir de uma resposta anterior

Use previous_response_id para encadear uma nova sessão à última resposta, preservando o contexto da conversa:

Como continuar a partir de uma conversa

Use conversation_id para continuar uma conversa existente criada por meio da API de Conversas:
Ao continuar uma conversa, a chave de API e o cabeçalho X-On-Behalf-Of (se usado) devem corresponder à sessão original. O contexto é limitado à identidade autenticada.

Como lidar com desconexões

Os tokens expiram após 5 minutos. Se precisar de sessões mais longas, implemente a lógica de reconexão:

Exemplo completo

Aqui está um exemplo completo que reúne tudo:

Tratamento de erros

Erros do endpoint de token

Eles são retornados como respostas HTTP ao solicitar um token de sala:

Erros na sessão

Durante uma sessão de voz ativa, o agente publica erros pelo canal de dados LiveKit. Escute-os junto com os metadados da resposta:
A estrutura da carga de erro:
Códigos de erro:

Erros de conexão

Próximas etapas