DSL - Domain Specific Language
É uma linguagem criada para resolver um tipo específico de problema de forma simples e direta.
No contexto de agentes conversacionais e bots, a DSL funciona como uma camada de interpretação e decisão, ajudando o bot a entender intenções e tomar ações corretas sem depender de código complexo.
Em vez de escrever lógicas de decisão extensas em linguagens tradicionais, a DSL permite que você descreva como o bot deve processar respostas e reagir a diferentes intenções de forma declarativa e fácil de manter.
Por que usar DSL em bots
Simplifica decisões: você descreve intenções de forma direta, sem precisar de código extenso.
Melhora a precisão: garante que respostas comuns sejam interpretadas corretamente.
Facilita a evolução: adicionar ou ajustar regras de decisão fica simples e rápido.
Aproxima linguagem humana e lógica da máquina: mesmo quem não programa entende as regras.
Como funciona na prática
Nesta aplicação, a DSL serve para processar respostas dos usuários e classificar intenções como positivas ou negativas, permitindo que o bot tome a próxima decisão com base nisso.
Operadores principais da DSL
Os operadores são a base da DSL e indicam como as expressões devem ser interpretadas. Eles dizem ao bot onde e como procurar padrões nas respostas.
*palavra* — correspondência exata ou parcial
O asterisco * indica que o termo deve ser reconhecido mesmo que apareça junto com outras palavras.O asterisco * indica que a palavra pode aparecer em qualquer parte da frase.
Isso torna a regra mais flexível e tolerante a variações de linguagem natural.
Reconhece:
“sim”
“sim, claro”
“acho que sim”
“é sim mesmo”
palavra* — começa com
Usado quando a palavra ou frase precisa começar com o termo especificado.
Reconhece:
“simples”
“simpatia”
“sim, quero”
*palavra — termina com
Usado quando a palavra ou frase precisa terminar com o termo especificado.
Reconhece:
“acho que sim”
“é sim”
“será sim”
:in — busca dentro da frase
O operador :in informa ao bot que deve considerar a presença da expressão dentro de uma frase maior, mesmo que ela não seja uma resposta isolada.
Reconhece:
“acho que prefiro não fazer isso”
“prefiro não continuar agora”
“por enquanto, prefiro não”
! — negação ou exceção
O ! serve para excluir palavras específicas que não devem ser consideradas mesmo que apareçam.
É muito útil para evitar falsos positivos.
Interpreta como positivo mesmo que a palavra “não” apareça.
Ex.: “sim, não vejo problema” → ainda pode ser classificado como positivo.
| — separador de opções
O | é o operador OU. Ele permite que várias expressões sejam reconhecidas dentro da mesma intenção.
Reconhece qualquer uma dessas expressões como intenção positiva.
Exemplo completo de classificação de intenção
Explicando o que acontece:
Tudo que estiver dentro do bloco positiva será interpretado como aceitação.
Tudo que estiver no bloco negativa será interpretado como recusa.
O uso de *, :in, ! e | garante que variações naturais da fala sejam compreendidas corretamente.
O bot usará isso para decidir qual caminho seguir no fluxo.
Operadores não suportados
Para manter a DSL simples e acessível, operadores complexos como (), ?, +, {} ou padrões de expressões regulares não são suportados.
Isso garante que as regras permaneçam fáceis de ler, entender e manter mesmo por pessoas sem conhecimento técnico.
Benefícios da DSL no seu bot
Decisão rápida e precisa: identifica intenções em tempo real.
Fácil de expandir: adicionar novas palavras ou expressões não exige alterar a lógica do sistema.
Manutenção simples: regras claras, legíveis e centralizadas.
Integração com fluxos maiores: pode ser combinada com outras regras e ações do agente.
Conclusão
A DSL de decisão é uma ferramenta poderosa para tornar bots mais inteligentes e conversas mais naturais.
Com um conjunto simples de operadores — *, :in, ! e | — você consegue criar regras altamente eficazes que interpretam linguagem humana e transformam texto em ações automatizadas.
Essa abordagem simplifica a lógica interna dos agentes e torna sua plataforma mais acessível, escalável e fácil de evoluirsem necessidade de alterar código complexo.
Guia Rápido de Operadores DSL
Operador
Nome
O que faz
Exemplo
Resultado esperado
*
Corresponde parcial
Reconhece a palavra mesmo se estiver no meio da frase ou junto de outras
*sim*
“sim”, “sim claro”, “acho que sim”, “é sim mesmo”
palavra*
Começa com
Reconhece frases que começam com a palavra especificada
sim*
“simples”, “sim, quero”, “simpatia”
*palavra
Termina com
Reconhece frases que terminam com a palavra especificada
*sim
“acho que sim”, “será sim”, “vai ser sim”
:in
Em qualquer parte
Garante que a expressão será detectada mesmo que apareça dentro de uma frase maior
*prefiro não*:in
“acho que prefiro não”, “prefiro não agora”, “por enquanto prefiro não”
!
Negação / exceção
Exclui um termo mesmo que ele apareça dentro do padrão, útil para evitar falsos positivos
!*nao*
Ignora “não” mesmo que esteja dentro de uma frase positiva
`
`
OU lógico
Permite múltiplas opções dentro da mesma regra
`sim
Atualizado