Este framework ha mejorado significativamente la calidad de las aplicaciones de LLMs, facilitando la creación de cadenas de prompts de alta calidad de manera automática vía programación.
DSPy es un framework para optimizar algorítmicamente los prompts y los pesos de modelos de lenguaje (LM), especialmente cuando los LM se utilizan una o más veces dentro de un pipeline.
El artículo que les presento es "A Guide to Large Language Model Abstractions", escrita por expertos de Carnegie Mellon, Stanford, y Berkeley. El artículo presenta el Language Model System Interface Model (LMSI), una nueva abstracción de siete capas inspirada en el modelo OSI.
Este modelo organiza y estratifica los frameworks orientados en trabajar con los modelos de lenguaje (como LangChain, LlamaIndex, etc) en capas. Las capas se ordenan desde la más alta hasta la más baja en términos de nivel de abstracción:
7. Capa de Red Neuronal: Acceso directo a la arquitectura y pesos del LM.
6. Capa de Prompting: Entrada de texto a través de API u otras interfaces.
5. Capa de Restricción de Prompting: Imposición de reglas o estructuras en los prompts.
4. Capa de Control: Soporte de flujo de control como condicionales y bucles.
3. Capa de Optimización: Optimización de algún aspecto del LM o del sistema de LMs basado en una métrica.
2. Capa de Aplicación: Bibliotecas y código de aplicación que proporcionan soluciones configurables.
1. Capa de Usuario: Interacción directa con el usuario para realizar tareas impulsadas por LM.
Por ejemplo, al observar la imagen, LangChain incide en las capas: Capa de Prompting, Capa de Restricción de Prompting, Capa de Control y Capa de Aplicación.
El framework DSPY destaca especialmente en la capa de optimización, siendo el único mencionado que optimiza automáticamente las cadenas de prompts, mejorando significativamente la calidad de las aplicaciones de LLMs. Esto es algo realmente impresionante, optimiza el promting.
Para aquellos interesados en el futuro de la programación y el procesamiento de lenguaje natural, esta guía proporciona una estructura clara y comprensible para el desarrollo y la optimización de frameworks de LMs.