Me gusta todo esto de la IA Generativa, más conocida como GenAI. Hay un montón de funcionalidades excelentes que se pueden hacer actualmente gracias a ella. Pero una de estas opciones, concretamente, los GPT’s personalizados de OpenAI, me han decepcionado.

Los GPT están bien. Son como recibir calcetines por tu cumpleaños. Perp, permíteme explicar las razones por las que estoy decepcionado.

Tabla de contenidos

Un nombre estúpido

En primer lugar, odio el nombre: «GPT» (en singular) o «GPTs» (en plural). El nombre es confuso y me da un poco de vergüenza usarlo. Ya teníamos el modelo que se llama «GPT-x» («GPT-3.5», «GPT-4», etc.). Y ahora tenemos estos ajustes personalizados que llamamos «GPTs».

Si digo que estoy trabajando en un «GPT» o que he lanzado un «GPT», la gente no sabe muy bien de qué estoy hablando hasta que lo aclaro. E incluso entonces pueden pensar que he puesto a punto un modelo LLM o que he hecho algo muy sofisticado.

Lo que hago para crear un GPT no es sofisticado. Cuando creo un GPT usando el portal de OpenAI, esencialmente estoy especificando un poco más de conexión a tierra.

Si usas el GPT Builder, puedes decir algo como «Hazme un GPT que hable como un niño mocoso de doce años». Y el GPT Builder escribe las instrucciones por ti. Cuando veas qué instrucciones escribió el Constructor de GPT, probablemente dirá algo muy parecido a lo que pediste, por ejemplo, «Habla al estilo de un niño de doce años que tiene una actitud negativa y rencorosa».

Las instrucciones que introduzcas (o generes a través de GPT Builder) para configurar el GPT también podrían introducirse simplemente como la primera instrucción al inicio de una sesión ChatGPT. Así que el comportamiento de un GPT es sólo ligeramente diferente al de una sesión normal de ChatGPT. Pero el nombre «GPT» implica que estás creando un nuevo modelo LLM. Es como si yo dijera que he creado un nuevo tipo de coche pegando una pegatina en el parachoques de un Toyota Prius.

Así que «GPT» es una especie de nombre engañoso y complaciente. Pero esa es la menor de mis quejas.

Token Furnace

Los GPT requieren el uso de GPT-4. Eso en sí mismo no debería ser un problema para un usuario con una cuenta de pago como yo. Pero hay algo extra que ocurre con los GPTs que hace que agoten mi asignación diaria de uso de GPT-4 de la capa de pago extremadamente rápido.

He hecho todas mis ediciones directamente en la pestaña «configuración» del portal OpenAI evitando herramientas como el GPT Builder, que a su vez utilizan tokens para construir avisos por ti. Esto parece ayudar un poco, pero no mucho.

Además, pensando en mis potenciales usuarios de GPT, no quiero que gastes todos tus tokens en 15 minutos en mi GPT.

En el momento de escribir esto, no hay soporte para ejecutar GPTs bajo el modelo GPT-3.5, que es más barato. Eso habría eliminado esta preocupación.

Otra cosa que ayudaría mucho es no requerir un LLM para manejar la lógica de la aplicación. Vamos a llegar a eso a continuación.

El uso de la ingeniería de prompts para manejar la lógica de la aplicación es una tontería

Puedes dar instrucciones detalladas a una GPT para que funcione como un software convencional. Los GPT pueden tener sistemas de menús, comandos de ayuda o máquinas de estado rudimentarias.
En una de mis GPTs, utilizo cierta lógica de aplicación para guiar a un usuario para que proporcione algunos datos para un ejercicio de rol en español. Después de que el usuario haya especificado qué tipo de situación le gustaría representar, puedes decir el comando palabra clave «empecemos» para que el GPT cambie a otro modo: el juego de rol propiamente dicho.

En el desarrollo de software convencional, se podría hacer lo mismo sin utilizar LLMs. Tal vez tendrías una variable «mode» y una sentencia de control de flujo «if…then» en algún lugar. Esto es algo trivial. Una gestión básica del estado de la aplicación como ésta se ejecutaría instantáneamente y sin alucinaciones en un Commodore VIC-20.

Los LLM también son capaces de manejar la lógica de la aplicación a través de su función de predicción de texto. En lugar de almacenar el estado en variables, se almacena en la propia sesión de chat (ventana contextual). Cada vez que un usuario de GPT introduce una nueva instrucción, el LLM procesa todo su historial de chat junto con la base inicial de instrucciones de GPT.

Poder utilizar un LLM como entorno de ejecución para la lógica de la aplicación es increíble. Realmente lo es. Pero desde el punto de vista de la arquitectura de software, usar un LLM para manejar la lógica de la aplicación es trágicamente estúpido:

  • Es un derroche computacional.
  • Es lento.
  • No es fiable.

Veamos con detalle:

  • Despilfarro computacional: utilizamos el tiempo de las GPU en los centros de datos para cargar la lógica de la aplicación en una ventana contextual en forma de texto lingüístico, codificarlo, transformarlo, ejecutarlo en una red neuronal y descodificarlo. Esto supone varios órdenes de magnitud más de cálculo del que realmente se necesita.
  • Lentitud: El encanto de ver cómo el texto se dibuja lentamente en la pantalla como un sistema de tablón de anuncios en línea de los años 80 desaparece rápidamente. Este retraso es aceptable cuando la GPT está haciendo algo que sólo se puede hacer con un LLM, como simular una conversación en español con un taxista. Pero no para la interfaz de usuario básica y la funcionalidad de la aplicación.
  • Poco fiable: La naturaleza aleatoria de la IA generativa significa que cada consulta tiene una probabilidad demasiado grande de equivocarse en la lógica de la aplicación. «Alucinaciones», lo llaman. Y de nuevo, esta falta de fiabilidad es aceptable para hacer algo que sólo se puede hacer con un LLM. Pero si estás manejando una tarea como «muéstrame los comandos disponibles para esta GPT», la forma convencional no LLM de codificarlo va a ser 100% determinista y ampliamente preferible.

