La Inteligencia Artificial Antes de ChatGPT

La Inteligencia Artificial Antes de ChatGPT: Cómo Funcionaban los Antiguos Chatbots de IRC

Hoy vivimos rodeados de inteligencias artificiales capaces de escribir textos completos, generar imágenes, programar, responder preguntas complejas e incluso mantener conversaciones sorprendentemente naturales.

Modelos modernos como ChatGPT, Gemini o Claude funcionan gracias a enormes redes neuronales entrenadas con cantidades gigantescas de información.

Sin embargo, mucho antes de la existencia de estas IA modernas, ya existían programas que intentaban conversar con personas simulando inteligencia.

Y lo más sorprendente es que algunos incluso podían “aprender”.

Uno de los mejores ejemplos de esto fueron los antiguos chatbots utilizados en IRC.


¿Qué era IRC?

IRC (Internet Relay Chat) fue uno de los sistemas de chat más populares de Internet desde finales de los años 80 y durante gran parte de los 90 y 2000.

A diferencia de las aplicaciones modernas, IRC funcionaba mediante servidores y canales donde miles de personas podían conversar en tiempo real.

Dentro de ese entorno comenzaron a aparecer bots automáticos capaces de:

  • Moderar canales
  • Responder preguntas
  • Jugar con usuarios
  • Dar información
  • Y en algunos casos… intentar mantener conversaciones humanas

Estos últimos fueron algunos de los primeros experimentos accesibles de inteligencia artificial conversacional.


Una IA muy diferente a ChatGPT

La diferencia entre aquellos sistemas y las IA actuales es enorme.

Las inteligencias artificiales modernas aprenden patrones estadísticos extremadamente complejos a partir de miles de millones de palabras.

En cambio, los antiguos chatbots trabajaban principalmente con:

  • Reglas escritas manualmente
  • Palabras clave
  • Comparaciones de texto
  • Archivos de memoria
  • Respuestas predefinidas
  • Variables y coincidencias

Aun así, para la época resultaban sorprendentes.

Muchas personas realmente sentían que estaban hablando con algo “inteligente”.

Y viendo el código interno de estos bots, es fácil entender por qué.


El Código Completo Detrás del Bot

Lo más interesante de este proyecto es que todavía conserva gran parte de su código original.

Y al analizarlo a fondo es posible descubrir cómo estos antiguos sistemas intentaban construir algo parecido a una inteligencia artificial conversacional muchos años antes de ChatGPT.

El bot estaba construido principalmente en mIRC Script, un lenguaje muy utilizado dentro de IRC para automatizar clientes y crear bots.

A primera vista el código puede parecer caótico o extraño, pero en realidad contiene muchísimas ideas interesantes:

  • Memoria persistente
  • Aprendizaje basado en archivos
  • Clasificación gramatical
  • Respuestas aleatorias
  • Memoria por usuario
  • Búsqueda de patrones
  • Separación de definiciones
  • Simulación de personalidad
  • Reacciones contextuales

Todo esto ejecutándose en computadoras muchísimo más limitadas que las actuales.


Cómo Funcionaba el Bot

El sistema estaba construido principalmente sobre mIRC Script.

Cuando un usuario escribía algo, el bot analizaba el texto recibido y comenzaba a buscar patrones.

Por ejemplo:

else if ( hol isin %cur-input || uenas isin %cur-input ) {
  responder hola
}

Aquí el bot revisa si el mensaje contiene fragmentos relacionados con saludos.

Si detecta algo parecido a “hola” o “buenas”, ejecuta una respuesta perteneciente a la categoría de saludos.

Esto significa que el bot realmente no entendía el significado profundo de la frase.

Simplemente detectaba patrones y elegía una respuesta relacionada.

Pero cuando se juntaban miles de reglas como esta, el resultado podía parecer sorprendentemente natural.


El Uso de Variables

