# 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)