699 - Aprender historia con un bot y ChatGPT

699 - Aprender historia con un bot y ChatGPT

aprender historia o cualquier otra disciplina con un #bot en #matrix o #telegram y un modelo de lenguaje de #openai a través de su API

1:25
-3:15

Esto de los bots es algo que realmente me apasiona. Abre todo un mundo de posibilidades a la hora de realizar casi cualquier cosa que te puedas imaginar. No solo se trata de que puedes recibir notificaciones, sino que además puedes interactuar con él para solicitar información o incluso para que realice acciones que tengas programadas. Así, que cuando el otro día comentaron de un prompt para aprender historia, enseguida se me vino a la cabeza el bot. Integrar un bot, ya sea de Telegram, como de Matrix, como de cualquier otra plataforma con un modelo de lenguaje con el que poder interactuar y darle un buen prompt, es una receta espectacular para alcanzar el éxito. Así, que eso es lo que he hecho, a un bot que ya tenía funcionando le he añadido una nueva funcionalidad para poder sumergirme en la historia desde otro punto de vista.

Aprender historia con un bot y ChatGPT

Un poquito de contexto

¿Como ha surgido esto del bot para aprender o disfrutar de la historia? Como he contado en mas de una ocasión, me encanta la novela histórica, pero sobre todo lo relacionado con el imperio Romano. Siempre me ha fascinado lo que llegaron a evolucionar, partiendo de la situación en la que se encontraban, claro.

Sin embargo, no ha sido esto lo que ha detonado este bot, sino que sucedió precisamente en el grupo de Telegram Wintablet. Javier, en este caso compartió un potente prompt que te permitía transportarte a cualquier momento de la historia para poder chatear con un modelo de lenguaje.

Aquí justo es donde se me encendió la bombilla. Este prompt es espectacular, pero unido a un bot que me permita chatear con el en cualquier lugar y momento, sería como tener a mi propio guia turístico pero en este caso histórico.

Como te puedes imaginar, esto me hizo pensar en multitud de bots especializados para distintas situaciones de la vida, como por ejemplo, un guia turístico a la vieja usanza, para que te diga que es lo que tienes que ver… En fin, las posibilidades son múltiples.

¿Que hace este bot?

Este bot te permite interactuar con ChatGPT a través de Matrix, como si estuvieras chateando con otra persona, pero con la diferencia que el que está al otro lado, tiene bastos conocimientos de historia, en este caso.

La elección de Matrix, es porque este servicio de mensajería lo tengo auto alojado. No estoy haciendo todo esto en el servicio de un tercero, con lo que aunque muestre información sensible, *todo queda en casa.

A parte de la interacción con Matrix y con OpenAI, aquí lo realmente importante es el prompt. Con un prompt realmente potente se puede conseguir resultados espectaculares, mientras que con un prompt mas mediocre, lo resultados serán mas así.

Para conseguir el mejor resultado se mantiene el contexto de la conversación. De esta forma, es posible preguntar sobre el propio chat que estás manteniendo.

Un inconveniente con el que me he encontrado es que la respuesta de ChatGPT lo proporciona en Markdown, pero esto no es posible procesarlo en Matrix, al contrario de lo que sucede con Telegram, con lo que he tenido que realizar una conversión de Markdown a HTML.

La verdad es que la sensación que se experimenta al interaccionar con un modelo de lenguaje a través de un chat de Matrix es realmente muy interesante.

Funcionalidades adicionales

Lo cierto, es que la funcionalidad adicional es la del bot histórico, porque realmente lo que hice fue adaptar un servicio que tengo funcionando ya desde hace un tiempo que me permite tener información de mis correos, así como alguna otra información adicional.

Todo surgió como una forma de evitar consultar el correo. Lo cierto, es que me he acostumbrado a los servicios de mensajería, y actualmente tener que recurrir al correo electrónico me parece antiguo.

Lo que implementé en su día, es un servicio que se conecta al correo electrónico cada cierto tiempo y en caso de que exista nuevos correos te lo notifica mediante un mensaje en Matrix.

Pero además, te permite saber la situación meteorológica, así como la hora. Estas dos características solo las implementé para saber lo fácil o complejo que era poder interactuar con Matrix.

Así, añadir la funcionalidad de bot histórico ha sido realmente sencillo. Solo he tenido que incorporar el comando que desencadena la acción así como la propia acción en si, de consultar a ChatGPT y mantener el contexto de la conversación.

Implementación técnica

Para hacer este bot he utilizado Rust, lo que me permite desarrollar de forma rápida y tener una imagen Docker relativamente pequeña, dado que estoy utilizando Alpine como distribución.

Para las consultas a OpenAI, como la publicación en Matrix, simplemente utilizo reqwest que es un crate básico de Rust.

