No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Introducción a Chains y LCEL

10/26
Recursos

LangChain Expression Language (LCEL) es una forma declarativa de construir y gestionar cadenas de procesos dentro de LangChain. Este enfoque simplifica la creación de flujos de trabajo complejos al permitir la combinación de diferentes componentes, como modelos de lenguaje, herramientas y parsers, en una secuencia lógica. Esta técnica es especialmente útil cuando trabajas con aplicaciones que requieren procesamiento de lenguaje natural, flujos asincrónicos o ejecución de múltiples tareas en paralelo.

1. Cadenas en LangChain

En LangChain, las cadenas (chains) representan una secuencia de pasos que se conectan entre sí, creando un flujo de procesamiento que puede incluir desde la generación de texto hasta la ejecución de operaciones complejas, como traducciones, búsquedas en internet o invocaciones de herramientas externas.

LCEL facilita la construcción de estas cadenas al ofrecer un lenguaje que conecta los distintos componentes usando una sintaxis clara, donde cada paso se une al siguiente mediante el uso de una barra vertical |. Esto permite que los desarrolladores estructuren flujos que combinen diferentes funciones, como el uso de un Prompt Template para definir las instrucciones y un Large Language Model para generar respuestas.

2. Soporte para Características Avanzadas

LCEL no solo se limita a encadenar componentes, sino que también soporta características avanzadas, como:

  • Streaming: Permite que las respuestas se generen de manera progresiva, tal como ocurre en plataformas de generación de texto como ChatGPT. En lugar de recibir una respuesta completa al final, el texto se despliega letra por letra o palabra por palabra, mejorando la experiencia del usuario al hacerla más interactiva.
  • Ejecución paralela y asincronía: LCEL es capaz de ejecutar múltiples tareas al mismo tiempo, lo cual es útil cuando necesitas realizar varias consultas o procesos en paralelo, optimizando el rendimiento y reduciendo el tiempo de espera.
  • Trazabilidad con LangSmith: LangSmith ofrece herramientas para hacer un seguimiento detallado de cada paso de una cadena, lo que facilita la depuración y mejora la visibilidad de cómo los datos fluyen a través del sistema.

3. Estructura de una Cadena con LCEL

La estructura básica de una cadena en LCEL consiste en conectar diversos elementos como prompts, modelos de lenguaje y parsers. Un ejemplo típico puede incluir un Prompt Template para generar instrucciones, un Large Language Model para procesar el texto, y un Output Parser para formatear la salida de manera más útil.

En el ejemplo proporcionado, se construyó una cadena para traducir un texto utilizando un Prompt Template que indicaba al modelo qué hacer (traducir una palabra), seguido de un Output Parser para convertir la respuesta en un formato adecuado (en este caso, texto plano).

Esta cadena se define uniendo los componentes de la siguiente manera:

  • Prompt Template: Se encarga de estructurar la petición que se le hará al modelo, como “traducir una palabra a otro idioma”.
  • Large Language Model: Procesa la solicitud y genera una respuesta. En el caso de traducciones, esto podría ser GPT-4 o cualquier otro modelo de lenguaje.
  • Output Parser: Mejora la salida, formateando la respuesta en el formato deseado (en este caso, un string con la traducción).

4. Output Parsers

Los Output Parsers son una herramienta clave para refinar la salida generada por el modelo. Estos parsers se encargan de tomar la respuesta del modelo y darle un formato adecuado antes de devolverla al usuario. Existen diferentes tipos de parsers según el tipo de salida que necesites:

  • String Output Parser: Convierte la salida en una cadena de texto simple.
  • JSON Parser: Convierte la respuesta en un formato estructurado como JSON, lo cual es útil cuando se requiere una salida más detallada y organizada.
  • Custom Parsers: También puedes crear parsers personalizados que adapten la salida a las necesidades específicas de tu aplicación.

Los parsers juegan un papel crucial cuando necesitas garantizar que la respuesta siga un formato consistente, como en tareas de traducción, resumen o clasificación.

5. Añadiendo Streaming a la Cadena

