- 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>
100 lines
3.1 KiB
Markdown
100 lines
3.1 KiB
Markdown
# 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)
|