Files
agent_contas/docs/FIX_LLM_CONTEXT_COMPACTION_20260901.md
2026-09-01 11:24:03 -03:00

1.5 KiB

Correção: compactação de contexto LLM

Problema

O estado operacional preserva resultados completos de MCP/workflows para auditoria e continuidade. Esses objetos podem conter cópias recursivas de state, input, session, agent_profile, business_events, trace, nodes e outros dados técnicos. Quando build_messages() serializava diretamente mcp_results e transaction_evidence, o prompt podia ultrapassar a janela do modelo.

Caso observado: Input length (134212) exceeds model's maximum context length (131072) no ContestacaoAgent.

Correção

  • build_messages() passa a renderizar business context, MCP results, transaction evidence, RAG metadata e extra sections por um compactador genérico com orçamento de caracteres.
  • Objetos técnicos recursivos permanecem no estado/checkpoint para auditoria, mas não são reenviados integralmente ao LLM.
  • Fatos de negócio (tool, subject, status, valores, protocolos e resultados úteis) são preservados dentro do orçamento.
  • Se o provider ainda rejeitar por limite de contexto, _invoke_llm_cached() executa uma única segunda tentativa com orçamento emergencial de mensagens.
  • Não há loop de retries; qualquer outra exceção continua propagando normalmente.

Invariantes

  1. Estado operacional completo != contexto de prompt.
  2. Compactação não altera a execução das tools/workflows.
  3. Context-limit error recebe no máximo um retry compactado.
  4. A correção é genérica e não contém regra específica do Contas/TIM.