El streaming es una funcionalidad que añade dinamismo a la interacción, mostrando la respuesta generada de manera progresiva en lugar de presentarla completa al final. Esto mejora la experiencia del usuario, haciendo que la interacción sea más fluida y parecida a una conversación en tiempo real. Implementar streaming en LangChain es una forma de hacer que las respuestas sean más interactivas, especialmente útil en aplicaciones conversacionales o en chatbots.

6. Aplicaciones de LCEL

LangChain Expression Language puede ser aplicado en una variedad de casos, desde aplicaciones simples como chatbots, hasta flujos de trabajo más complejos que integran múltiples herramientas. Algunos ejemplos incluyen:

  • Asistentes Virtuales: Al combinar prompts, modelos de lenguaje y herramientas externas, puedes crear un asistente que procese información, realice consultas en internet, y responda a preguntas en tiempo real.
  • Traducción Automatizada: Utilizando un prompt template, un modelo de lenguaje, y un parser, puedes construir un sistema que reciba texto en un idioma y lo devuelva traducido automáticamente a otro.
  • Aplicaciones Multitarea: Gracias a la ejecución paralela y asincrónica, puedes crear aplicaciones que realicen múltiples tareas simultáneamente, como buscar información en varias bases de datos a la vez, o consultar distintas APIs de manera eficiente.

LangChain Expression Language es una herramienta poderosa y flexible que simplifica la construcción de cadenas complejas en LangChain. Su sintaxis declarativa permite integrar múltiples componentes en un flujo continuo, lo que mejora la capacidad para crear aplicaciones avanzadas que aprovechan lo mejor de los modelos de lenguaje y herramientas externas.

LCEL facilita el manejo de tareas avanzadas como la traducción automática, el procesamiento de texto y la ejecución en paralelo, ofreciendo una solución ideal para quienes buscan optimizar el rendimiento y la precisión de sus aplicaciones. Con características como streaming y trazabilidad, LangChain ofrece un marco completo para desarrollar aplicaciones inteligentes y escalables.

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