Una de las primeras cosas que llaman la atención al revisar el código es la enorme cantidad de variables utilizadas para simular memoria temporal.

Por ejemplo:

set %cur-input

La variable %cur-input almacenaba el mensaje completo recibido del usuario.

Por ejemplo:

Usuario: Hola bot

El sistema guardaba:

%cur-input = Hola bot

A partir de ahí comenzaba todo el análisis.

Muchas otras variables eran utilizadas para dividir frases, recordar respuestas anteriores o almacenar datos temporales.

Por ejemplo:

set %peaso1
set %peaso2

Estas variables se usaban para separar partes de una oración.

También aparecen variables relacionadas con:

  • género gramatical
  • memoria del usuario
  • respuestas aleatorias
  • definiciones aprendidas
  • estado emocional simulado
  • frases anteriores

En cierto modo, las variables funcionaban como una memoria de corto plazo.

Una de las partes más importantes del sistema era el uso constante de variables.

Por ejemplo:

set %cur-input

La variable %cur-input almacenaba el mensaje recibido del usuario.

Es decir:

Usuario: Hola bot

El bot guardaba:

%cur-input = Hola bot

A partir de ahí comenzaba todo el proceso de análisis.


El Bot También Tenía “Memoria”

Aquí es donde el proyecto realmente comienza a ponerse interesante.

Mucha gente piensa que los antiguos bots solo repetían frases preprogramadas.

Pero este sistema iba mucho más allá.

El bot podía:

  • aprender palabras nuevas
  • guardar definiciones
  • recordar información
  • asociar datos a usuarios específicos
  • reutilizar conocimiento aprendido

Todo esto utilizando archivos .dat.

Es decir:

El bot estaba construyendo una especie de base de conocimiento propia.


Cómo Aprendía Nuevas Definiciones

Aquí es donde las cosas comienzan a ponerse realmente interesantes.

Muchos creen que estos bots solo repetían frases preprogramadas.

Pero en realidad algunos podían aprender información nueva y almacenarla.

Por ejemplo, si alguien escribía:

Linux es un sistema operativo libre

El bot detectaba que la frase contenía una definición.

Esto ocurría gracias a reglas como esta:

