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:
- Definir una plantilla con variables (
{}) - Crear una instancia de prompt
- Conectar componentes con
| - Ejecutar la cadena con inputs
El núcleo: el operador de tubería (|)
El operador | Conecta componentes en secuencia.
prompt | modelo | parser- Se construye el prompt
- Se envía al modelo
- 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 → SalidaEn LCEL:
paso1 | paso2Ejecució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 | parserQué ocurre
- Una función formatea el prompt (RunnableLambda)
- El modelo genera la respuesta
- 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-procesadoEsto 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.