![](https://www.plantuml.com/plantuml/png/TPF1RXmt38RlUWeYlII67Q1kMWG-545SRz32Reok-m3qY1xBqKWJIZBY57cO7dlshTTziLBIZZox7Tk77Ka_gP-Vo7SX8iSqM1K-6JSYum1CNKJNMuA_5CZVU-m-zUoJqwVUUeRlVldXx7ZrOpbRUHVhxhKLMTLxriHRxPkVtXw_VzEqQ_ELuFlPEZvOWcjljVgcPXwSZyzUlteh_wldhrgqDR_-ED-5NPJZFqD2Dbwffw9VdCjlTul6mTcNaIa4untapOGzlG0Cq1HRYxFWqxmTYgeembQo9xjaFumHhcWOBSQQDMuNI_fpv9wQ2RZmccm9idPOqdzCSKmHBf43SH6EvND9kuvCE1ZN5rsOLaNwBQFQGeAZevzdfP-0535wxWGF0hd8g56f9YZoog1gEme8TYQjXrdNQXVbcJX8NKmy5yil90StdWUC7b1Jbr1xrU8aIMQHRyAm4uaMXepBWoQmb0dUaL9Pd8Cg5udxG8uOuG7mBeLOKWIqHenMIL4tEjcekpT5nXJ6H3b6KxK88_jUjiqzmiiMyqgfzbsoJM1Fu0-AdjqibL9b1DZqjn7ypRmv3WxskkVWu4IsZs1DaAAnvYlcgX2eaUGPaDT5U-h5FN6aV69SSTsPpQC3GGMf6jkZ_ZaHq19D4C-o7EiRSxrX9VcigI0xffOTZ2k-SjzGWCuYOtYjoEaozTl2BTtakcj_IybB0m0lpyylNatLN_pVLgwO76fVUVJbXVa9SgXEBulx_CGfD75cbRfY-X3GRVws9fYGqqVw4lqXF80NJO28J7dQlJm6tKqvhnYlyGvbsysRyG4dIXftJQNvwqyDZljSMaEqUHOsEyC-uLYLHwEbXWRTNh6QFGkm-JSQMns9vNlYQ7YdjnTw8H2MifbSCDUMQlXJ-spf4WycqWBzd5AR6vBuI65A7GvpKbynWuVVrXz_VxOzsZmL4EjfDK7OplJ-Z0ues_CXhKxNPZ0M6H2wpQCu29DfjsSw6Xf6Bvjeyp8GtvlE-52DdzvY_71vLNF-gWadhXX4ehqhpGPCdvCXfhsN5_hHk5HuszGZPyDoMjZTOfPazj7h-OjAwEOVi4QEvwpUoMSQhFeF) **Langchain Expression Language** es una forma declarativa y optimizada para crear secuencias de componentes (chains) en Langchain. Estas cadenas permiten ejecutar modelos, herramientas o procesamiento de datos de manera secuencial, con soporte para streaming, ejecución paralela, asincronía y trazabilidad mediante Langsmith. Este lenguaje permite construir procesos encadenados, como el uso de un large language model (LLM) o prompt templates, facilitando la creación de aplicaciones complejas. Las cadenas también pueden integrar parsers que mejoran la salida, como un output parser que formatea la respuesta. Además, es posible agregar funcionalidades como **streaming**, que genera respuestas progresivas, permitiendo que el texto se construya en tiempo real.
fyi: Para calcular cuanto has gastado o proyectar cuanto vas a gastar en un proyecto para un cliente, puedes hacer el siguiente calculo corres tu modelo, con la variable accedes a `.usage_metadata` y usas la siguiente formula **Cost = (Total Tokens Used / 1000) \* Cost per 1000 Tokens** que para mi fue $0.002 por 1000 tokens para 'gpt-3.5-turbo' - 22/10/2024 Es decir que aproximadamente me gastare **0.00009 USD** por cada cliente que me consulte ![](https://static.platzi.com/media/user_upload/Screenshot%202024-10-22%20at%2010.37.05PM-be01a757-9d82-4776-a0ce-b223c8743604.jpg)
LangChain es una plataforma de inteligencia artificial que se enfoca en la generación de texto, pero también ofrece otras opciones para generar cadenas de caracteres, aparte del texto. Algunas de estas opciones incluyen: 1. Audio: LangChain puede generar audio a partir de patrones, temas o ideas. Esto lo hace ideal para aplicaciones que requieren contenido auditivo, como podcasts, narraciones o música generada por computadora. 2. Imágenes: LangChain puede generar imágenes a partir de patrones, temas o ideas. Esto lo hace ideal para aplicaciones que requieren contenido visual, como generación de arte, diseño de gráficos o creación de contenido de redes sociales. 3. Vídeos: LangChain puede generar videos a partir de patrones, temas o ideas. Esto lo hace ideal para aplicaciones que requieren contenido visual y auditivo, como creación de contenido de YouTube, TikTok o Vimeo. 4. Música: LangChain puede generar música a partir de patrones, temas o ideas. Esto lo hace ideal para aplicaciones que requieren contenido musical, como generación de canciones, creación de música para videojuegos o creación de música para eventos. 5. Datos: LangChain puede generar datos a partir de patrones, temas o ideas. Esto lo hace ideal para aplicaciones que requieren contenido numérico, como generación de datos para análisis de mercado, creación de datos para simulaciones o creación de datos para modelado de comportamiento. 6. Código: LangChain puede generar código a partir de patrones, temas o ideas. Esto lo hace ideal para aplicaciones que requieren contenido programático, como generación de código para aplicaciones móviles, creación de código para sitios web o creación de código para sistemas de automatización.
Un **parser** en el contexto de **Large Language Models (LLMs)** es un componente o técnica que interpreta y procesa la respuesta generada por el modelo para estructurarla, validarla o convertirla en un formato específico. Los parsers permiten transformar la salida generada por el modelo en algo más útil y manejable, como un objeto JSON, una tabla, o datos que puedan ser usados directamente en código o en otras aplicaciones.
:o Otra forma de cadena es llamar a otro modelo, en base al ejemplo de la profe se puede añadir la siguiente instrucción con donde llamamos otro modelo ``` ## Declaramos otro modelo llm\_generate = ChatOpenAI(model='gpt-3.5-turbo') Le damos las instrucciones que queremos darle al modelo generate\_prompt = PromptTemplate(input\_variables=\["topic"], template="Escribe un breve ejemplo sobre la traducción {topic}") Y lo agregamos a la cadena SimpleParallelChain ```