May 12, 2023

Probamos GPT para gestionar proyectos de Telecomunicaciones y desilusionó (por ahora...)

Déjame primero aclarar que este artículo probablemente quede obsoleto en meses, o quizás días! Considerando los enormes avances de nuestros amigos en OpenAI, AWS, Google, etc.

La semana pasada en Sytex hicimos un Hackweek donde típicamente tomamos un tema y lo trabajamos entre todos. La idea es aprender qué nos permite hacer una tecnología e intentar sumarla a nuestro producto. Hace ya un tiempo que veníamos con ganas de ver qué se puede hacer con ChatGPT/GPT3,5/4 por lo que lo agendamos y nos pusimos a trabajar con muchísimas expectativas.

Veníamos con ideas de utilizar la AI para armar reportes tales como "Cuál es el sitio con menos problemas de mantenimiento?", o "Cuántas instalaciones tengo para hacer en Manaos?". Además pensamos en que podría ayudar a simplificar la búsqueda de información, recomendar actividades habituales y varias cosas más.

Para nuestra sorpresa, nos encontramos muy rápidamente con complicaciones que, por el momento, dificultan la aplicación de AI en una plataforma de gestión de actividades como Sytex. Estos problemas son:

  1. GPT es (muy) caro.
  2. GPT es leeento.
  3. No es posible dar contexto (de forma barata)
  4. GPT no recuerda nada.

A continuación repasaremos cada uno de estos puntos.

Pero antes!

Cómo funciona la API de Open AI

GPT es un LLM: Large Language Model, es decir, su inteligencia radica en adivinar palabras a responder ante una pregunta. Adivinar consiste en un juego de probabilidades donde considera la pregunta, el contexto, su entrenamiento, etc., y propone texto. Esto es fantástico e increíble, pero no es, por el momento, una inteligencia que interprete o entienda realmente la pregunta que uno le está haciendo.

A resumidas cuentas, si le pides que haga un cuento sobre Messi escrito por Shakespeare, busca palabras y estructuras que típicamente vió en textos de Shakespeare, y lo mezcla con textos que típicamente son un cuento, sobre el más grande del mundo.

Lo primero a saber de la API es que todo funciona por medio de texto, igual que ChatGPT. Uno no le envía parámetros sino que debes enviarle un prompt (texto descriptivo) con lo que quieras que haga. El truco es armar ese texto de la mejor forma posible para ir evitando comportamientos indeseados. Esto ya lo conocemos por ChatGPT, pero también la API funciona de la misma manera.

Por otro lado, es posible guiar a GPT con la acción específica que queremos que haga ante el pedido de un usuario. Para esto se debe definir un "System Prompt" que describe qué debe hacer GPT con lo que el usuario le solicite. Es un Prompt más, pero oculto para el usuario.

Por ejemplo, un System Prompt sería: "El usuario enunciará una serie de datos que quiere buscar y tu tendrás que indicarme qué filtros de Sytex debemos utilizar. Los filtros posibles son x, y, z..",

Ante el pedido de un cliente por medio de texto, por ejemplo:

"Quiero ver todas las tareas completadas la semana pasada en el proyecto X"

GPT le responderá a la API con: "El usuario quiere utilizar los siguientes filtros...".

Por eso mejorar el System Prompt es clave para que GPT nos responda exactamente como queremos. En este caso, el System Prompt podría ser: "El usuario enviará un pedido de información que quiere buscar y tu tendrás que indicarme qué filtros utilizar en Sytex, SIN EXPLICACION", para lo cual nos responderá con "Completion_date = last_week; Project=X"

Aquí la primer alarma, ChatGPT es excelente armando textos nuevos, pero no parece ser ideal para resultados precisos u ordenes, que es lo que esperamos típicamente en cualquier plataforma de trabajo.

Ahora si, con los problemas:

1- GPT es (muy) caro

Cada llamada a la API de OpenAI genera un costo el cual depende de, entre otras cosas:

  • El modelo que utilizas (gpt3,5, 4, etc)
  • La cantidad de información que le envías
  • El ajuste, o fine tunning, del modelo

Este costo es para nada despreciable cuando tienes muchos usuarios. Por lo cual, pensamos, si lo vamos a usar, que sea por una funcionalidad increible para nuestros usuarios, una por la que realmente valga la pena el costo.

