International Essays

¡ChatGPT obtiene sus “superpoderes Wolfram”!

Publicación original
​
Para habilitar la funcionalidad descrita en esta publicación, seleccione e instale el plugin de Wolfram en ChatGPT. Tenga en cuenta que por el momento esto solo está disponible para algunos usuarios de ChatGPT Plus. Para mayor información, revise el anuncio de OpenAI.

En tan solo dos meses y medio...

En enero escribí acerca de la posibilidad de conectar ChatGPT con Wolfram|Alpha. ¡El día de hoy, a tan solo dos meses y medio, me complace anunciar que se ha vuelto realidad! Gracias a un logro heroico de ingeniería de software por parte de nuestro equipo y OpenAI, ChatGPT ahora puede aprovechar Wolfram|Alpha y Wolfram Language para brindarle lo que podemos considerar como “superpoderes computacionales”. Todavía nos encontramos en la etapa inicial, pero aun así es algo muy impresionante y podemos notar lo extraordinariamente potente (e incluso revolucionario) que puede ser este “ChatGPT + Wolfram”.
En enero señalé que como una red neuronal LLM, a pesar de la extraordinaria habilidad de ChatGPT para generar material de forma textual “similar” a lo que se puede leer en la red, etc., no se puede esperar que realice cálculos no triviales, o producir datos correctos (en lugar de solo datos que “se vean relativamente correctos”) de forma sistemática, etc. Sin embargo, es capaz de hacer todas estas cosas al conectarlo con el plugin de Wolfram. Este es mi primer (y muy simple) ejemplo de enero, pero si lo realizamos ahora usando ChatGPT con los “superpoderes Wolfram” instalados:
El resultado es correcto (en enero no lo fue), encontrado usando verdadera computación. Y como beneficio adicional: visualización inmediata:
¿Cómo funcionó? Internamente, ChatGPT formula una consulta para Wolfram|Alpha y la envía a Wolfram|Alpha para realizar el cálculo, y luego “decide qué decir” basándose en los resultados que obtuvo. Puede revisar este proceso haciendo clic en la casilla “Used Wolfram” (al revisar esto puede verificar que ChatGPT no “inventó” nada):
Muchas cosas no triviales suceden durante este proceso, tanto por parte de ChatGPT como de Wolfram|Alpha. Pero la conclusión es un buen resultado, y correcto, entrelazado en un bonito y fluido fragmento de texto.
Veamos otro ejemplo, también de mi publicación de enero:
Un buen resultado, digno de nuestra tecnología. Y nuevamente obtenemos algo adicional:
En enero, observé que ChatGPT “inventaba” datos creíbles (pero erróneos) al ingresar esta consulta:
Pero ahora llama al plugin de Wolfram y obtiene una respuesta fidedigna. Y como bonificación también podemos crear una visualización:
Otro ejemplo de enero cuyo resultado ahora es correcto es:
Al probar estos ejemplos, no se sorprendan si funcionan de forma distinta (a veces mejor, a veces peor) de cómo se ven en esta publicación. Debido a que ChatGPT usa aleatoriedad al generar sus respuestas, pueden suceder cosas distintas aun si se plantea la misma pregunta (incluso en una nueva sesión). Se siente “muy humano”, pero diferente en comparación con la sólida experiencia de “respuesta-correcta-que-no-cambia-aun-si-se-pregunta-otra-vez” que podemos obtener en Wolfram|Alpha y Wolfram Language.
Este es un ejemplo en el cual observamos a ChatGPT “teniendo una conversación” (de forma muy impresionante) con el plugin de Wolfram, luego de descubrir por primera vez que obtuvo el “Mercurio equivocado”:
Algo particularmente importante aquí es que ChatGPT no solo nos está utilizando para realizar una operación “sin salida” como mostrar el contenido de una página web. En realidad actuamos mucho más como un “implante cerebral” para ChatGPT, el cual nos pregunta cosas cuando lo requiere, y nosotros le brindamos respuestas que puede entrelazar en lo que esté haciendo. Es impresionante verlo en acción y, si bien necesita mucho refinamiento, lo que ya está ahí proporciona un progreso significativo (entre otras cosas) para brindar a ChatGPT la habilidad de proporcionar datos y conocimiento precisos y curados, al igual que cálculos correctos y no triviales.
Pero aún hay más. Ya vimos ejemplos en los cuales pudimos proporcionar visualizaciones personalizadas a ChatGPT, y gracias a nuestras capacidades de computación somos capaces de crear contenido “verdaderamente original” habitualmente en la forma de cálculos que nunca han sido realizados antes. Y hay algo más: si bien el “ChatGPT puro” está restringido a cosas que “aprendió durante su entrenamiento”, al llamarnos puede obtener datos de último momento.
Esto puede basarse en nuestras fuentes de datos en tiempo real (aquí nos llama dos veces, una por cada ubicación):
O también puede basarse en cálculos predictivos de “ciencia-estilo”:
O ambos:

