Agente de voz com IA mentia para clientes e confundia quem ligava: desenvolvedor achou a causa fora do prompt

Três meses em produção e o agente de voz com IA conseguiu mentir para um cliente sobre um administrador inexistente, passar um mês vendendo uma síntese de voz comum como «voz clonada» e tratar todos os chamadores como a mesma pessoa. O desenvolvedor concluiu que o problema não estava nos prompts, mas na arquitetura do código em volta do modelo. E tudo isso numa stack totalmente russa. O responsável por um agente de voz com IA para empresas documentou os tropeços de três meses em condições reais: o agente mentia, confundia clientes e falsificava a voz de um jeito bem diferente do planejado. A conclusão: a maior parte do «comportamento estranho» não é alucinação do modelo, e sim buracos de arquitetura no código ao redor dele. Dá para consertar, mas não com prompt.

Processado por IA de Habr AI; editado por Hamidun News
Agente de voz com IA mentia para clientes e confundia quem ligava: desenvolvedor achou a causa fora do prompt
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1O agente chamava o novo cliente pelo nome de quem ligou antes
Dado-chave #2Lembrava detalhes do pedido de outra pessoa e oferecia «continuar o cadastro»
Dado-chave #3Confirmava acordos inexistentes de sessões passadas

O desenvolvedor de um agente de voz com IA para empresas passou três meses em condições reais e documentou todas as armadilhas: o agente mentia, confundia clientes e falsificava a voz de um jeito bem diferente do planejado.

As três grandes falhas do agente

Nos primeiros meses em produção, o agente de voz protagonizou vários episódios.

Primeiro incidente: o agente disse a um cliente que o «administrador Aleksei» ligaria de volta em uma hora. Nenhum Aleksei existia. O agente gerou o nome a partir do contexto de chamadas anteriores, misturando trechos de diálogos. O cliente esperou e registrou uma reclamação.

O segundo bug foi mais grave: o agente passou a tratar todos os chamadores como a mesma pessoa. A sessão não era reiniciada entre as ligações, e a memória do cliente anterior vazava para a conversa seguinte. Tecnicamente, é o problema clássico de contexto compartilhado sem isolamento explícito.

  • O agente chamava o novo cliente pelo nome de quem ligou antes
  • Lembrava detalhes do pedido de outra pessoa e oferecia «continuar o cadastro»
  • Confirmava acordos inexistentes de sessões passadas
  • Pedia desculpas por um «atraso» que não houve, confundindo a ligação atual com a anterior

O terceiro caso foi o que levou mais tempo para ser descoberto. Durante um mês inteiro, o agente usou síntese TTS comum enquanto se apresentava aos clientes como «voz clonada». A clonagem não foi conectada por causa de um erro de configuração, mas não lançou exceção em lugar nenhum: simplesmente degradou em silêncio para a síntese padrão.

Por que o prompt não resolve

A primeira reação intuitiva é acrescentar ao prompt frases como «não invente nomes», «não lembre de quem ligou antes», «sempre verifique se existe perfil de voz». O autor tentou e explica por que isso não funciona de forma sistemática.

Um modelo de linguagem não diferencia a proibição do prompt dos dados do contexto da sessão. Se o histórico da ligação anterior entra fisicamente na janela de contexto, o modelo o usa. Uma instrução não consegue proibir o que já está na memória.

«Prompt é uma recomendação, não uma barreira de arquitetura.

A barreira precisa estar no código.»

A solução é isolar o estado na camada de infraestrutura: reinício completo do contexto entre as ligações, verificação do perfil de voz antes do início da chamada (e não durante), e validação explícita de cada fato antes de ele ser falado.

A stack russa e suas particularidades

O autor trabalha inteiramente com ferramentas nacionais: um LLM russo, um provedor russo de TTS e telefonia por meio de uma operadora local. Isso impõe limitações específicas.

A documentação de várias dessas ferramentas é incompleta ou fica atrás da API. Por isso o erro de clonagem de voz ficou invisível: na ausência de perfil de voz, o provedor não devolvia erro. Entregava quietamente a síntese padrão com código 200. A troca só podia ser detectada analisando o áudio de saída ou verificando explicitamente os metadados da resposta.

Lições práticas de três meses de experiência:

  • Verifique se todos os recursos (voz, perfil, sessão) existem antes de iniciar a operação, não durante ela
  • Registre em log não só os erros, mas também as respostas «bem-sucedidas»: degradação silenciosa é mais perigosa que uma falha explícita
  • Isole o estado do agente entre sessões no código, não no prompt
  • Teste a saída de áudio, não só o log de texto: síntese e clone soam diferentes

O que isso significa

Agentes de voz com IA quebram em produção de um jeito diferente dos chatbots: os erros são falados em voz alta, o cliente os ouve em tempo real e não consegue reler nem ignorar. Isso torna crítico o cuidado com a arquitetura.

A maior parte do «comportamento estranho» de um agente de voz não é alucinação do modelo, mas buracos de arquitetura no código ao redor dele. Dá para consertar. Mas não com prompt.

Perguntas frequentes sobre a notícia

O que se sabe sobre As três grandes falhas do agente?

Nos primeiros meses em produção, o agente de voz protagonizou vários episódios. Primeiro incidente: o agente disse a um cliente que o «administrador Aleksei» ligaria de volta em uma hora. Nenhum Aleksei existia. O agente gerou o nome a partir do contexto de chamadas anteriores, misturando trechos de diálogos. O cliente esperou e registrou uma reclamação. O segundo bug foi mais grave: o agente passou a tratar todos os chamadores como a mesma pessoa. A sessão não era reiniciada entre as ligações, e a memória do cliente anterior vazava para a conversa seguinte. Tecnicamente, é

Por que o prompt não resolve?

A primeira reação intuitiva é acrescentar ao prompt frases como «não invente nomes», «não lembre de quem ligou antes», «sempre verifique se existe perfil de voz». O autor tentou e explica por que isso não funciona de forma sistemática. Um modelo de linguagem não diferencia a proibição do prompt dos dados do contexto da sessão. Se o histórico da ligação anterior entra fisicamente na janela de contexto, o modelo o usa. Uma instrução não consegue proibir o que já está na memória. «Prompt é uma recomendação, não uma barreira de arquitetura. A barreira precisa estar no código.»

O que se sabe sobre A stack russa e suas particularidades?

O autor trabalha inteiramente com ferramentas nacionais: um LLM russo, um provedor russo de TTS e telefonia por meio de uma operadora local. Isso impõe limitações específicas. A documentação de várias dessas ferramentas é incompleta ou fica atrás da API. Por isso o erro de clonagem de voz ficou invisível: na ausência de perfil de voz, o provedor não devolvia erro. Entregava quietamente a síntese padrão com código 200. A troca só podia ser detectada analisando o áudio de saída ou verificando explicitamente os metadados da resposta. Lições práticas de três meses de experiênci

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…