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