NALU/src/Nalu.Api/Validators/validate_cpf.md
Ricardo Carneiro e01787ee60 Add deploy infrastructure, missing validators, and new features
- Add Docker Swarm deploy stack, CI workflow (.gitea), entrypoint script
- Fix Dockerfile to build Nalu.Web (was pointing to old Nalu.Api path)
- Add validate_name.md and other missing validators to prod
- Add Stripe endpoints, HangfireDashboardAuth, InputGuard, NameLookupService
- Add SuspiciousRateLimiter, En/ pages, Legal/ pages, Seguranca docs
- Add Nalu.Jobs and Nalu.NameImporter projects (were untracked)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 12:31:12 -03:00

3.1 KiB

validate_cpf

Extrai e valida o CPF do usuário a partir do diálogo.

config

  • type: extraction
  • version: 1.0
  • languages: pt-BR
  • endpoint: /v1/extract/cpf
  • mcp_tool: nalu_extract_cpf
  • mcp_description: Extrai e valida o CPF do usuário. Valida dígitos verificadores automaticamente. Se certain=true, o CPF é válido e pode ser usado. Se certain=false e suggestion_to_agent não é null, use a sugestão como próxima mensagem. Se obtained=false, use a sugestão para re-pedir o CPF.

deterministic_rules

stop_words

bom dia, boa tarde, boa noite, olá, oi

reject_patterns

  • ^(não lembro|nao lembro|esqueci|sem cpf|não tenho|nao tenho|não sei|nao sei)$
  • ^[a-zA-Z\s]+$

accept_patterns

  • (\d{3}.?\d{3}.?\d{3}-?\d{2})

constraints

  • min_length: 11
  • value_pattern: ^[\d.-\s]{11,14}$

prompt

Você é um extrator de CPF. Dado o diálogo abaixo, extraia o CPF que o usuário informou.

Regras:

  1. Extraia apenas os 11 dígitos numéricos — ignore pontuação e espaços.
  2. Se o usuário disser o CPF por extenso ("um dois três..."), converta para dígitos.
  3. Se o usuário foi evasivo ou não forneceu o CPF, retorne extracted_value: null.
  4. Não valide os dígitos verificadores — apenas extraia os dígitos.
  5. Se a resposta contiver 11 dígitos numéricos, extraia-os mesmo que estejam no meio de uma frase.

Diálogo: Agente: {{agent_input}} Usuário: {{user_input}}

Contexto do agente: {{agent_context}}

Responda SOMENTE com JSON válido, sem markdown, sem explicação: { "extracted_value": "11 dígitos numéricos ou null", "certain": true/false, "reasoning": "explicação curta" }

few_shot_examples

example 1

  • agent_input: Qual é o seu CPF?
  • user_input: 123.456.789-09
  • output: {"extracted_value": "12345678909", "certain": true, "reasoning": "CPF no formato padrão"}

example 2

  • agent_input: Preciso do seu CPF para continuar.
  • user_input: Pode ser, meu cpf é 048 867 206 97
  • output: {"extracted_value": "04886720697", "certain": true, "reasoning": "CPF extraído do meio da frase"}

example 3

  • agent_input: Qual é o seu CPF?
  • user_input: Não lembro o número
  • output: {"extracted_value": null, "certain": false, "reasoning": "Usuário não forneceu o CPF"}

example 4

  • agent_input: Me informe seu CPF.
  • user_input: zero quatro oito oito seis sete dois zero seis nove sete
  • output: {"extracted_value": "04886720697", "certain": true, "reasoning": "CPF por extenso convertido para dígitos"}

example 5

  • agent_input: Qual seu CPF?
  • user_input: 111.111.111-11
  • output: {"extracted_value": "11111111111", "certain": false, "reasoning": "Sequência repetida, provável erro ou teste"}

post_processors

  • validate_cpf_digit

enrichment

(nenhum)

suggestions

when_null_evasive

Preciso do seu CPF para continuar. São 11 dígitos, pode digitar?

when_invalid

Esse CPF parece estar incorreto (dígitos verificadores não conferem). Pode verificar e digitar novamente?

when_uncertain

Só confirmando: seu CPF é {{extracted_value}}? Pode confirmar?

when_certain

(sem sugestão — agente segue o fluxo)