En el artículo anterior, “Entendiendo el ecosistema IA: los LLM y las diferencias con GPT (I)”, hablábamos de la situación actual de la IA generativa, de los LLMs y los modelos GPT.
Una vez entendidos los conceptos y las diferencias que existen entre ellos, no es descabellado afirmar que dentro de las IAs generativas y a pesar de sus limitaciones, los modelos GPT han llegado para quedarse.
Como expert@s en el sector, entender cómo programar este tipo de soluciones nos dará una pista acerca de cuál es mejor en cada caso que se nos presente: hay veces que son los modelos Open Source (si es una solución personalizada y con un proyecto a largo plazo y con alto volumen de peticiones) y otras en las que las soluciones rápidas de implementar capaces de escalar por el uso son las que mejor van a funcionar.
Es por eso que a lo largo del artículo examinaremos las diferentes opciones, las recomendaciones y los costes derivados de cada una.
Uso de la API en OpenAI
El proceso de generación se implementa a través de una interfaz denominada completions. Desde una entrada en prompt (donde se programa el uso del modelo), se genera el resultado en los completions.
Esto se puede configurar con una serie de parámetros que permiten modular el modelo, la temperatura o la rigurosidad de la respuesta. Si por el contrario no nos convence ningún modelo existente, Open AI ofrece la posibilidad de usar los finetunings, que permiten crear un modelo ad-hoc definiendo un set de preguntas y respuestas.
Sin embargo, hay que tener cuidado porque el coste de los finetunings es significativamente más alto (x14 veces) que el uso del API con modelos existentes.
Uso de plugins
Los plugins de OpenAI conectan ChatGPT a aplicaciones de terceros y permiten a ChatGPT interactuar con APIs definidas por desarrolladores mejorando las capacidades de ChatGPT y permitiéndole realizar una amplia gama de acciones.
Por ejemplo, si un usuario pregunta: «¿Dónde debería alojarme en París un par de noches?», el modelo puede optar por llamar a la API de un complemento de reserva de hoteles, recibir la respuesta de la API y generar una respuesta dirigida al usuario combinando los datos de la API y sus capacidades de lenguaje natural.
Azure OpenAI
Azure OpenAI Service proporciona acceso mediante la API REST a los eficaces modelos de lenguaje de OpenAI, incluidas las series de modelos GPT-3 (GPT-4 recientemente), Codex y Embeddings. Estos modelos se pueden adaptar fácilmente a su tarea específica, entre las que se incluyen, entre otras, la generación de contenido, el resumen, la búsqueda semántica y la traducción de lenguaje natural a código.
La parte «mala» de esta opción es que el acceso está actualmente limitado. Por ahora, se trabaja con clientes que ya están asociados a Microsoft con casos de uso de menor riesgo y con aquellos que se han comprometido a incorporar mitigaciones.
Costes
Los costes asociados al uso de este tipo de IAs se basan en un modelo de pago por uso en función del número de ejecuciones (que incluyen el envío del prompt y su respuesta asociada) que se realicen, normalmente vía API REST.
Habitualmente existen herramientas de cálculo de costes estimados en base a la volumetría de las ejecuciones, así como sistemas de control de costes asociados. Por ejemplo, en la API de OpenAI se pueden configurar hard limit/soft limit (lo cual deriva en un corte o advertencia respectivamente) y existe un dashboard de monitorización de uso y costes, mientras que en Azure Open AI sólo existe un dashboard de monitorización de uso y costes.
LangChain
LangChain es un framework Open Source de Phyton y JavaScript para el desarrollo de aplicaciones basadas en modelos lingüísticos que permite poner una capa por encima para programar sobre cualquier API. De esta forma, podemos generar «mini agentes virtuales» para facilitar nuestros desarrollos salvando limitaciones de los modelos (BBDD vectoriales, diferentes modelos integrables desde una misma interfaz…).
Las aplicaciones más potentes y diferenciadas no sólo llamarán a un modelo lingüístico a través de una API, sino que también conectan un modelo lingüístico a otras fuentes de datos y permiten que este modelo interactúe con su entorno.
Un ejemplo típico de uso de esta librería es la gestión de información de negocio que no está en el modelo. En estos casos, podemos utilizar LangChain para cargar un documento en el contexto de la conversación y usar toda la potencia del LLM sin indexar información de negocio y cliente en el modelo. Así, se podrán hacer preguntas sobre cierto documento sin necesidad de usar los finetunings.
¿Por qué es importante conocer todo esto?
A la hora de programar este tipo de soluciones, es importante no solo entender el API, sino las propias limitaciones con las que el modelo cuenta y cómo solventarlas. Hay veces en las que, ya sea por el caso de negocio u otras cuestiones, solo os interesa utilizar el API que proveen Azure OpenAI, OpenAI y otros servicios.
Sin embargo, en otras ocasiones este tipo de soluciones se quedan «cortas», por lo que es importante entender también cómo complementarlas de la forma más eficiente posible para no incurrir en costes innecesarios ni depender de un único modelo sobre el que no tenemos el control.
En el siguiente artículo de la serie, indagaremos hablaremos de algunas aproximaciones para intentar salvar las limitaciones que comentábamos en “Entendiendo el ecosistema IA: los LLM y las diferencias con GPT (I)” mediante agentes autónomos.