Rubén Balbastre

El rincón de los Assistant

Mayo de 2024

Los grandes modelos de lenguaje natural (Large Language Models, LLM) han invadido las noticias en los últimos años. La arquitectura transformer[1], sólo relevante en el mundo académico, fue publicada en 2017. Posteriormente, los diferentes modelos GPTs fueron tomando popularidad hasta la llegada de su interfaz en forma de chat conocida como ChatGPT en 2023, que revolucionó al gran público. Sin embargo, hace unos pocos meses se dotó a estos modelos de unas capacidades extra que potencian enormemente sus casos de uso y no todo el mundo ha advertido. Hablamos de las Functions de los Assistant de OpenAI (posteriormente diferentes plataformas open-source incorporaron estas funcionalidades).

Un Assistant es un modelo LLM dotado de un contexto fijo y ciertas habilidades que lo diferencian de un chat genérico. Destacan la capacidad de ejecutar código, aceptar ficheros de entrada de diferente formato y utilizar Functions.

Más de alguno de los lectores de esta newsletter habrá vivido en primera persona la aleatoriedad de las respuestas de los grandes modelos de lenguaje. Como se suele decir, “depende del prompt”. Pero, si queremos industrializar esta solución no podemos esperar que un usuario no técnico sepa exactamente cómo realizar prompt engineering porque no es su especialidad. Su intención es interactuar con lenguaje “natural” y es por ello por lo que no podemos siempre confiar en sus habilidades. Si no podemos establecer un patrón de comportamiento fijo frente a un tipo de respuestas, ¿cómo lo solucionamos? Podríamos realizar fine-tuning para solucionar algunos casos, pero aún puede resultar complicado en muchos otros. Entonces, ¿cómo salir de esta encrucijada? Aquí, surgen las Functions.

Una Function es un trozo de código que debe ser ejecutado cuando el usuario pregunta sobre cierto tema u ordena cierta acción a realizar. Por ejemplo, si preguntas qué tiempo va a hacer mañana, un chat genérico podría responderte en base al conocimiento que tenga de datos históricos, pero parece difícil que su respuesta sea útil. Lo lógico, sería que lo buscara en la web de aemet.es o alguna fuente de referencia fiable. Entonces, ¡hagamos eso! Si te piden que hagas una predicción sobre las ventas de tu compañía, ejecuta un código de predicción ya programado y lee sus resultados para darle una respuesta adecuada; si te piden que leas de una base de datos, lee; si te piden que escribas un registro, escribe. En definitiva, si te piden que hagas algo, “no improvises”, haz algo en concreto y “sé determinista”. Evidentemente, nunca eliminaremos la aleatoriedad pues para ejecutar una Function debe de relacionarse un prompt con la descripción de la Function pero sí podemos limitarla enormemente.

Con estas nuevas características, se dotan de más herramientas a los agentes para que logren automatizar más tareas y permitan mejorar la productividad de los empleados que se enfrentan a tareas repetitivas o que necesitan de un intermediario técnico para su ejecución. No obstante, pese a que queda un largo camino a recorrer en muchos aspectos estos simples elementos aquí descritos posibilitan ya infinidad de casos de uso.

[1] Attention is All You Need. [1706.03762] Attention Is All You Need (arxiv.org) [2] Assistants OpenAI. API Reference - OpenAI API