NALU/src/Nalu.Api/Validators/validate_full_name.md
Ricardo Carneiro ea6cdb5395 Initial commit — NALU AI web platform
- ASP.NET Core 9 Razor Pages + Minimal API hybrid
- 14 validators (CPF, CEP, CNPJ, email, phone, name, yes-no, birthdate, handoff, cancel-intent, company-name, plate-br, postal-code, validate_reply)
- OAuth login (Google, Microsoft, GitHub) + cookie auth
- MongoDB usage tracking + CEP cache collection
- Stripe checkout with inline PriceData (no Price IDs)
- MCP server for Claude Code / Cursor integration
- Playground (10 calls/IP/day, no auth)
- Docs: Quickstart, API Reference, N8N, MCP, Créditos, Erros, Fluxos
- Credit system: 3 cr standard validators, 5 cr validate_reply
- SmartSuggestion: contextual re-ask via IA when obtained=false
- Per-IP rate limiting + daily cap + shared-IP abuse detection
- Lightbox for comic images
- Validadores page split: Brasileiros / Universais + Em breve

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 16:39:04 -03:00

3.8 KiB

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)