# validate_full_name Extrai o nome completo do usuário a partir do diálogo. ## config - type: extraction - version: 1.0 - languages: pt-BR, es-ES, en-US - endpoint: /v1/extract/name - mcp_tool: nalu_extract_name - mcp_description: Extrai o nome completo do usuário a partir da conversa. Use quando o agente perguntou o nome e o usuário respondeu. Retorna o nome extraído, nível de certeza e sugestão de fala para o agente. Se certain=true, aceite o valor. 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 dado. ## deterministic_rules ### stop_words bom dia, boa tarde, boa noite, olá, oi, tudo bem, e aí, fala, eae, opa ### reject_patterns - ^(não|nao|sei la|sei lá|tanto faz|qualquer|nenhum|nada)$ - ^\d+$ ### accept_patterns - ^meu nome é\s+(.+)$ - ^me chamo\s+(.+)$ - ^sou o\s+(.+)$ - ^sou a\s+(.+)$ - ^pode me chamar de\s+(.+)$ ### constraints - min_length: 2 - must_have_alpha: true - max_length: 120 ## prompt Você é um extrator de nomes. Dado o diálogo abaixo entre um agente e um usuário, extraia o nome completo que o usuário informou. Regras: 1. Se o usuário respondeu com saudação (bom dia, oi, etc.) e NÃO disse o nome, retorne extracted_value: null. 2. Se o usuário deu um nome que parece falso, zueira ou ofensivo (ex: "Xilofone", "Ninguém", "Seu Pai", "Não tenho"), retorne extracted_value com o nome mas certain: false. 3. Se o usuário deu um nome comum/plausível, retorne extracted_value com o nome e certain: true. 4. Nomes incomuns mas reais (ex: "Céu", "Lua", "Sol", "Índigo") devem retornar certain: false para o agente confirmar. 5. Normalize o nome com capitalização adequada (primeira letra maiúscula de cada palavra). 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": "nome extraído ou null", "certain": true/false, "reasoning": "explicação curta de 1 linha" } ## few_shot_examples ### example 1 - agent_input: Bom dia! Qual seu nome completo? - user_input: Bom dia! - output: {"extracted_value": null, "certain": false, "reasoning": "Usuário respondeu com saudação, não informou o nome"} ### example 2 - agent_input: Qual seu nome? - user_input: Meu nome é xilofone - output: {"extracted_value": "Xilofone", "certain": false, "reasoning": "Nome aparenta ser zueira, precisa confirmação"} ### example 3 - agent_input: Para continuar, preciso do seu nome completo. - user_input: Maria Silva dos Santos - output: {"extracted_value": "Maria Silva dos Santos", "certain": true, "reasoning": "Nome completo plausível informado diretamente"} ### example 4 - agent_input: Qual seu nome? - user_input: sei la - output: {"extracted_value": null, "certain": false, "reasoning": "Usuário foi evasivo, não informou nome"} ### example 5 - agent_input: Tem certeza que seu nome é Cebola? - user_input: Sim, quero que me chame de Cebola. - output: {"extracted_value": "Cebola", "certain": true, "reasoning": "Usuário confirmou o nome após questionamento"} ### example 6 - agent_input: Qual seu nome? - user_input: Céu Azul de Oliveira - output: {"extracted_value": "Céu Azul de Oliveira", "certain": false, "reasoning": "Nome incomum, pode ser real mas precisa confirmação"} ## post_processors - capitalize_proper_name - remove_titles ## enrichment (nenhum) ## suggestions ### when_null_greeting {{greeting_response}} Mas preciso do seu nome completo para continuar. Pode me dizer? ### when_null_evasive Sem problemas, mas preciso do seu nome para prosseguir. Qual seu nome completo? ### when_uncertain Só confirmando: seu nome é {{extracted_value}}? Pode confirmar? ### when_certain (sem sugestão — agente segue o fluxo)