1.9 KiB
Voice Interruption / Replay — framework-native
Esta melhoria move para agent_framework.channels.interruption comportamentos que antes costumavam ser implementados dentro de agentes de voz específicos.
Objetivo
Evitar que idle_nudge, barge-in e fala residual pós-finalização reabram desnecessariamente o LangGraph principal, executem tools novamente ou confundam uma resposta de continuidade com uma nova intenção.
Ordem de decisão
- Sessão encerrada: replay da última fala terminal (ou fallback), preservando
terminal_status. Não chama LangGraph, tools ou guardrails. - Idle nudge: replay da última fala real do assistente. Não chama LangGraph, tools ou guardrails.
- Fala não interrompível: replay literal.
- Fala interrompível com contexto anterior: executa
processing_interruption_classifierpeloLLMProviderdo framework.1: reprocessa o complemento;0, erro ou resposta inválida: replay fail-safe.
- Sem fala anterior suficiente: processa normalmente.
Classificador
O classificador usa o profile processing_interruption_classifier e solicita resposta binária 1/0. Ele não possui gateway LLM próprio e não depende do domínio do agente.
Telemetria
O backend emite channel.processing_interruption.classified com regenerate=true|false. Replays retornam metadata:
{
"replay": true,
"replay_reason": "post_finalize|idle_nudge|non_interruptible_speech|classifier_result_0",
"framework_short_circuit": true,
"llm_called": false,
"tools_called": false,
"guardrails_called": false
}
No caso classifier_result_0, o LLM chamado é apenas o classificador leve; o LangGraph conversacional e o LLM do agente não são executados.
Templates
A funcionalidade foi aplicada em:
templates/agent_template_backend/app/main.pytemplates/agent_template_backend_day_zero/app/main.py
Portanto novos agentes herdam o comportamento sem copiar código de domínio.