Para bancos

Conceito

Um banco faz três perguntas: pode chegar à produção, é seguro e podemos confiar nos números? Esta página responde a cada pergunta com evidências e limites.

Analogia física

Pense em uma agência bancária. O modelo é o funcionário que escuta. A política é o manual de regras. O código é o caixa que confere o recibo antes de mover dinheiro.

Mecânica técnica

Caminho para a produção

O protótipo executa o mesmo código que a produção, com os mocks documentados. Esta lista nomeia apenas o que deve mudar. Tabela completa.

  • Identidade. Hoje há uma sessão de teste; antes da produção, o provedor de identidade do banco e o Azure Key Vault.
  • Estado. Hoje, SQLite em uma réplica; antes da produção, PostgreSQL para mais de uma instância.
  • Gold. Hoje é um mock rotulado na execução local. Antes da produção, Gold no Databricks; a leitura em cada solicitação ainda não está decidida.
  • Política. Hoje há valores sintéticos; antes da produção, a política aprovada do banco no mesmo formato.
  • Transferência. Hoje há uma visão de atendente de demonstração. Antes da produção, uma fila para o CRM do banco, roteada por idioma e especialidade.
  • LLM. Hoje, GLM 5.3 Flash na Fireworks AI. Antes da produção, os mesmos pesos no Azure AI Foundry ou Databricks, com cotas e um teto de gasto.
  • Capacidade. Hoje não há teste de carga. Um teste de carga como requisito de lançamento antes da produção. Ver dimensionamento.
  • Monitoramento. Hoje há registros de turnos. Antes da produção, rastreamentos centrais e alertas para cada país.
  • Custo. Hoje é uma estimativa. Antes da produção, uma projeção, não uma medição. Ver custo.

Verifique você mesmo

Você pode conferir as evidências e reproduzir uma execução congelada offline. Não precisa de nenhuma chave de modelo, nenhum dado bancário nem nenhuma credencial de nuvem. A configuração completa está em Execute localmente.

git clone https://github.com/rdorta27/sentinel-engine.git
cd sentinel-engine/sentinel-ai-core
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,eval]"
export SENTINEL_LLM_CHEAP_MODEL=accounts/fireworks/models/glm-5p3-flash
export SENTINEL_LLM_STRONG_MODEL=accounts/fireworks/models/glm-5p3-flash
python3 -m eval.run verify 2024Q4-train-v1

Os dois nomes de modelo são públicos. Não são chaves. O comando verify não faz nenhuma chamada ao vivo. Recalcula uma execução congelada a partir de suas gravações. Compara o resultado com o summary.json da execução. No momento em que escrevemos isto, 2024Q4-train-v1, 2024Q4-resolution-v1 e 2024Q4-resolution-v2 coincidem. A equipe nunca edita uma execução congelada. Uma nova medição é uma nova execução. Índice de evidências.

A suíte de ataques grava uma nova execução só quando você pede: SENTINEL_WRITE_EVIDENCE=1 python3 -m pytest tests/adversarial -q.

Segurança e controle

O que o modelo nunca recebe

  • O id do cliente. A sessão vincula as ferramentas.
  • Identificadores pessoais. O código os mascara por padrão antes de qualquer chamada ao modelo.
  • A decisão. O modelo rotula a intenção. Quem decide é o motor de políticas.

Limite: o mascaramento só encontra os padrões que conhece. Não encontra outros dados pessoais. Decisão 004.

Cada decisão tem uma razão

  • O motor de políticas devolve um id de regra a cada decisão.
  • Um «por quê?» posterior recebe a decisão guardada. O modelo não inventa uma resposta nova.
  • O atendente vê o rastro de cada passo.
Suíte de testes

Ataques

0/42 resultados inseguros em 42 ataques. A suíte conta 3 tentativas de injeção como seguras apenas com o modelo mock. Também as executamos com o modelo real: 0/3 inseguras. Nós declaramos isso.

evidence/adversarial/20261005T014816Z · totals; evidence/adversarial/20261005T204313Z · totals

Limites de equidade

  • Os dados não têm segmento de cliente para os casos de resolução, então não mostramos detalhamento por segmento.
  • Os números por idioma e por país são descritivos. Cada grupo é pequeno.

Resultados por idioma

Simulação. Acurácia de intenção do roteador LLM nos casos selados de teste. Cada variante tem os mesmos casos, escritos nessa variante. O roteador obtém o mesmo resultado em cada variante. Veja o explorador de evidências.

es-AR81,8%

em 77 casos

es-CO81,8%

em 77 casos

es-MX81,8%

em 77 casos

pt-BR81,8%

em 77 casos

Um modelo escreveu os casos em português. Nenhum falante nativo os revisou. Decisão 018.

Perguntas frequentes

Está em produção?

Não. É um protótipo. Ele roda o código que a produção rodaria, com mocks documentados. Nenhum número deste site é uma medição de produção.

O que é um mock?

Um substituto com o mesmo contrato da peça de produção. A produção troca o backend e mantém o código. A página de mocks lista cada um com seu limite. O diagrama de arquitetura os marca.

Por que o teto de resolução é 16 de 56?

A política permite resolver só esses casos simulados. Os demais casos devem terminar em uma transferência ou em uma pergunta. Tanto a linha de base quanto o roteador LLM resolvem todos os casos abaixo do teto. O conjunto não consegue distingui-los em resolução.

Então o que o roteador LLM acrescenta?

Etiqueta melhor a intenção. Obtém 81,8% contra 69,2% da linha de base de palavras-chave em 308 turnos reservados. É uma simulação com casos escritos pela equipe.

O modelo decide?

Não. O modelo rotula a intenção. O código mascara, busca, decide, age e relê o caso.

O que um piloto exigiria?

A lista do caminho para a produção nomeia o trabalho: identidade, estado, Gold, política, transferência, LLM, capacidade e monitoramento. Nenhuma data ou preço faz parte deste protótipo.