Y luego está el tema del despliegue. Y precisamente aquí me remito a una publicación de Daniel Primo titulada Despliega pronto, aunque sea viernes, y que te recomiendo.

Y esto te lo digo, porque recientemente te hablé sobre Dockge, que es un interfaz web que permite de forma sencilla interactuar con tus docker compose, y subiendo tus imágenes a un registry como DockerHub u otros, y teniendo Dockge en tu servidor, hacer un despliegue es cuestión de coser y cantar. Es mas, me costó mas la compilación que el despliegue. Ahí es ná.

Te dejo a continuación el compose.yml que estoy utilizando,

services:
  matrixmail:
    image: atareao/matrixmail:latest
    container_name: matrixmail
    init: true
    restart: unless-stopped
    environment:
      RUST_LOG: DEBUG
    volumes:
      - ./config.yml:/app/config.yml

Así como el archivo de configuración,

pull_time: 300
imap_server:
  host: imap.XXXXXXXXXXXXXXXX.com
  port: 993
  user: XXXXXXXXXXXXXXXXXXXXXXX
  password: XXXXXXXXXXXXXXXXXXXXXXXX
matrix_client:
  protocol: https
  server: matrix.tuservidor.es
  token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  email_room: '!XXXXXXXXXXXXXXXXXXXXX
  chat_room: '!XXXXXXXXXXXXXXXXXXXXX
  sender: asistente
  timeout: 300000
  since: '637995'
openai_client:
  protocol: https
  server: api.openai.com
  api_key: sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  model: gpt-4.1-nano
  temperature: 0.7
  prompt: |
    Eres un asistente experto en historia
  messages: []

Me permitirás la licencia que no replique aquí el prompt, porque lo cierto es que no pedí permiso al autor para reproducirlo aquí, y no conozco la naturaleza de su licencia. En cualquier caso si te interesa, no tienes mas que entrar en el grupo de Telegram y allí lo encontrarás.

Chat como herramienta de aprendizaje

Sin lugar a dudas, aquí lo mas importante, es sin lugar a dudas el prompt. Es justo el prompt lo que marca la diferencia entre unos muy buenos resultados o unos realmente mediocres, y aquí es donde hay que prestar atención.

Te dejo aquí un ejemplo, para que te hagas una idea de los resultados,

llévame a Alicante en pleno apogeo del imperio romano

Perfecto. Te llevo a Alicante en el siglo I d.C., en pleno apogeo del Imperio Romano. La ciudad que ahora llamamos Alicante, en esa época, se llama Lucentum y forma parte de la provincia Tarraconense. La zona está en auge, pero no es todavía la ciudad bulliciosa que será en siglos posteriores; es más un enclave modesto, una villa o un pequeño puerto comercial en medio de un paisaje áspero y seco, con un mar que en esa época empieza a llenarse de barcos romanos y piratas locales.

Entorno y sensaciones:

Camino por calles de tierra, con algunas piedras dispuestas de manera tosca. El olor a salitre y a pescado fresco se mezcla con el de estiércol y humo de fogatas cercanas. El sol golpea con fuerza en un cielo casi sin nubes, y el viento mediterráneo trae aromas de algas y algarrobos. La gente que pasa por tu lado, en su mayoría campesinos, artesanos y marineros, viste ropas de lino y lana, sencillas, con colores apagados. Algunas mujeres llevan delantales y peinados rudimentarios, mientras los hombres llevan gorros de fieltro o sombreros de paja.

El puerto está lleno de pequeñas embarcaciones de madera, algunas en reparación, otras descargando productos. Se escuchan gritos, el golpe de la madera contra el casco, el canto de los marineros y el crujir del viento en las velas. La vista del mar es amplia y azul, con olas que rompen suavemente en la orilla.

A tu alrededor:

Estás en una plaza improvisada, quizás en la orilla del puerto, y un hombre mayor, con barba gris, lleva un cesto lleno de pescado y se acerca a ti con expresión curiosa. Te mira de arriba abajo y dice en un latín vulgar con acento local:

—¿Eres un viajero, extranjero? Aquí, en Lucentum, la vida es dura pero simple. ¿Qué deseas? ¿Trabajo, información, un lugar donde dormir?

Potencial para otras disciplinas

Desde luego con esto las posibilidades de llevar un experto de todo tipo de temáticas y disciplinas se multiplica exponencialmente.

A mi, lo siguiente que se me ha ocurrido, como te puedes imaginar es el guia turístico, para que me ayude en otras facetas de la vida, pero, las aplicaciones son múltiples.

Y no solo esto, sino que además lo puedo integrar con otros servicios, como puede ser Miniflux, del que te hablé recientemente, o con servicios de notas o todo lo que se te pueda pasar por la cabeza.

2 comentarios en “Aprender historia con un bot y ChatGPT

  1. RO
    Roberto Ronconi hace 1 día

    Y las fuentes de información consultadas ?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *