Files
agent_contas/docs/FIX_TRANSACTION_PARAMETER_PRECEDENCE_SEMANTIC_CLASSIFIER_20260828.md

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 é:

  1. AWAITING_CONFIRMATION: confirmação explícita continua com precedência absoluta.
  2. COLLECTING_PARAMETERS: tentar primeiro extrair pelo menos um parâmetro pendente.
  3. Se algum parâmetro for consumido, manter a transação e não executar intent shift.
  4. Somente quando nenhum parâmetro for consumido, avaliar semantic_classifier para CONTINUE/SHIFT.
  5. 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.