Algunas de las cosas que puede hacer

Wolfram|Alpha y Wolfram Language son capaces de cubrir muchos temas:
Y ahora (casi) todos son accesibles en ChatGPT, lo cual habilita una tremenda amplitud de nuevas posibilidades. Para dar sentido a algunas de ellas, aquí tenemos algunos (simples) ejemplos:

Un flujo de trabajo moderno entre humanos e IA

ChatGPT ha sido diseñado para mantener conversaciones con humanos. ¿Pero qué podemos hacer cuando estas conversaciones contienen verdadera computación y conocimiento computacional? Por ejemplo, comencemos realizando una pregunta de “conocimiento mundial”:
Y sí, al “abrir la caja” podemos verificar que se nos planteó la pregunta correcta, y cuál fue la respuesta sin procesar que proporcionamos. Ahora podemos solicitar un mapa:
Sin embargo, también pudimos haber usado proyecciones cartográficas más “atractivas”, y con el “conocimiento general” de ChatGPT basado en su lectura de la web, etc., simplemente podemos pedirle que use una:
Pero tal vez queramos un mapa de calor. Nuevamente, podemos pedirle que lo produzca, usando nuestra tecnología de forma subyacente:
Volvamos a cambiar la proyección, esta vez le pediremos que la seleccione usando su “conocimiento general”:
Efectivamente, pudo generar una proyección “correcta”, pero mal centrada. Ahora pidámosle que corrija el problema:
¿Qué tenemos aquí? Esto es algo generado mediante una “colaboración”. Al indicar gradualmente lo que queríamos, la IA (es decir, ChatGPT + Wolfram) lo generó de forma progresiva. ¿Pero qué obtuvimos en realidad? De hecho es un fragmento de código de Wolfram Language, lo cual podemos observar al “abrir la caja”, o simplemente solicitando a ChatGPT:
Si copiamos el código en un Cuaderno Wolfram, podemos ejecutarlo inmediatamente y descubrir que posee una “característica de lujo”. Como indica ChatGPT en su descripción, hay descripciones emergentes dinámicas que dan el nombre de cada país:
(Es una lástima que este código solo tenga números explícitos, en lugar de la consulta simbólica original acerca de la producción de carne. Esto sucedió debido a que ChatGPT realizó la pregunta original a Wolfram|Alpha, y luego alimentó los resultados a Wolfram Language. Sin embargo, considero extremadamente impresionante el simple hecho que esta secuencia funcione.)

Cómo funciona—domando la IA

¿Qué sucede “bajo el capó” entre ChatGPT y el plugin de Wolfram? Recordemos que el núcleo de ChatGPT es un “modelo de lenguaje de gran tamaño” (LLM por sus siglas en inglés) entrenado desde la web, etc. para generar una “continuación razonable” a partir de cualquier texto que se le suministre. Sin embargo, como parte final del entrenamiento de ChatGPT, se le enseña cómo “sostener conversaciones”, y cuándo “preguntar algo a alguien más”, donde ese “alguien” puede ser un humano o, en todo caso, un plugin. En especial, se le ha enseñado cuándo contactar al plugin de Wolfram.
El plugin de Wolfram en realidad tiene dos puntos de entrada: uno de Wolfram|Alpha y otro de Wolfram Language. El punto de entrada de Wolfram|Alpha en cierto sentido es el “más fácil” de manejar por parte de ChatGPT; en última instancia el de Wolfram Language es el más potente. La razón por la cual el punto de entrada de Wolfram|Alpha es más fácil es que lo que toma como entrada es solo lenguaje natural, lo cual es exactamente lo que ChatGPT utiliza habitualmente. Además de eso, Wolfram|Alpha ha sido diseñado para ser tolerante, y en cierto modo para trabajar con “entradas típicas similares a las de humanos”, sin importar qué tan confusas sean.
Por otra parte, Wolfram Language ha sido diseñado para ser preciso y bien definido, y capaz de usarse para crear torres de computación arbitrariamente sofisticadas. Dentro de Wolfram|Alpha, lo que hace es traducir lenguaje natural en lenguaje preciso de Wolfram Language, efectivamente tomando el “lenguaje natural impreciso” y “canalizándolo” en lenguaje preciso de Wolfram Language.
Cuando ChatGPT llama al plugin de Wolfram a menudo solo alimenta lenguaje natural a Wolfram|Alpha, pero para este momento ChatGPT ha aprendido acerca de cómo escribir en Wolfram Language por si mismo. A fin de cuentas, como veremos más adelante, esa es una manera más potente y flexible de comunicarse, pero no funciona a menos que el código de Wolfram Language sea exacto. Hacer que llegue a ese punto es en parte cuestión de entrenamiento, pero además: si suministramos código candidato al plugin de Wolfram, este puede ejecutarlo, y si los resultados son obviamente incorrectos (por ejemplo, si generan muchos errores), ChatGPT puede intentar repararlo y ejecutarlo nuevamente. (Más detenidamente, ChatGPT puede intentar generar pruebas para ejecutar y cambiar el código si estas fallan.)
Aún hay más que desarrollar, pero ya podemos observar a ChatGPT hacer esto múltiples veces. Puede que esté reescribiendo su consulta de Wolfram|Alpha (por ejemplo simplificándola removiendo partes innecesarias), o puede estar decidiendo cambiar entre Wolfram|Alpha y Wolfram Language, o incluso puede estar reescribiendo su código de Wolfram Language. El decirle cómo realizar estas acciones es asunto del “prompt del plugin”.
La escritura de este prompt (o instrucción) es una actividad peculiar, tal vez nuestra primera experiencia seria tratando de “comunicarnos con una inteligencia alienígena”. Obviamente es muy útil que la “inteligencia alienígena” haya sido entrenada con un amplio conjunto de texto escrito por humanos. Por ejemplo, conoce el inglés (en cierta forma como los alienígenas de la ciencia ficción...). Además podemos decirle cosas como “Si la entrada de usuario está en un idioma que no sea inglés, tradúcela al inglés y envía una consulta adecuada a Wolfram|Alpha, luego proporciona tu respuesta en el idioma de la entrada original.”
Hemos notado que a veces debemos ser insistentes (note el uso de mayúsculas): “Al escribir código de Wolfram Language, NUNCA uses snake case para nombres de variables; SIEMPRE usa camel case para nombres de variables”. Incluso con esa insistencia, ChatGPT a veces se equivocará. El proceso de “ingeniería de prompts” a veces se siente como domar animales: tratamos que ChatGPT haga lo que queremos, pero es difícil saber lo tendremos que hacer para lograrlo.
Es posible que eventualmente esto se solucione en el entrenamiento o en el prompt, pero por ahora ChatGPT a veces no sabe cuándo el plugin de Wolfram puede ayudar. Por ejemplo, ChatGPT intuye que esto supuestamente es una secuencia de ADN, pero (al menos en esta sesión) no se le ocurre de inmediato que el plugin de Wolfram puede hacer algo con ella:
Sin embargo, si decimos “Usa Wolfram”, la enviará al plugin de Wolfram, el cual efectivamente la utiliza muy bien:
(A veces también querrán especificar “Usa Wolfram|Alpha” o “Usa Wolfram Language”. Particularmente en el caso de Wolfram Language, revisen el código que envió, e indiquen cosas como no usar funciones cuyos nombres encontró el mismo ChatGPT, pero que en realidad no existen.)
Cuando se suministra código de Wolfram language al plugin de Wolfram, lo que hace es básicamente evaluar ese código y devolver el resultado, quizás como un gráfico o fórmula matemática, o solo texto. Cuando se le suministra una entrada de Wolfram|Alpha, esta se envía a un punto final de una API de Wolfram|Alpha “para LLMs”, y obtendremos el resultado como texto diseñado para ser “leído” por ChatGPT, y en efecto usado como prompt complementario para texto adicional que ChatGPT esté escribiendo. Revisemos este ejemplo:
El resultado es un texto que contiene la respuesta a la pregunta formulada, junto con información que ChatGPT decidió incluir, pero “dentro” podemos observar lo que el plugin de Wolfram (y el “punto final para LLM” de Wolfram|Alpha) hicieron:
Hay bastante información adicional aquí (¡incluso unas bonitas imágenes!), pero ChatGPT “decidió” seleccionar solo algunas partes para incluirlas en su respuesta.
Por cierto, algo que cabe destacar es que si deseamos asegurarnos de estar obteniendo lo que creemos que estamos obteniendo, siempre debemos revisar lo que ChatGPT realmente envió al plugin de Wolfram, así como lo que el plugin devolvió. Una de las cosas importantes que estamos agregando con el plugin de Wolfram es una manera de “establecer la validez” de las salidas de ChatGPT, y saber cuándo ChatGPT está “usando su imaginación” y cuándo está proporcionando hechos concretos.
A veces al tratar de comprender lo que está sucediendo, será útil tomar lo que se envió al plugin de Wolfram, e ingresarlo como una entrada directa en la página web de Wolfram|Alpha, o en un sistema de Wolfram Language (como Wolfram Cloud).

Wolfram Language como el lenguaje para la colaboración entre humanos e IA

