Método LCEL en LangChain

Escrito por

en

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.