Estado y persistencia
El estado
El estado es la estructura de datos que fluye por el grafo y lleva información entre nodos. En el ejemplo oficial es MessagesState, que transporta la conversación.
Se declara al crear el grafo:
graph = StateGraph(MessagesState)
Y cada nodo lo recibe y devuelve lo que modifica:
def mock_llm(state: MessagesState):
return {"messages": [{"role": "ai", "content": "hello world"}]}
Fijate que el nodo no devuelve el estado entero: devuelve la porción que cambia. Esa es la diferencia entre pensar en pasos que mutan una variable global y pensar en pasos que declaran su contribución.
La persistencia
Acá está lo que separa a LangGraph de un script con funciones encadenadas. La documentación dice que los agentes "persisten a través de fallos y pueden correr por períodos extensos, retomando desde donde quedaron".
Tres consecuencias que valen más que la frase:
Un fallo no es el final. Si el proceso se cae en el nodo 4 de 7, no se vuelve al principio.
El tiempo deja de ser un problema. Un flujo que espera algo que tarda horas es viable, porque no hace falta mantener un proceso vivo esperando.
El estado es inspeccionable. Si se puede guardar y retomar, se puede mirar. De ahí sale la unidad siguiente.
Esto es exactamente lo que un for sobre una lista de funciones no te da, y lo que se termina reimplementando mal cuando el prototipo pasa a producción.