mirror of
https://github.com/hoshikawa2/agent_platform_oci.git
synced 2026-09-07 10:13:46 +00:00
New features: Domain_Requested_LLM_Composition, Domain_Requested_RAG, Offline_Workflow_Regression, Pause_Resume_Workflow, Voice_Interruption_Replay, Workflow_Error_Recovery, Durable Idempotency, Workflow_Pause_Resume, Dynamic_Transaction_States, Post_Finalization_Replay, Retrieval_Tool_Guardrails
This commit is contained in:
47
Tuning-Performance/Voice_Interruption_Replay/README.md
Normal file
47
Tuning-Performance/Voice_Interruption_Replay/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# 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
|
||||
|
||||
1. **Sessão encerrada**: replay da última fala terminal (ou fallback), preservando `terminal_status`. Não chama LangGraph, tools ou guardrails.
|
||||
2. **Idle nudge**: replay da última fala real do assistente. Não chama LangGraph, tools ou guardrails.
|
||||
3. **Fala não interrompível**: replay literal.
|
||||
4. **Fala interrompível com contexto anterior**: executa `processing_interruption_classifier` pelo `LLMProvider` do framework.
|
||||
- `1`: reprocessa o complemento;
|
||||
- `0`, erro ou resposta inválida: replay fail-safe.
|
||||
5. **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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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.py`
|
||||
- `templates/agent_template_backend_day_zero/app/main.py`
|
||||
|
||||
Portanto novos agentes herdam o comportamento sem copiar código de domínio.
|
||||
Reference in New Issue
Block a user