¿Qué es LangGraph?
Aprende qué es LangGraph, cómo se compara con LangChain, y por qué los grafos de estado son el futuro de la construcción de agentes de IA.
¿Qué es LangGraph?
LangGraph es un framework para construir aplicaciones de IA basadas en estado y multi-actores. Piensa en ello como un motor de grafo donde cada paso de tu flujo de trabajo de IA es un nodo, y las conexiones entre pasos son aristas.
LangChain vs LangGraph
| Aspecto | LangChain | LangGraph |
|---|---|---|
| Paradigma | Pipeline lineal | Grafo cíclico |
| Estado | Efímero (pipe-through) | Persistente, compartido |
| Flujo de control | Secuencial fijo | Condicional, dinámico |
| Bucles | No soportados | Soportados (ReAct) |
| Caso de uso | Prompts simples, chains | Agentes, flujos complejos |
# LangChain: pipeline lineal
chain = prompt | llm | output_parser
# LangGraph: grafo con estado
builder = StateGraph(State)
builder.add_node("agent", agent)
builder.add_node("tools", execute_tools)
builder.add_conditional_edges("agent", should_continue, {"continue": "tools", "end": END})¿Por qué usar un Grafo?
Los flujos de trabajo del mundo real rara vez son lineales. Un agente típico necesita:
- Recibir entrada del usuario
- Decidir qué hacer (¿llamar a una herramienta? ¿responder?)
- Ejecutar acciones (herramientas, búsqueda, cálculo)
- Repetir hasta que esté listo
- Devolver la respuesta final
Este bucle (llamar LLM → ejecutar herramienta → llamar LLM → ...) es imposible en un pipeline lineal. LangGraph lo hace natural.
Conceptos Principales
| Concepto | Descripción |
|---|---|
State | Un único diccionario compartido que contiene todos los datos del flujo de trabajo |
Node | Una función de Python que lee/escribe en el State |
Edge | Una conexión entre nodos, que define el orden de ejecución |
Conditional Edge | Una arista que decide el siguiente nodo basada en el State actual |
Todo en LangGraph gira en torno al State. Los nodos lo leen, lo modifican y las aristas deciden qué ocurre después en función de él.
Tu Primer Grafo
from langgraph.graph import StateGraph, START, END
from typing_extensions import TypedDict
class MyState(TypedDict):
message: str
def hello_world(state: MyState) -> dict:
return {"message": "¡Hola, LangGraph!"}
builder = StateGraph(MyState)
builder.add_node("say_hello", hello_world)
builder.add_edge(START, "say_hello")
builder.add_edge("say_hello", END)
app = builder.compile()
result = app.invoke({"message": ""})
print(result["message"]) # ¡Hola, LangGraph!¡Has construido tu primer grafo LangGraph! Este patrón — definir estado, añadir nodos, conectar aristas, compilar e invocar — es la base de todo lo que construyas.
¿Qué sigue?
En las próximas lecciones aprenderás:
- Lección 2: Repaso rápido de LangChain (prompts, LLMs, chains)
- Lección 3: Definir grafos de estado con esquemas tipados
- Lección 4: Trabajar con nodos y aristas
- Lección 5: Construir tu primer grafo funcional
- Lección 6: Añadir un LLM a tu grafo
- Lección 7: Dar herramientas a tu agente
- Lección 8: Cadenas secuenciales y pipelines
- Lección 9: Ramificación condicional
- Lección 10: Proyecto final: agente de Q&A
Preguntas de Práctica
¿Cuál es la principal diferencia entre LangChain y LangGraph?
¿Qué representa un Node en LangGraph?
¿Qué hace una Conditional Edge?
¿Qué tipo de flujo de trabajo NO es posible en un pipeline lineal de LangChain pero sí en LangGraph?
¿Cuál es el papel del State en LangGraph?
Puntos Clave
- LangGraph construye aplicaciones de IA como grafos con estado, no pipelines lineales
- Nodos = funciones de Python; Aristas = conexiones entre nodos
- Aristas Condicionales permiten rutas de ejecución dinámicas
- El State es un diccionario compartido, accesible por todos los nodos
- LangGraph soporta bucles, ramificaciones y flujos complejos del mundo real
- Los grafos se construyen con: StateGraph, add_node, add_edge, compile e invoke