2.0 KiB
Correção: precedência de parâmetros sobre semantic intent shift
Problema
Durante uma transação ativa em COLLECTING_PARAMETERS, o roteador executava o
semantic_classifier de mudança de intenção antes da extração dos parâmetros
quando ENABLE_LLM_ROUTER=true. Com isso, respostas referenciais válidas, como
"a de quatorze e noventa e nove", podiam ser roubadas por outra intent
semanticamente plausível antes de o contrato da transação tentar consumi-las.
Regra restaurada
A ordem agora é:
AWAITING_CONFIRMATION: confirmação explícita continua com precedência absoluta.COLLECTING_PARAMETERS: tentar primeiro extrair pelo menos um parâmetro pendente.- Se algum parâmetro for consumido, manter a transação e não executar intent shift.
- Somente quando nenhum parâmetro for consumido, avaliar
semantic_classifierparaCONTINUE/SHIFT. - Um novo objetivo explícito continua podendo mudar a intenção, desde que o extrator corretamente não o converta em parâmetro da transação anterior.
Resolução contextual
O extrator do roteador agora recebe um contexto conversacional recente e limitado,
apenas como auxílio não-autoritativo para resolver referências. Exemplo: se o histórico
recente contém Tamboro Mensal = R$ 14,99, a fala "a de 14,99" pode produzir o
candidato subject=Tamboro Mensal. A validação/pre-validation da transação continua
sendo responsável por provar a entidade contra evidência de backend/MCP antes da
confirmação ou execução.
Arquivo principal alterado
agent_framework_oci/libs/agent_framework/src/agent_framework/routing/enterprise_router.py
Testes
Foram atualizados/adicionados testes em:
agent_framework_oci/tests/test_transaction_parameter_llm_precedence.py
Validação executada:
- 8/8 testes do arquivo de precedência passaram.
- 81/81 testes combinados de transaction routing, state interruption, contextual reentry, expected input semantic classifier e route stickiness passaram.