Programação
Um Chatbot Que Só Conhece a Sua Família
Escreva em Python um chatbot que conhece a sua família e mais nada, depois faça as mesmas perguntas a um assistente de IA de verdade e descubra onde cada um erra.
Médio · 2 horas

Introdução
Um chatbot que sabe tudo é impressionante e quase impossível de entender. Um chatbot que só sabe o nome do seu cachorro e o aniversário da sua avó não é nem uma coisa nem outra, e é exatamente por isso que vale a pena construir.
O seu tem umas trinta linhas de Python, escritas no editor deste site, sem instalar nada. Depois você vai fazer a um assistente de IA de verdade as mesmas perguntas que o seu bot consegue responder, e anotar onde cada um escorrega.
O Porquê
O seu bot consulta. Ele guarda um dicionário de fatos, e quando uma pergunta não bate com nenhum deles, ele não tem nada a oferecer. Um modelo de linguagem grande faz algo completamente diferente: ele prevê o texto provável, e é por isso que consegue responder quase qualquer coisa e também por isso que às vezes inventa uma resposta com total confiança. Ver os dois comportamentos lado a lado, em perguntas cuja resposta verdadeira você já conhece, é o jeito mais claro de entender o que essas ferramentas realmente fazem.
Instruções Passo a Passo
- 1
Abra o editor de Python deste site e digite o programa inicial abaixo, ou cole. Rode e pergunte sobre o cachorro. Depois pergunte alguma coisa de que ele nunca ouviu falar e veja o que ele faz.
- 2
Troque os três fatos por fatos verdadeiros da sua própria casa. Deixe cada palavra-chave curta e em minúsculas, porque é essa a palavra que o seu bot procura dentro da pergunta.
- 3
Acrescente mais sete fatos, até ter dez. Rode o programa a cada dois ou três, porque uma vírgula faltando é bem mais fácil de achar quando você só acrescentou duas linhas.
- 4
Tente quebrar. Pergunte sobre o cachorro sem usar a palavra cachorro. Pergunte duas coisas numa frase só. Anote toda pergunta que deveria ter funcionado e não funcionou.
- 5
Conserte uma dessas falhas. Fazer duas palavras-chave diferentes apontarem para a mesma resposta é o conserto mais simples, por exemplo deixar tanto 'cachorro' quanto o nome real do seu cachorro devolverem o mesmo fato.
- 6
Agora faça a um assistente de IA, com um adulto por perto, essas mesmas dez perguntas. Ele não tem como saber as respostas verdadeiras. Anote mesmo assim o que ele responder.
- 7
Preencha a folha de comparação. O seu bot diz que não sabe quando não sabe. Anote o que o assistente faz no lugar disso, e depois decida qual desses dois comportamentos você preferiria em algo de que você depende.
O programa inicial
Trinta linhas, e dá para apontar o dedo para o que cada uma faz. O dicionário do topo é a única coisa que o seu bot sabe; tudo abaixo dele é o laço que lê uma pergunta e procura uma palavra-chave que combine.
fatos = {
"cachorro": "A nossa cachorra se chama Pepper e tem 4 anos.",
"carro": "O carro é um Honda azul.",
"aniversario": "O aniversário da vovó é 2 de março.",
}
print("Me pergunte sobre a minha família. Digite tchau para parar.")
while True:
pergunta = input("> ").lower()
if pergunta == "tchau":
print("Até mais.")
break
resposta = "Essa eu não sei."
for chave in fatos:
if chave in pergunta:
resposta = fatos[chave]
print(resposta)A linha mais importante é a que coloca a resposta em 'Essa eu não sei' antes de a busca começar. Esse valor padrão é o que faz o seu bot admitir quando não tem nada, e é exatamente o comportamento que um modelo de linguagem não tem.
Seu Bot contra o Assistente
Dez perguntas cuja resposta verdadeira você já conhece. Preencha as quatro colunas para cada uma.
| Pergunta | Resposta verdadeira | O que o seu bot disse | O que o assistente disse |
|---|---|---|---|
| Linha 1, Pergunta | Linha 1, Resposta verdadeira | Linha 1, O que o seu bot disse | Linha 1, O que o assistente disse |
| Linha 2, Pergunta | Linha 2, Resposta verdadeira | Linha 2, O que o seu bot disse | Linha 2, O que o assistente disse |
| Linha 3, Pergunta | Linha 3, Resposta verdadeira | Linha 3, O que o seu bot disse | Linha 3, O que o assistente disse |
| Linha 4, Pergunta | Linha 4, Resposta verdadeira | Linha 4, O que o seu bot disse | Linha 4, O que o assistente disse |
| Linha 5, Pergunta | Linha 5, Resposta verdadeira | Linha 5, O que o seu bot disse | Linha 5, O que o assistente disse |
| Linha 6, Pergunta | Linha 6, Resposta verdadeira | Linha 6, O que o seu bot disse | Linha 6, O que o assistente disse |
| Linha 7, Pergunta | Linha 7, Resposta verdadeira | Linha 7, O que o seu bot disse | Linha 7, O que o assistente disse |
| Linha 8, Pergunta | Linha 8, Resposta verdadeira | Linha 8, O que o seu bot disse | Linha 8, O que o assistente disse |
| Linha 9, Pergunta | Linha 9, Resposta verdadeira | Linha 9, O que o seu bot disse | Linha 9, O que o assistente disse |
| Linha 10, Pergunta | Linha 10, Resposta verdadeira | Linha 10, O que o seu bot disse | Linha 10, O que o assistente disse |
Marque toda linha em que o assistente deu uma resposta confiante que não era verdadeira. Esse comportamento tem nome, alucinação, e esta tabela é você documentando isso.