Ir para o conteúdo
Voltar aos Projetos

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

Um Chatbot Que Só Conhece a Sua Família

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. 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. 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. 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. 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. 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. 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. 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.

PerguntaResposta verdadeiraO que o seu bot disseO que o assistente disse
Linha 1, PerguntaLinha 1, Resposta verdadeiraLinha 1, O que o seu bot disseLinha 1, O que o assistente disse
Linha 2, PerguntaLinha 2, Resposta verdadeiraLinha 2, O que o seu bot disseLinha 2, O que o assistente disse
Linha 3, PerguntaLinha 3, Resposta verdadeiraLinha 3, O que o seu bot disseLinha 3, O que o assistente disse
Linha 4, PerguntaLinha 4, Resposta verdadeiraLinha 4, O que o seu bot disseLinha 4, O que o assistente disse
Linha 5, PerguntaLinha 5, Resposta verdadeiraLinha 5, O que o seu bot disseLinha 5, O que o assistente disse
Linha 6, PerguntaLinha 6, Resposta verdadeiraLinha 6, O que o seu bot disseLinha 6, O que o assistente disse
Linha 7, PerguntaLinha 7, Resposta verdadeiraLinha 7, O que o seu bot disseLinha 7, O que o assistente disse
Linha 8, PerguntaLinha 8, Resposta verdadeiraLinha 8, O que o seu bot disseLinha 8, O que o assistente disse
Linha 9, PerguntaLinha 9, Resposta verdadeiraLinha 9, O que o seu bot disseLinha 9, O que o assistente disse
Linha 10, PerguntaLinha 10, Resposta verdadeiraLinha 10, O que o seu bot disseLinha 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.