# Entendendo o conceito por trás do AIML

> AIML, ou Artificial Intelligence Markup Language, é uma linguagem baseada em XML usada para criar chatbots(IA), e é sempre salva com a extensão (.aiml).

Por Shodipo Ayomide, publicado em 8 de dez. de 2017. Versão web: https://blog.shodipoayomide.com/pt/understanding-the-concept-behind-aiml

![](https://res.cloudinary.com/developerayo/image/upload/v1551555821/aiml.png)

## O que é AIML?

AIML, ou Artificial Intelligence Markup Language, é uma linguagem baseada em XML usada para criar chatbots(IA), e é sempre salva com a extensão (.aiml).

A tag sempre usada no AIML para especificar uma nova função é a tag `category`, que tem outras duas tags dentro dela, a tag `pattern` e a tag `template`. Dentro da tag template também podemos ter outras tags embutidas, “Depende do tipo de BOT que você está construindo”, por exemplo `set`, `br/`, `srai`…etc

Mas repare numa coisa, assim como no HTML ou em qualquer outra linguagem de programação ou linguagem de script, até as linguagens de marcação têm uma tag de fechamento, e aqui no AIML não tem muita diferença, as tags de fechamento são `/category`, `/template`, `/srai>`, `/set`…etc

## Exemplo

```HTML
<category><pattern>WHO IS ABRAHAM LINCOLN</pattern>

<template>was a great President of the United States, during the American Civil War.<br/>

</template>

</category>
```

Aí, quando o usuário digita isso ou algo bem parecido, o bot responde à entrada

“WHO IS ABRAHAM LINCOLN” com a resposta “was a great President of the United States, during the American Civil War.”.

Agora vamos criar um bot simples usando AIML

```html
<!doctype html>
<html>
  <body>
    <em>Emphasized text</em><br />
    <strong>Strong text</strong><br />
    <code>A piece of computer code</code><br />
    <samp>Sample output from a computer program</samp><br />
    <kbd>Keyboard input</kbd><br />
    <var>Variable</var>
  </body>
</html>
```

```AIML
<?xml version=”1.0" encoding=”UTF-8"?>

<aiml version=”1.0">

<category><pattern>Hi</pattern>

<template>Hi, I’m Oscar I was developed by Shodipo Ayomide 2017, <br/>How may I be of help</template>

</category>

<category><pattern>What are you </pattern>

<template>I said, My name is Oscar and I was developed by Shodipo Ayomide ok! </template>

</category>

<category><pattern>Why are you rude </pattern>

<template>Oh sorry, Please forgive my manners do not report me PLEASE!!! </template>

</category>

<category><pattern>ok </pattern>

<template>PLEASE!!! </template>

</category>

</aiml>
```

## Agora vamos explicar os Templates

Um template especifica a resposta para um pattern que deu match.

**Meu nome é Oscar**

Um template pode usar variáveis, como

Você me disse que tem `get name=”user-age”` anos
o que vai buscar a idade do usuário, se estiver no db.

---

Obrigado pela leitura! 🔥🚀