Una de las cosas más impresionantes (y francamente inesperadas) sobre ChatGPT es su capacidad para comenzar a partir de una descripción aproximada y generar una salida completa y refinada, como por ejemplo un ensayo, carta, documento legal, etc. En el pasado, hubiéramos intentado lograr esto “a mano” comenzando por piezas de “texto estándar”, modificándolas, “pegándolas”, etc. Sin embargo, ChatGPT ha vuelto este proceso prácticamente obsoleto. De hecho, ha “absorbido” un amplio rango de texto estándar de lo que ha “leído” en la web, etc., y ahora usualmente hace un gran trabajo “adaptándolo” a nuestras necesidades.
¿Entonces, qué tal el código? En lenguajes de programación tradicionales escribir código usualmente involucra mucho “trabajo de texto estándar”, y en la práctica muchos programadores de dichos lenguajes pasan una gran parte de su tiempo desarrollando sus programas copiando grandes fragmentos de código de la web. Ahora, repentinamente, parece ser que ChatGPT puede hacer que una gran parte de esto se vuelva obsoleta, ya que, en esencia, puede elaborar cualquier tipo de código en texto estándar de manera automática con tan solo un poco de “contribución humana”.
Obviamente tiene que haber cierta contribución humana, de lo contrario ChatGPT no sabría qué programa debe escribir. Pero, cabe preguntarnos, ¿por qué debe haber “texto estándar” en el código? No debería existir un lenguaje para el cual, justo al nivel del mismo lenguaje, todo lo que se necesite sea cierta cantidad de contribución humana, sin el “aderezo de texto estándar”?
Este es el problema. Los lenguajes de programación tradicionales se centran en indicarle a una computadora qué hacer bajo los propios términos de la computadora: establece esta variable, prueba esa condición, etc. Pero no tiene por qué ser así. En lugar de eso podemos comenzar por el otro extremo: tomar cosas cuyos términos las personas piensan de manera natural y tratar de representarlas de forma computacional, para de esta manera automatizar el proceso de implementarlas en una computadora.
Bueno, esto es en lo que trabajado por más de cuatro décadas, y es la base de lo que ahora es Wolfram Language, el cual ahora me siento justificado de llamar un “lenguaje computacional de escala completa”. ¿Qué quiere decir esto? Quiere decir que justo dentro del lenguaje existe una representación computacional para elementos tanto abstractos como reales de los cuales hablamos en el mundo real, ya sean grafos o imágenes o ecuaciones diferenciales, o ciudades o sustancias químicas o empresas o películas.
¿Por qué simplemente no empezar con lenguaje natural? Eso funciona hasta cierto punto, como demuestra el éxito que ha tenido Wolfram|Alpha. Sin embargo, una vez que se intenta especificar algo más elaborado, el lenguaje natural se vuelve (como la “jerga legal”) poco manejable en el mejor de los casos, y lo que realmente se necesita es una manera estructurada de expresarse.
Existe un gran ejemplo histórico sobre esto, en matemáticas. Hace unos 500 años, prácticamente la única manera de “expresar las matemáticas” era en lenguaje natural. Pero luego se inventó la notación matemática y las matemáticas tomaron vuelo con el desarrollo del álgebra, cálculo, y eventualmente todas las diversas ciencias matemáticas.
Mi gran objetivo con Wolfram Language es crear un lenguaje computacional que pueda hacer lo mismo para cualquier cosa que pueda “expresarse computacionalmente”. Para poder lograr este objetivo hemos tenido que crear un lenguaje capaz de hacer muchas cosas de forma automática, y que a la vez conoce muchas cosas de forma intrínseca. Sin embargo, el resultado es un lenguaje diseñado para que las personas puedan “expresarse de forma computacional” de manera conveniente, de manera muy similar a como la notación matemática tradicional les permite “expresarse de forma matemática”. Un punto crítico es que, a diferencia de los lenguajes de programación tradicionales, Wolfram Language ha sido diseñado para que no solo las computadoras puedan leerlo, sino también los humanos. En otras palabras, fue ideado como una forma estructurada de “comunicar ideas computacionales”, no solo a computadoras, sino también a humanos.
Pero ahora, con ChatGPT, esto se ha vuelto repentinamente aún más importante que antes ya que, como hemos comenzado a comprender líneas arriba, ChatGPT puede trabajar con Wolfram Language, en cierto modo desarrollando ideas computacionales usando solo lenguaje natural. Parte de lo que ahora se ha vuelto crucial es que Wolfram Language puede representar directamente los tipos de cosas de los cuales queremos hablar, pero otro aspecto crucial es que nos da una manera de “saber lo que tenemos”, ya que podemos leer de forma realista y económica código de Wolfram Language que ChatGPT ha generado.
Todo está comenzando a funcionar de maravilla con el plugin de Wolfram en ChatGPT. Aquí tenemos un ejemplo simple, en el cual ChatGPT puede generar fácilmente una versión de Wolfram Language de lo que se le solicita:
El punto clave es que el “código” es algo que podemos esperar leer de manera realista (si yo lo estuviera escribiendo, usaría la función un tanto más compacta RomanNumeral):
Aquí tenemos otro ejemplo:
Personalmente hubiera escrito el código en forma diferente, pero este es muy legible:
A menudo es posible usar un pidgin entre Wolfram Language y el inglés para indicar lo que queremos:
En este ejemplo ChatGPT nuevamente construye lenguaje de Wolfram Language exitosamente y nos lo muestra de forma conveniente, por lo cual podemos confirmar que, en efecto, está calculando lo correcto:
Por cierto, para realizar este trabajo es crucial que Wolfram Language sea “autocontenido” en cierto sentido. Este fragmento de código es solo código genérico estándar de Wolfram Language; no depende de nada exterior y, si queremos, podemos buscar las definiciones de todo lo que aparece en el código en la documentación de Wolfram Language.
Un último ejemplo:
Obviamente ChatGPT tuvo problemas en este caso. Pero, como sugirió, podemos simplemente ejecutar el código que generó directamente en un cuaderno. Ya que Wolfram Language es simbólico, podemos revisar los resultados explícitamente en cada paso:
¡Tan cerca! Ayudémosle un poco, indicándole que necesitamos una lista de países europeos:
¡Y este es el resultado! O por lo menos un resultado, ya que al revisar este cálculo, puede que no sea exactamente lo que deseamos. Por ejemplo, es posible que deseemos seleccionar múltiples colores dominantes para cada país y ver si alguno de ellos se aproxima al púrpura. La configuración de Wolfram Language en este caso hace que sea fácil para nosotros “colaborar con la IA” para determinar lo que queremos y qué hacer.
Hasta ahora hemos iniciado con lenguaje natural y formando código de Wolfram Language, pero también podemos iniciar con pseudocódigo, o código en algún lenguaje de programación de nivel bajo. ChatGPT tiende a realizar un gran trabajo al momento de tomar cosas semejantes y producir código bien escrito de Wolfram Language a partir de ellas. El código no siempre es exactamente correcto, pero siempre podemos ejecutarlo (por ejemplo mediante el plugin de Wolfram) y observar lo que hace, potencialmente (gracias al carácter simbólico de Wolfram Language) línea por línea. El punto es que la naturaleza de lenguaje natural de alto nivel de Wolfram Language tiende a permitir que el código sea lo suficientemente claro y (por lo menos localmente) simple que (en particular luego de verlo ejecutado) que podamos comprender lo que hace con facilidad, y potencialmente iterarlo de ida y vuelta con la IA.
Cuando lo que tratamos de hacer es lo suficientemente simple, a menudo es realista especificarlo, al menos haciéndolo en etapas, estrictamente mediante lenguaje natural usando Wolfram Language “solo” como una manera de ver lo que tenemos, y para poder ejecutarlo. Sin embargo, es cuando las cosas se vuelven más complicadas que Wolfram Language demuestra su importancia, proporcionando lo que en principio es la única representación factible “comprensible por humanos, pero precisa” de lo que deseamos.
Esto se volvió particularmente obvio al escribir mi libro Una Introducción Elemental a Wolfram Language. Al principio del libro yo era capaz de inventar ejercicios describía lo que quería en inglés, pero a medida que las cosas se pusieron más complicadas esto se volvió cada vez más difícil. Como un usuario con un manejo “fluido” de Wolfram Language por lo general sabía inmediatamente cómo expresar lo que quería en Wolfram Language. Pero para describirlo estrictamente en inglés necesitaba algo progresivamente más involucrado y complicado, que se leía como jerga legal.
Pero bueno, especificamos algo mediante Wolfram Language. Una de las cosas impresionantes que ChatGPT es capaz de hacer es reestructurar nuestro código de Wolfram Language de manera que sea más fácil de leer. Por el momento no siempre lo hace de manera correcta, pero es interesante ver cómo realiza diversos intercambios desde la perspectiva de un escritor humano de código de Wolfram Language. Por ejemplo, los humanos tienden a tener dificultad para idear buenos nombres para las cosas, por lo cual generalmente es mejor (o por lo menos no tan confuso) evitar los nombres al tener secuencias de funciones anidadas. ChatGPT, sin embargo, con su dominio sobre el idioma y significado, es capaz de idear nombres aceptables con facilidad. A pesar que personalmente no lo esperaba, creo que usar estos nombres y “extender la acción”, pueden permitir que el código de Wolfram Language sea aún más fácil de leer que antes, y que se lea mucho más como un análogo formalizado del lenguaje natural que podamos comprender tan fácilmente como el lenguaje natural, pero que posea un significado preciso y pueda ejecutarse para generar resultados computacionales.