Le pedimos a ChatGPT que explique mejor la estructura de costos, utilizando la llamada a la API más pequeña que hicimos en estos días y lo resumió así:

Primero, calculemos el costo de cada tipo de token en dólares americanos:

Prompts de ChatGPT-4: 360 tokens * ($0.03 / 1000 tokens) = $0.0108

Completions: 168 tokens * ($0.06 / 1000 tokens) = $0.01008

Text-embedding-ada-002-v2: 22 tokens * ($0.0004 / 1000 tokens) = $0.0000088

Ahora, sumemos los costos de los tres tipos de tokens:

$0.0108 + $0.01008 + $0.0000088 = $0.0208888

El costo total en dólares americanos es de aproximadamente $0.0209.

Por lo tanto, la consulta a la API de ChatGPT-4 que consumió 550 tokens con los costos especificados representa aproximadamente $0.0209 en dólares americanos.

2- GPT es leeeeento

Cada llamada a la API de GPT4 nos tardaba entre 7 y 15 segundos. Con GPT3,5 los tiempos mejoran sustancialmente, pero los resultados son menos exactos.

Si uno está necesitando que el AI optimice procesos o haga alguna tarea crítica, quizás estemos dispuestos a esperar ese tiempo, pero si es sólo una funcionalidad accesoria, como activar filtros de búsqueda, quizás optemos hacerlo nosotros mismos.

3-No es posible dar contexto (de forma barata)

Este fue, para mi, el punto que más me desilusionó. Uno esperaba que el modelo vaya aprendiendo de tus propios datos o procesos para proponer actividades o información en forma precisa e integral, pero no. O le envías un System Prompt muy largo, lo cual es super costoso, o haces lo que se llama "Fine Tunning" del modelo.

Fine Tunning es enseñarle al modelo respuestas que esperas recibir al hacerle una consulta. Allí el modelo aprende y responde con más contexto "tuyo".

El problema es que para hacer un buen fine tunning necesitas enviarle muchos datos, y esto, además de tener su costo, hace que cada consulta sea más cara!

Es decir, por usar tu propio modelo "finetuneado", GPT te cobra más caro.

Ergo, la idea de "Queremos que los usuarios pregunten cuál es el equipo con más carga de trabajo" no resulta posible, ya que deberíamos enviarle tantísima info que lo haría inviable a nivel costos. Resulta mejor entonces programar reportes configurables donde uno pueda filtrar y armar lo que necesite, sin AI.

Acá es donde más novedades van a haber en los próximos días/semanas/meses. GPT-4 soporta 30K tokens, que es bastante para los contextos que estábamos probando. El problema (ver  es que esos tokens de contexto se cobran, y bien. Pero también esperaríamos que el precio baje a medida que gane escala, y que se encuentren técnicas más eficientes de generación.

4-GPT no recuerda nada

A lo Memento, cada nueva interacción con GPT es un nuevo comienzo. No recuerda lo que se fue haciendo por el usuario, u otras cosas que ya haya hecho el mismo modelo para tí.

Cada nuevo pedido es una nueva aventura, y pierde valor si un usuario tiene que empezar de cero en cada uso. Una opción, claro, sería enviarle en cada nueva consulta tooodos los idas y vueltas que tuvo el usuario con la API, lo cual es posible, funcionaría, pero ya vimos que sería carísimo!

Algunas conclusiones

GPT es una herramienta increíble y mágica que nos ayuda a pensar, a generar textos (este lo escribí solo eh!), desarrollar ideas y mucho, mucho más.

Quizás este enfoque de LLMs no sea el que resuelva la necesidad de resultados consistentes, con el contexto específico de alguna industria o empresa. O quizás el ecosistema siga resolviendo estos temas y los próximos modelos sean más rápidos, eficientes y precisos.

Para que comencemos a ver AI colaborando con nuestra propia información creo que falta un tiempo aún. Cuánto tiempo? años? meses? días? no lo sabemos. Lo que sí sabemos, es que la AI llegó para cambiar el mundo y entre todos iremos viendo cómo hacer que nos potencie y mejore nuestras vidas.

Ahora que tenemos algo de experiencia habiendo usado y entendiendo mejor las capacidades y limitaciones de la herramienta, estemos atentos a encontrar esos casos de uso donde si podría ser un feature de Sytex útil para nuestros usuarios.