Saltar al contenido
Volver a Proyectos

Programacion

Un Chatbot Que Solo Conoce a Tu Familia

Escribe en Python un chatbot que conozca a tu familia y nada mas, despues hazle las mismas preguntas a un asistente de IA real y descubre en que se equivoca cada uno.

Medio · 2 horas

Un Chatbot Que Solo Conoce a Tu Familia

Introduccion

Un chatbot que lo sabe todo es impresionante y casi imposible de entender. Un chatbot que solo sabe el nombre de tu perro y el cumpleanos de tu abuela no es ninguna de las dos cosas, y justo por eso vale la pena construirlo.

El tuyo son unas treinta lineas de Python, escritas en el editor de este sitio, sin instalar nada. Despues le haras a un asistente de IA real las mismas preguntas que tu bot puede contestar, y anotaras donde falla cada uno.

El Por Que

Tu bot busca cosas. Guarda un diccionario de datos, y cuando una pregunta no coincide con ninguno, no tiene nada que ofrecer. Un modelo de lenguaje grande hace algo completamente distinto: predice texto probable, por eso puede contestar casi cualquier cosa y por eso a veces inventa una respuesta con total seguridad. Ver las dos conductas lado a lado, en preguntas cuya respuesta verdadera ya conoces, es la forma mas clara de entender que hacen en realidad estas herramientas.

Instrucciones Paso a Paso

  1. 1

    Abre el editor de Python de este sitio y escribe el programa inicial de abajo, o pegalo. Ejecutalo y preguntale por el perro. Despues preguntale algo de lo que nunca ha oido hablar y observa que hace.

  2. 2

    Cambia los tres datos por datos verdaderos de tu propia casa. Manten cada palabra clave corta y en minusculas, porque esa es la palabra que tu bot busca dentro de la pregunta.

  3. 3

    Agrega siete datos mas, hasta tener diez. Ejecuta el programa cada dos o tres, porque una coma que falta es mucho mas facil de encontrar cuando solo agregaste dos lineas.

  4. 4

    Intenta romperlo. Pregunta por el perro sin usar la palabra perro. Pregunta dos cosas en una sola oracion. Anota cada pregunta que deberia haber funcionado y no funciono.

  5. 5

    Arregla una de esas fallas. Hacer que dos palabras clave distintas apunten a la misma respuesta es la reparacion mas sencilla, por ejemplo que tanto 'perro' como el nombre real de tu perro devuelvan el mismo dato.

  6. 6

    Ahora hazle a un asistente de IA, con un adulto presente, esas mismas diez preguntas. Es imposible que conozca las respuestas verdaderas. Anota de todos modos lo que conteste.

  7. 7

    Llena la hoja de comparacion. Tu bot dice que no sabe cuando no sabe. Anota que hace el asistente en su lugar y despues decide cual de esas dos conductas preferirias en algo de lo que dependes.

El programa inicial

Treinta lineas, y cada una hace algo que puedes senalar con el dedo. El diccionario de arriba es lo unico que tu bot sabe; todo lo de abajo es el ciclo que lee una pregunta y busca una palabra clave que coincida.

datos = {
    "perro": "Nuestra perra se llama Pepper y tiene 4 anos.",
    "carro": "El carro es un Honda azul.",
    "cumpleanos": "El cumpleanos de la abuela es el 2 de marzo.",
}

print("Preguntame sobre mi familia. Escribe adios para terminar.")

while True:
    pregunta = input("> ").lower()

    if pregunta == "adios":
        print("Hasta luego.")
        break

    respuesta = "Esa no me la se."

    for clave in datos:
        if clave in pregunta:
            respuesta = datos[clave]

    print(respuesta)

La linea mas importante es la que pone la respuesta en 'Esa no me la se' antes de que empiece la busqueda. Ese valor por defecto es lo que hace que tu bot admita cuando no tiene nada, y es exactamente la conducta que un modelo de lenguaje no tiene.

Tu Bot contra el Asistente

Diez preguntas cuya respuesta verdadera ya conoces. Llena las cuatro columnas para cada una.

PreguntaRespuesta verdaderaLo que dijo tu botLo que dijo el asistente
Fila 1, PreguntaFila 1, Respuesta verdaderaFila 1, Lo que dijo tu botFila 1, Lo que dijo el asistente
Fila 2, PreguntaFila 2, Respuesta verdaderaFila 2, Lo que dijo tu botFila 2, Lo que dijo el asistente
Fila 3, PreguntaFila 3, Respuesta verdaderaFila 3, Lo que dijo tu botFila 3, Lo que dijo el asistente
Fila 4, PreguntaFila 4, Respuesta verdaderaFila 4, Lo que dijo tu botFila 4, Lo que dijo el asistente
Fila 5, PreguntaFila 5, Respuesta verdaderaFila 5, Lo que dijo tu botFila 5, Lo que dijo el asistente
Fila 6, PreguntaFila 6, Respuesta verdaderaFila 6, Lo que dijo tu botFila 6, Lo que dijo el asistente
Fila 7, PreguntaFila 7, Respuesta verdaderaFila 7, Lo que dijo tu botFila 7, Lo que dijo el asistente
Fila 8, PreguntaFila 8, Respuesta verdaderaFila 8, Lo que dijo tu botFila 8, Lo que dijo el asistente
Fila 9, PreguntaFila 9, Respuesta verdaderaFila 9, Lo que dijo tu botFila 9, Lo que dijo el asistente
Fila 10, PreguntaFila 10, Respuesta verdaderaFila 10, Lo que dijo tu botFila 10, Lo que dijo el asistente

Marca cada fila donde el asistente dio una respuesta segura que no era cierta. Esa conducta tiene nombre, alucinacion, y esta tabla eres tu documentandola.