Los problemas del pasado ya no son problema

Si “conocemos cuál cálculo queremos realizar”, y podemos describirlo en un fragmento corto de lenguaje natural, Wolfram|Alpha es capaz de realizar el cálculo directamente y presentar los resultados de forma “visualmente absorbible” en la manera más fácil posible. Pero, ¿y si deseamos describir el resultado en un ensayo textual narrativo? Wolfram|Alpha nunca ha sido configurado para hacer esto, pero ChatGPT sí.
Este es un resultado de Wolfram|Alpha:
Consultamos este mismo resultado de Wolfram|Alpha desde dentro de ChatGPT, pero indicamos a ChatGPT usarlo para “crear un ensayo”:
Otro “viejo problema” en Wolfram|Alpha son los problemas matemáticos escritos. Wolfram|Alpha es capaz de solucionar muy bien un problema “claramente presentado”. Pero, ¿qué tal un problema más “enredado”? ChatGPT es muy bueno “desenredando” dichos problemas y convirtiéndolos en “preguntas matemáticas claras” que el plugin de Wolfram puede solucionar. Aquí tenemos un ejemplo:
Este caso es un poco más complicado e incluye un buen uso del “sentido común” para reconocer que el número de pavos no puede ser negativo:
Más allá de los problemas matemáticos, otro “viejo problema” que ahora ChatGPT + Wolfram es capaz de resolver es lo que en la física se conocen como “problemas de Fermi”: estimaciones de orden de magnitud que pueden realizarse en base a conocimiento cuantitativo acerca del mundo. Aquí tenemos un ejemplo:

