Um turno do chat

O cliente escreve uma mensagem. Seguem-se sete passos. O modelo decide um deles. O código decide os demais.

“Vi en mi estado de cuenta un cargo de 320 pesos mexicanos de Cafe Central del 12 de junio y no lo reconozco.”
“não reconheço uma cobrança de 320 no Cafe Central em 12 de junho”
Dados de demonstração: Cafe Central, 320 MXN. Os valores foram gerados pela equipe.

1. Mascaramento

O código decide

O código mascara os identificadores pessoais por padrão. Também recusa um pedido para revelar as instruções, antes de qualquer chamada ao modelo.

Entra
O texto do cliente.
Sai
O mesmo texto, com os identificadores pessoais mascarados. O modelo nunca vê o id do cliente.

O que pode interromper o turno

  • Recusar Um pedido para revelar as instruções recebe uma recusa. O código registra a tentativa.

Evidências: sentinel-ai-core/app/privacy · docs/build/decisions/004-pii-lifecycle.md

2. Roteador de intenção

O modelo rotula

Um LLM com instruções rotula a intenção. Não decide mais nada. Se o modelo falha, a linha de base de palavras-chave responde o turno.

Entra
O texto mascarado.
Sai
Um rótulo de intenção: cobrança, faltam informações, fora do escopo ou pessoa. Neste exemplo: cobrança.

O que pode interromper o turno

  • Esclarecer Rótulo «faltam informações»: não há dados suficientes. O sistema pergunta.
  • Recusar Rótulo «fora do escopo»: o sistema não age.
  • Transferir Rótulo «pessoa»: o cliente pede um atendente.

Evidências: docs/build/decisions/016-router-models.md · evidence/evaluation-runs/2024Q4-eval-v8/summary.json

3. Busca de cobranças

O código decide

Uma ferramenta vinculada à sessão lê as cobranças. O código reduz a lista com as palavras do cliente.

Entra
A conta da sessão e as palavras do cliente: valor, estabelecimento, data.
Sai
As cobranças candidatas desta conta. Neste exemplo: uma correspondência, Cafe Central, 320 MXN (dados de demonstração).

O que pode interromper o turno

  • Esclarecer Vários candidatos, ou nenhum para a data: o sistema mostra as cobranças e pergunta qual.
  • Transferir Três buscas com falha são transferidas sem executar nenhuma ação.

Evidências: sentinel-ai-core/app/tools · docs/build/conversation.md

4. Motor de políticas

O código decide

O código verifica o prazo, o status, o valor e a regra de fraude. Uma pergunta posterior de por quê recebe esta decisão guardada.

Entra
Os fatos da cobrança e a política do país.
Sai
Uma decisão com um id de regra: permitir, recusar ou transferir. Neste exemplo: permitir.

O que pode interromper o turno

  • Recusar Fora do prazo, ou um status que não pode ser disputado.
  • Transferir Um valor alto, ou um sinal de fraude. Uma pessoa decide.

Evidências: docs/build/decisions/021-dispute-policy-sources.md · docs/rationale/policy-sources.md

5. Confirmação

O código decide

O sistema não abre nada antes de o cliente confirmar. Uma confirmação abre só a cobrança da caixa que o cliente viu.

Entra
A cobrança permitida.
Sai
Uma caixa de confirmação com os fatos verificados. O cliente confirma ou não.

O que pode interromper o turno

  • Esclarecer O cliente não confirma, ou cita outra cobrança. A caixa se fecha e nada é aberto.

Evidências: docs/build/conversation.md

6. Abertura do caso

O código decide

Uma ferramenta grava o caso. O sistema conta só uma ação que a ferramenta confirma. Um tempo esgotado não é um sucesso.

Entra
A cobrança confirmada.
Sai
Um registro de caso no armazém de casos.

O que pode interromper o turno

  • Transferir Um passo que falha não é informado como concluído. O pacote para o atendente o registra.

Evidências: sentinel-ai-core/app/models/dispute_case.py · docs/architecture/mocks.md

7. Releitura

O código decide

O código relê o caso do armazém. O sistema diz que o caso existe só depois dessa leitura.

Entra
A referência do caso.
Sai
O número do caso, mostrado ao cliente.

O que pode interromper o turno

  • Nada interrompe este passo. É o fim do turno.

Evidências: docs/architecture/specification.md

Cada parada é um tipo de resposta: Esclarecer pergunta ao cliente, Recusar declina, Transferir registra um ticket para um atendente. Veja a página da conversa.