Etiqueta: IA Agentica

  • Método LCEL en LangChain

    Después de ver los componentes de LangChain. Ahora toca entender cómo se conectan realmente para construir aplicaciones. Aquí entra el LangChain Expression Language (LCEL): el enfoque moderno y recomendado para diseñar flujos de trabajo con LLMs.

    Construir una cadena con LCEL

    LCEL es un patrón de construcción que permite conectar componentes mediante el operador de tubería (|). Es una forma declarativa de construir pipelines donde los datos fluyen de un componente a otro de forma explícita y legible.

    LCEL aporta:

    • Mayor componibilidad
    • Flujo de datos más claro
    • Más flexibilidad
    • Código más mantenible

    Un flujo típico sigue estos pasos:

    1. Definir una plantilla con variables ({})
    2. Crear una instancia de prompt
    3. Conectar componentes con |
    4. Ejecutar la cadena con inputs

    El núcleo: el operador de tubería (|)

    El operador | Conecta componentes en secuencia.

    prompt | modelo | parser
    1. Se construye el prompt
    2. Se envía al modelo
    3. Se procesa la salida

    Runnables: las piezas básicas

    En LCEL todo se basa en runnables. Estas son interfaces que permiten que cualquier componente sea conectable dentro de un pipeline. Ejemplos:

    • Modelos (LLM)
    • Funciones
    • Parsers
    • Recuperadores

    Tipos de composición

    Ejecución secuencial (RunnableSequence)

    Cada paso depende del anterior:

    Entrada → Paso 1 → Paso 2 → Salida

    En LCEL:

    paso1 | paso2

    Ejecución paralela (RunnableParallel)

    Un mismo input se procesa en múltiples ramas al mismo tiempo.

    {
      "summary": tarea1,
      "translation": tarea2,
      "sentiment": tarea3
    }

    Coerción automática de tipos

    Una de las grandes ventajas de LCEL. Es que convierte automáticamente:

    • Diccionarios → RunnableParallel
    • Funciones → RunnableLambda

    Por lo que no necesitas crear manualmente cada componente.

    Ejemplo completo: pipeline simple

    Caso: generar un contenido:

    formatear_prompt | modelo | parser

    Qué ocurre

    1. Una función formatea el prompt (RunnableLambda)
    2. El modelo genera la respuesta
    3. El parser limpia o estructura la salida

    Ejemplo: procesamiento paralelo

    Entrada:

    "El producto es bueno pero llegó tarde"

    Pipeline:

    {
      "summary": prompt1 | modelo,
      "translation": prompt2 | modelo,
      "sentiment": prompt3 | modelo
    }

    Resultado

    • Resumen
    • Traducción
    • Sentimiento

    Todo en una sola ejecución.

    Flujo interno de datos

    LCEL hace explícito el flujo:

    Input → Transformación → Modelo → Output → Post-procesado

    Esto mejora:

    • Debugging
    • Escalabilidad
    • Control

    Ventajas clave de LCEL

    • Claridad: El flujo se entiende leyendo el código.
    • Reutilización: Puedes crear componentes reutilizables y pipelines estándar
    • Flexibilidad: secuencias, paralelismo y transformaciones
    • Capacidades avanzadas: LCEL permite ejecución paralela, soporte asíncrono, streaming y trazabilidad automática

    Cuándo usar LCEL

    Ideal para:

    • Flujos de prompts
    • Automatización de tareas
    • Sistemas modulares
    • Procesamiento de texto

    No ideal para:

    • Flujos con lógica compleja (condicionales, estados, etc.). En ese caso, usar: LangGraph. Pero LCEL sigue siendo la base dentro de cada nodo.