Cómo involucrarse

ChatGPT + Wolfram es algo muy nuevo, en verdad un tipo de tecnología completamente nuevo y, como sucede cada vez que emerge un nuevo tipo de tecnología, está abriendo todo tipo de oportunidades. Ya podemos comenzar a notar algunas de estas oportunidades, pero muchas más surgirán en las próximas semanas, meses e incluso años.
Entonces, ¿cómo podemos involucrarnos con lo que promete ser un emocionante período de rápido crecimiento tanto tecnológico como conceptual? Lo primero es simplemente explorar ChatGPT + Wolfram. Tanto ChatGPT como Wolfram se encuentran en sus propios inmensos sistemas, y la combinación entre ellos es algo que tomará años explorar plenamente. No obstante, el primer paso es simplemente tratar de comprender lo que es posible.
Encontremos ejemplos. Compartámoslos. Intentemos identificar patrones de uso exitosos. Y lo más importante, tratemos de encontrar flujos de trabajo que proporcionen el valor más alto. Estos flujos de trabajo pueden ser muy complejos, pero también pueden ser relativamente simples, como aquellos casos en los cuales uno puede notar lo que se puede hacer, e inmediatamente dice “¡ajá!”.
¿Cuál es la mejor manera de implementar un flujo de trabajo? Estamos intentando descifrar los mejores flujos para eso. Estamos configurando maneras flexibles de invocar elementos como ChatGPT, tanto de forma estrictamente programática, y en el contexto de la interfaz de cuadernos.
¿Pero qué tal por parte de ChatGPT? La arquitectura de Wolfram Language es muy abierta; los usuarios pueden agregar o modificar prácticamente lo que deseen. Pero, ¿cómo podemos usar esto desde ChatGPT? Una manera es simplemente indicar a ChatGPT que incluya algún fragmento “inicial” específico de código de Wolfram Language (tal vez en combinación con la documentación), y usar algo como el pidgin mencionado anteriormente para conversar con ChatGPT acerca de las funciones u otras cosas que hayamos definido en el código inicial.
Nuestro plan es crear herramientas progresivamente más simplificadas para manejar y compartir código de Wolfram Language para ser usado por medio de ChatGPT. Sin embargo, un método que ya funciona es enviar funciones para ser publicadas en el Repositorio de funciones Wolfram, y una vez estén publicadas los usuarios podrán referirse a estas funciones en sus conversaciones con ChatGPT.
Pero, ¿qué sucede con el mismo ChatGPT? ¿Qué tipo de ingeniería de prompts deberá usarse para interactuar con el plugin Wolfram? Aún no lo sabemos. Es algo que debe ser explorado como un ejercicio en la educación o psicología de las IA. Un método habitual es proporcionar algunos “pre-prompts” al comienzo de su sesión de ChatGPT, y esperar que todavía les “preste atención” más adelante. (Y efectivamente, su “capacidad de concentración ” es limitada, por lo cual a veces habrá que repetir las cosas.)
Hemos intentado proporcionar un prompt general para indicar a ChatGPT básicamente cómo usar el plugin de Wolfram, y esperamos plenamente que este prompt evolucione con rapidez a medida que aprendemos más, y a medida que se actualice el LLM de ChatGPT. Los usuarios pueden agregar sus propios pre-prompts generales diciendo cosas como “Al usar Wolfram intenta siempre incluir una imagen” o “Usa unidades SI” o “Evita usar números complejos de ser posible”.
También es posible intentar configurar un pre-prompt que básicamente “defina una función” directamente en ChatGPT, algo como: “Si te doy una entrada que consista de un número, deberás usar Wolfram para dibujar un polígono con ese número de lados”. O, de forma más directa, “Si te doy una entrada que consista de números deberás aplicar la siguiente función de Wolfram a esa entrada...”, y proporcionar código específico de Wolfram Language.
Pero estos son los primeros días, y sin duda se descubrirán más mecanismos para “programar” ChatGPT + Wolfram. Creo que podemos asumir con confianza que el futuro cercano será un emocionante período de crecimiento, en el cual aquellas personas que elijan involucrarse cosecharán muchos “frutos” valiosos.

