Regex resolve e-mails, CEPs e outras strings bonitinhas. Mas desmonta na hora em que alguém pede: “garanta que essa bio soe profissional” ou “confira se o anúncio realmente descreve um carro”. Dá para empilhar mais padrões, só que você continua julgando sintaxe, não significado.
Django AI Validator preenche esse vazio semântico. É um pacote novinho no PyPI que conecta seus campos Django a LLMs modernos (OpenAI, Anthropic, Gemini ou até um Ollama local) para validar e limpar o texto durante o fluxo normal do formulário.
Por Que Mais Um Validador?
Porque qualidade de conteúdo já não se resume a caracteres permitidos. Precisamos detectar tom, intenção e violações de política sem construir uma esteira de moderação do zero. Em vez de brincar de caça-palavras, você descreve em linguagem natural o que é “bom” e o validador faz o resto.
O Que o Pacote Entrega
- Validação semântica:
AISemanticValidatorlê seu prompt (“Esse texto é respeitoso e relevante?”) e avalia o conteúdo nessa linha. - Limpeza automática:
AICleanedFieldreescreve o input antes de persistir, remove PII, ajusta gramática e normaliza gírias. - Mimos no Django Admin: Dados suspeitos aparecem com indicadores visuais e ações em massa para limpeza.
- Suporte a async: Chamadas demoradas ao LLM podem ir para tasks Celery, mantendo o request-response ágil.
Documentação: mazafard.github.io/Django-AI-Validator
Código aberto: github.com/Mazafard/Django-AI-Validator
Tour de Arquitetura (a.k.a. o Cantinho Nerd)
Para ficar agnóstico de provedor e pronto para produção, o núcleo usa padrões clássicos de design:
- Adapter Pattern:
LLMAdapterdefinevalidate/clean. Implementações comoOpenAIAdapter,AnthropicAdapter,GeminiAdaptereOllamaAdaptertraduzem tudo para cada API. - Abstract Factory:
AIProviderFactoryentrega o bundle certo (adapter + config) quando você pede “openai” ou “ollama”, semifs espalhados. - Singleton Cache:
LLMCacheManagermantém um cache compartilhado de prompt+payload para evitar custos duplicados ao repetir a mesma validação. - Proxy Pattern:
CachingLLMProxyenvolve qualquer adapter, verifica o cache primeiro e só chama o real em caso de miss, salvando o resultado automaticamente. - Facade Pattern:
AICleaningFacadeesconde toda a tubulação; os validators apenas chamamfacade.validate()oufacade.clean(). - Template Method:
AISemanticValidatordescreve o fluxoprepare_input → call_llm → parse_response → raise_validation_error. Quem precisa pode sobrescrever etapas sem quebrar o algoritmo.
Usando em um Model
| |
Nos bastidores, a facade escolhe o adapter adequado, o proxy passa pelo cache e o validator ou levanta ValidationError ou retorna o texto limpo.
Guia Rápido
pip install django-ai-validator- Configure as credenciais OpenAI/Anthropic/Gemini/Ollama no
settings - Adicione
AISemanticValidatorouAICleanedFieldnos campos importantes
Pronto. Em vez de escrever 100 linhas de regex para adivinhar se um review é respeitoso, você descreve o comportamento esperado e deixa a decisão para o LLM. Me conta depois o que você resolveu validar!