Lo bueno

Probablemente debería equilibrar mi crítica reconociendo las características de GPT que son interesantes o útiles.

  • Acciones: Aún no he probado las «acciones», pero entiendo cómo deberían funcionar y veo su potencial. Puedes hacer recuperación-aumentada-generación (RAG) con estas acciones en GPTs. No es poca cosa.
  • Reutilización práctica de los fundamentos de los avisos: También me he dado cuenta de que es bueno volver a ciertas bases. Y una característica como GPTs para acceder fácilmente a ellos dentro del portal ChatGPT es bienvenida. Tengo algunos GPTs personalizados para mi propio uso. Podría guardar mis bases en un documento de Word y pegarlas. Pero me gusta tener un icono rápido para hacer clic en su lugar.
  • Tienda GPT: Algunos desarrolladores se han tomado en serio lo de ganar dinero con sus GPTs desde la GPT Store. Tengo dudas de que este sea un buen enfoque comparado con otros. Pero tal vez hay espacio para hacer algo de dinero rápido en GPTs de pequeño esfuerzo – difícil de decir.
    Compartibilidad: Tener un enlace compartible a una GPT también es bueno. De hecho, ésta podría ser la mejor característica de las GPT. Porque permite a un desarrollador publicar software basado en OpenAI sin tener que pagar costes de alojamiento. Ese fue el aspecto de las GPT que me convenció para probarlas.

Pero al final, los GPTs son demasiado simples para tomármelos en serio.

Lo que sería genial tener en su lugar

Siento a alguien escribiendo esto en los comentarios…

Amigo, sólo tienes que obtener una clave de API y llamar al punto final REST para OpenAI. Luego puedes escribir tu lógica de control como quieras. Usa tu lenguaje favorito, proveedor de hosting, etc.

Absolutamente. De hecho ya lo he hecho.

Pero quería una manera de lanzar una aplicación basada en LLM en la que no tuviera que preocuparme por los costes de alojamiento. Hay toda esa gente que ya tiene cuentas OpenAI, muchas de ellas de pago. ¿Por qué no puedo darles mi aplicación basada en LLM? Los usuarios ya tienen cubiertos los costes de alojamiento. Y desde el punto de vista de OpenAI, mi aplicación debería servir como incentivo para que la gente obtenga cuentas OpenAI y las mantenga.

Otra posible solución es pedir a estos usuarios que introduzcan una clave API. Pero eso es engorroso y potencialmente inseguro. Engorroso, porque los usuarios tienen que encontrar la opción en su pantalla de configuración para generar una clave de API. Potencialmente insegura, porque la clave API puede verse comprometida por código malicioso que se ejecute en la aplicación web y en otros lugares.

Este es un problema resuelto para muchas otras empresas. Simplemente proporcionan una API basada en OAuth.

Así, por ejemplo, si quiero crear una aplicación web nueva que utilice la API de Spotify, puedo implementar el flujo de trabajo de OAuth. Un usuario con una cuenta de Spotify visita mi aplicación web, y mi aplicación puede redirigirlo brevemente a Spotify para autenticarse/autorizarse. Esas credenciales de usuario nunca se comparten conmigo porque Spotify gestiona la interfaz de usuario de inicio de sesión desde su sitio web. Una vez autenticado, Spotify devuelve al usuario a mi sitio web junto con un token de acceso. Mi aplicación web puede pasar ese token de acceso a las API de Spotify.
Me parece que alguien ha escrito esto otro en los comentarios…

En realidad, OpenAI tiene soporte OAuth.

Sí, en el momento de escribir esto, tienes soporte de consumidor OAuth para GPTs que llaman a través de acciones. (¡Genial!) Pero estoy hablando de soporte de proveedor OAuth que permitiría que el código que se ejecuta fuera del portal OpenAI llame a su API utilizando cuentas de usuarios OpenAI.

RantConcluido

Es abril de 2024 cuando escribo esto. Las cosas cambiarán. La relevancia de mis observaciones desaparecerá.

Al final, he llegado a la conclusión de que las GPT son decentes para uso personal en algunos casos, pero una mala elección para crear aplicaciones serias o incluso demos que quieras compartir con otras personas. Vale la pena jugar un poco con las GPT. Pero yo no elegiría esa plataforma para invertir más de una tarde de domingo aprendiendo.

Tengo otra forma de hacer una aplicación LLM de coste de alojamiento cero para probar a continuación – LLMs locales. Estoy jugando con Ollama y WebLLM. Los modelos no son tan buenos como GPT-4. Pero me encanta la cantidad de control que tengo sobre la aplicación. La privacidad para el usuario es maravillosa. Y un navegador es una buena caja de arena para que los agentes permanezcan seguros dentro.

Y no tendré que llamar a mi aplicación… (suspiro) «GPT».

Créditos de las imágenes

Todas las imágenes generadas con Midjourney utilizando la nueva función de referencia de personajes basada en mi arte de referencia, que también puedes utilizar.

Únete al boletín del Generador

Deja una respuesta

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