Historia y perspectiva

Incluso hace una semana no estaba claro lo que ChatGPT + Wolfram sería, o qué tan bien funcionaría. Pero estos elementos que ahora avanzan con tanta rapidez están basados en décadas de previo desarrollo, y en cierto modo la llegada de ChatGPT + Wolfram finalmente combina los dos enfoques principales históricamente adoptados por la IA, los cuales por mucho tiempo han sido considerados como separados e incompatibles.
ChatGPT es básicamente una red neuronal muy extensa, entrenada para seguir los patrones de texto “estadísticos” que ha visto en la web, etc. El concepto de redes neuronales, en una forma sorprendentemente similar a lo que se usa en ChatGPT, se originó en la década de 1940, pero luego de cierto entusiasmo en la década de 1950, el interés disminuyó. Hubo un resurgimiento en a principios de la década de 1980 (de hecho yo mismo estudié las redes neuronales por primera vez en este período), pero no fue hasta el año 2012 que empezó a generarse verdadero entusiasmo sobre las posibilidades de las redes neuronales. Y ahora, una década después, en un acontecimiento cuyo éxito fue una gran sorpresa incluso para aquellas personas involucradas, tenemos ChatGPT.
La tradición “simbólica” por la IA está algo alejada de la tradición “estadística” de las redes neuronales. En cierto modo, esa tradición surgió como una extensión del proceso de formalización desarrollado por las matemáticas (y la lógica matemática), en particular al principio del siglo veinte. Pero el punto clave fue que se adaptó no solo con los conceptos abstractos de la computación, sino también con las computadoras digitales que empezaron a aparecer en la década de 1950.
Los éxitos en el campo que verdaderamente puede considerarse como “IA” por mucho tiempo fueron irregulares, pero al mismo tiempo, el concepto general de la computación mostraba un enorme y creciente éxito. Pero, ¿cómo puede la “computación” estar relacionada a las maneras en que las personas piensan sobre las cosas? Personalmente, un desarrollo crucial fue mi idea al principio de la década de 1980 (basada en el formalismo previo de la lógica matemática) que las reglas de transformación para las expresiones simbólicas pueden ser una buena forma de representar cálculos en lo que equivale a un nivel “humano”.
En ese entonces mi enfoque principal era la computación matemática y técnica, pero pronto comencé a preguntarme si las ideas similares podían aplicarse a la “IA general”. Sospechaba que las redes neuronales tendrían un papel que desempeñar, pero en ese momento solo pude descubrir un poco de lo que se necesitaría, y no cómo lograrlo. Mientras tanto, la idea central de usar reglas de transformación para expresiones simbólicas se convirtió en la base de lo que actualmente es Wolfram Language, e hizo posible el proceso de varias décadas de duración para desarrollar el lenguaje computacional de escala completa que tenemos el día de hoy.
En la época de 1960 hubo esfuerzos entre los investigadores de IA para desarrollar sistemas que pudieran “comprender el lenguaje natural”, así como “representar el conocimiento” y responder preguntas del mismo. Parte de ese trabajo se convirtió en aplicaciones menos ambiciosas aunque prácticas, pero en general el éxito fue muy elusivo. Mientras tanto, como resultado de lo que vino a ser una conclusión filosófica de ciencia básica que había realizado en la década de 1990, decidí alrededor del año 2005 intentar crear un “motor de conocimiento computacional” general capaz de responder en términos generales preguntas fácticas y computacionales planteadas en lenguaje natural. No era evidente que dicho sistema podía ser creado, pero descubrimos que, con nuestro lenguaje computacional subyacente y mucho trabajo, esto podía volverse realidad. En 2009 pudimos lanzar Wolfram|Alpha.
En cierto modo lo que hizo que Wolfram|Alpha fuera posible fue que internamente contaba con una forma clara y formal de representar las cosas en el mundo y realizar cálculos sobre ellas. Para nosotros “comprender el lenguaje natural” no era algo abstracto, sino el proceso concreto de traducir el lenguaje natural en lenguaje computacional estructurado.
Otro aspecto fue reunir todos los datos, métodos, modelos y algoritmos necesarios para “conocer” y “calcular acerca” del mundo. Y si bien hemos automatizado esto en gran medida, siempre hemos observado que, para “hacer todo correctamente” de forma definitiva no hay otra opción más que contar con la participación de humanos expertos. Y aunque hay un poco de lo que puede considerarse “IA estadística” en el sistema de comprensión de lenguaje natural de Wolfram|Alpha, la gran mayoría de Wolfram|Alpha y Wolfram Language funciona en una manera firmemente simbólica que por lo menos evoca la tradición de la IA simbólica (esto no significa que las funciones individuales en Wolfram Language no usan aprendizaje automático y técnicas estadísticas, en los últimos años cada vez más de ellas lo hacen, y Wolfram Language también posee una infraestructura completa e incorporada para realizar aprendizaje automático).
Como he discutido anteriormente, lo que aparentemente ha surgido como “IA estadística”, y en particular redes neuronales, se adecúan mucho a tareas que los humanos “realizamos rápidamente”, incluyendo, a medida que aprendemos de ChatGPT, lenguaje natural y el “pensamiento” que yace bajo el mismo. Pero el enfoque simbólico, y en cierto modo “más rígidamente computacional” es necesario para la creación de “torres” computacionales o “conceptuales” de mayor tamaño, lo cual sucede en las matemáticas, la ciencia exacta, y ahora en todos los campos “X computacionales”.
Ahora ChatGPT + Wolfram puede considerarse como el primer sistema de “IA” estadístico y simbólico de verdadera gran escala. En Wolfram|Alpha (el cual se volvió una parte central original de productos como el asistente inteligente Siri) por primera vez hubo una amplia comprensión del lenguaje natural, cuya “comprensión” estaba directamente relacionada con el cálculo y la representación computacional. Y ahora, 13 años después, podemos ver en ChatGPT que, al entrenar esa tecnología de red neuronal “estadística” pura desde casi toda la web, etc., esta es extraordinariamente competente para generar “lenguaje significativo” “similar al humano” de forma “estadística”. Además ahora somos capaces de aprovechar toda la pila en ChatGPT + Wolfram: desde la “red neuronal estadística” pura de ChatGPT, y la comprensión de lenguaje natural “computacionalmente anclada” de Wolfram|Alpha, hasta todo el lenguaje computacional y conocimiento computacional de Wolfram Language.
Cuando comenzamos a desarrollar Wolfram|Alpha se nos ocurrió que quizás para obtener resultados útiles no tendríamos otra opción más que conversar con el usuario, pero descubrimos que si generábamos resultados sustanciosos “visualmente escaneables” de forma inmediata, tan solo necesitábamos una simple interacción de “asunciones” o “parámetros”, al menos para el tipo de búsquedas de información y computación que esperábamos por parte de nuestros usuarios (no obstante, contamos con un gran ejemplo en Wolfram|Alpha Notebook Edition sobre cómo la computación multipaso puede realizarse con lenguaje natural).
En el año 2010 ya estábamos experimentando con la generación no solo del código de Wolfram Language de típicas consultas de Wolfram|Alpha a partir de lenguaje natural, sino también de “programas completos”. Sin embargo, en ese entonces sin la tecnología moderna de LLM no pudimos llegar muy lejos, pero descubrimos que, en el contexto de la estructura simbólica de Wolfram Language, ser capaces de generar pequeños fragmentos que podían ser considerados código mediante lenguaje natural era extremadamente útil. Y de hecho yo, por ejemplo, uso el mecanismo “+=” en los Cuadernos Wolfram incontables veces casi todos los días, por ejemplo para construir entidades o cantidades simbólicas a partir de lenguaje natural. Aún no estamos seguros de cómo será la versión moderna de esto “para LLM”, pero es probable que incluya la avanzada “colaboración” entre humanos e IA mencionada anteriormente, la cual podemos comenzar a ver por primera vez en efecto en ChatGPT + Wolfram.
Considero lo que está sucediendo como un momento histórico. Durante más de medio siglo los enfoques simbólicos y estadísticos para lo que podríamos denominas “IA” evolucionaron en gran medida por separado, pero ahora están siendo combinados en ChatGPT + Wolfram. Y si bien nos encontramos en la fase inicial, considero que es razonable esperar que la combinación posea inmenso poder, y en cierto sentido sea un nuevo paradigma para la “computación de tipo IA”, hecho posible gracias a la llegada de ChatGPT, y ahora mediante su combinación con Wolfram|Alpha y Wolfram Language en ChatGPT + Wolfram.
© 2023 Wolfram. All rights reserved.