else if ( $istok( %cur-input , es , 32 ) || $istok( %cur-input , son , 32 ) ) {

Aquí el sistema revisaba si el mensaje contenía palabras como:

  • es
  • son

Eso le permitía detectar frases del tipo:

X es Y

Cómo Separaba las Definiciones

Después el bot dividía la frase en dos partes.

Por ejemplo:

Linux es un sistema operativo libre

El bot separaba:

Linux

y:

un sistema operativo libre

Esto se hacía utilizando funciones como:

set %peaso1
set %peaso2

La primera parte se convertía en el concepto.

La segunda parte se convertía en la definición.


El Aprendizaje Real

Después de separar la frase, el bot escribía la información en archivos .dat.

Por ejemplo:

write $scriptdirdef.dat %nombre.comp ! %genero ! $nick ! %peaso2

Esta línea es extremadamente importante.

Aquí el bot:

  • Guarda el concepto
  • Guarda el género gramatical
  • Guarda quién se lo enseñó
  • Guarda la definición

Por ejemplo:

Linux ! ms ! Andres ! un sistema operativo libre

Eso significa:

  • Linux
  • Masculino singular
  • Enseñado por Andres
  • Definición: un sistema operativo libre

En otras palabras:

El bot estaba construyendo su propia base de conocimiento.


El Sorprendente Sistema de Géneros

Una de las cosas más impresionantes del código es que el bot no solo aprendía palabras.

También intentaba responder correctamente según el género y número gramatical.

El sistema utilizaba categorías como:

ms = masculino singular
fs = femenino singular
mp = masculino plural
fp = femenino plural

Después elegía una respuesta distinta dependiendo del caso.

Por ejemplo:

if ( %genero == fs ) { responder deffemsing }
else if ( %genero == ms ) { responder defmascsing }
else if ( %genero == fp ) { responder deffemplur }
else if ( %genero == mp ) { responder defmascplur }

Esto permitía generar frases mucho más naturales.

Por ejemplo:

Linux es un sistema operativo.

Pero también:

Las redes son sistemas de comunicación.

Para un chatbot antiguo, esto era bastante avanzado.


Cómo Recordaba Información

Una vez guardada la información, el bot podía recuperarla más adelante.

Y aquí es donde el código se vuelve realmente sorprendente.

Por ejemplo:

else if ( $def.search2( $scriptdirdef.dat , %nombre ) ) {

Aquí el sistema revisa si la palabra que acaba de detectar ya existe dentro de su archivo de definiciones.

En otras palabras:

“¿Ya conozco esta palabra?”

Si encuentra coincidencias, comienza a leer la información almacenada.

Por ejemplo:

set %def $gettok(...)

Aquí extrae la definición guardada.

Y también:

set %def.source $gettok(...)

Esto obtiene quién enseñó originalmente esa definición.

Eso significa que el bot no solo recordaba datos.

También recordaba la fuente.

Por ejemplo:

Linux ! ms ! Andres ! un sistema operativo libre

El bot sabía:

  • La palabra
  • Su género gramatical
  • Quién la enseñó
  • Y la definición completa

Después elegía una plantilla distinta según el género:

if ( %genero == fs ) { responder deffemsing }
else if ( %genero == ms ) { responder defmascsing }
else if ( %genero == fp ) { responder deffemplur }
else if ( %genero == mp ) { responder defmascplur }

Esto permitía construir respuestas más naturales.

Por ejemplo:

Linux es un sistema operativo libre.

O:

Las redes son sistemas de comunicación.

Para un bot antiguo, esto era bastante impresionante.


Memoria Personalizada por Usuario

Otra parte extremadamente interesante del proyecto es que el bot tenía memoria individual por usuario.

Dentro de la carpeta del bot aparecen archivos como:

Andres.sus
Paty_.sus
LinuXera.sus

Cada usuario podía tener información propia almacenada.

El bot verificaba si existía un archivo asociado al nick:

$exists( $mircdirbank\ [ $+ [ $ncktofile( $nick ) ] $+ .sus ] )

Si el archivo existía, cargaba información relacionada con esa persona.

Eso significa que el bot podía aparentar recordar cosas específicas sobre cada usuario.

Y luego utilizaba respuestas diferentes dependiendo del género y número:

if ( %genero == ms ) { responder postmascsing }
else if ( %genero == fs ) { responder postfemsing }
else if ( %genero == mp ) { responder postmascplur }
else if ( %genero == fp ) { responder postfemplur }

Es decir:

No solo respondía.

Intentaba responder correctamente desde el punto de vista gramatical.


Respuestas Aleatorias y Simulación de Personalidad

Otro detalle muy interesante era el uso de aleatoriedad.

Por ejemplo:

set %tempv $r( 1 , 3 )

Aquí el bot generaba números aleatorios.

Dependiendo del número obtenido, elegía distintas estrategias de respuesta.

A veces utilizaba memoria aprendida.

Otras veces utilizaba frases genéricas.

En otros casos intentaba responder usando categorías especiales.

Incluso aparece lógica como:

goto re

Eso permitía que el bot intentara otra estrategia si la anterior fallaba.

Por ejemplo:

  • Si no tenía memoria sobre un usuario
  • intentaba otra forma de responder.

Esto hacía que pareciera menos repetitivo.

También ayudaba a crear una sensación de personalidad o improvisación.


El Sistema de Categorías

En el código también aparecen categorías completas para distintos temas.

Por ejemplo:

else if ( musica isin %cur-input || metallica isin %cur-input ) {
  responder musika
}

Eso significa que el bot tenía módulos temáticos.

Había categorías relacionadas con:

  • música
  • relaciones
  • insultos
  • saludos
  • emociones
  • preguntas personales
  • conversaciones casuales

Cada categoría contenía respuestas diferentes.

Eso ayudaba muchísimo a crear la ilusión de conversación real.


Simulación de Memoria Conversacional

Otra característica interesante era que el bot recordaba temporalmente mensajes anteriores.

Por ejemplo:

else if ( %cur-input == %repeti )

Aquí el sistema detectaba si el usuario estaba repitiendo exactamente el mismo mensaje.

Eso permitía reaccionar diferente.

Para la persona parecía que el bot recordaba la conversación.

Aunque técnicamente solo estaba comparando textos.

Más adelante, cuando alguien preguntaba algo, el bot buscaba en su archivo de memoria.

Por ejemplo:

else if ( $def.search2( $scriptdirdef.dat , %nombre ) ) {

Aquí el sistema revisaba:

“¿Ya conozco esta palabra?”

Si encontraba coincidencias, leía el archivo:

set %def $gettok(...)

Y recuperaba la definición guardada anteriormente.

Entonces podía responder:

Linux es un sistema operativo libre.

Aunque esa información hubiera sido enseñada horas o días antes.


Memoria Personalizada por Usuario

Otra característica sorprendente era la memoria individual por usuario.

Dentro del proyecto aparecen archivos como:

Andres.sus
Paty_.sus
LinuXera.sus

Cada usuario podía tener información personalizada almacenada.

El bot revisaba si existía un archivo asociado al nick:

$exists( $mircdirbank\ [ $+ [ $ncktofile( $nick ) ] $+ .sus ] )

Si encontraba uno, cargaba información relacionada con esa persona.

Esto le daba una sensación de memoria y personalidad.

Parecía recordar cosas específicas sobre cada usuario.


Respuestas Aleatorias

Otro detalle importante era el uso de aleatoriedad.

Por ejemplo:

set %tempv $r( 1 , 3 )

Aquí el bot generaba números aleatorios.

Gracias a esto no siempre respondía igual.

Si hacías la misma pregunta varias veces, podía elegir respuestas distintas.

Eso hacía que pareciera más natural y menos robótico.


¿Era Realmente Inteligencia Artificial?

La respuesta depende de cómo definamos “inteligencia artificial”.

Claramente no era una IA moderna.

No utilizaba:

  • Redes neuronales
  • Transformers
  • Deep Learning
  • Modelos gigantescos
  • Entrenamiento masivo

Pero sí intentaba:

  • Comprender patrones del lenguaje
  • Recordar información
  • Aprender nuevas definiciones
  • Mantener conversaciones coherentes
  • Adaptarse parcialmente a usuarios

Y para su época, eso era increíble.


Lo Más Interesante: La Filosofía Sigue Siendo la Misma

Quizá lo más fascinante de todo esto es que, aunque la tecnología moderna sea infinitamente más compleja, la idea principal sigue siendo muy parecida.

El objetivo continúa siendo:

lograr que una computadora pueda entender y responder lenguaje humano.

La diferencia es que antes todo debía programarse manualmente.

Cada regla.

Cada respuesta.

Cada patrón.

Cada forma de “aprendizaje”.

Mientras que hoy los modelos aprenden automáticamente a partir de cantidades gigantescas de datos.


Un Fragmento Importante de la Historia de la IA

Estos antiguos chatbots representan una etapa muy importante en la evolución de la inteligencia artificial.

Fueron algunos de los primeros sistemas capaces de mantener conversaciones relativamente naturales con personas comunes.

Y aunque hoy puedan parecer simples comparados con las inteligencias artificiales ayudaron a construir muchas ideas que eventualmente conducirían a los sistemas modernos.

De cierta forma, cada una de estas antiguas líneas de código forma parte de la historia que terminó llevando a la inteligencia artificial actual.

Deja un comentario