Flujos con una persona en el bucle
Los reembolsos, los cambios de contrato y los despliegues a producción esperan la aprobación de una persona, durante minutos o días, sin mantener un proceso abierto.
Persiste agentes de LangGraph en HotKV. Pausa, reanuda y viaja en el tiempo por el estado del grafo, y mantén una memoria a largo plazo que se puede buscar por significado.
Un paquete para el checkpointer y el store. Python 3.10 o posterior.
Un recorrido animado con comandos reales de HotKV y respuestas de ejemplo. Haz clic en cualquier paso para saltar a él. Los comandos y las respuestas se quedan en inglés, tal como los escribes y los ves en HotKV.
Un agente de LangGraph que guarda su estado en la memoria del proceso lo pierde todo al reiniciarse. Las aprobaciones con una persona en el bucle no pueden esperar hasta el día siguiente, las ejecuciones fallidas no se pueden reanudar y nada de lo que aprendió el agente llega a la siguiente conversación.
langgraph-checkpoint-hotkv guarda los checkpoints de cada grafo en HotKV. Un grafo se puede interrumpir y reanudar, o rebobinar a cualquier paso anterior y bifurcar desde ahí. El store complementario mantiene una memoria a largo plazo entre hilos, que se encuentra por namespace, por filtro o, con un modelo de embeddings, por significado.
Un paquete para el checkpointer y el store. Python 3.10 o posterior.
pip install langgraph-checkpoint-hotkvCada paso del grafo se guarda ahora en HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])El grafo avanza por sus pasos, guarda un checkpoint después de cada uno y se detiene antes del reembolso.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})El proceso se reinició durante la noche. El estado sigue en HotKV, esperando en el mismo paso.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextEl aprobador dice que sí y el grafo continúa desde el checkpoint guardado.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})La memoria a largo plazo vive en el store y se vuelve a encontrar en cualquier conversación posterior.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Los reembolsos, los cambios de contrato y los despliegues a producción esperan la aprobación de una persona, durante minutos o días, sin mantener un proceso abierto.
Una ejecución que falla en el paso 40 se reanuda desde el paso 40 en lugar de empezar de cero.
Vuelve a cualquier checkpoint anterior, cambia la entrada y bifurca, para ver cómo se habría comportado el agente.
HotKVSaver y AsyncHotKVSaver conservan el estado del grafo entre ejecuciones, con interrupción, reanudación y viaje en el tiempo.
HotKVStore conserva elementos entre hilos, buscables por namespace, filtro o significado, con caducidad opcional.
Supera la suite de conformidad de checkpointers del propio LangGraph, 81 pruebas en 8 capacidades, con ambos savers.
Usa los tipos de datos del núcleo de HotKV y su índice vectorial, y funciona con o sin licencia enterprise.
from langgraph.checkpoint.hotkv import HotKVSaver
with HotKVSaver.from_conn_string("hotkv://localhost:6379") as checkpointer:
graph = builder.compile(checkpointer=checkpointer)
graph.invoke({"messages": [("user", "hi")]}, {"configurable": {"thread_id": "1"}})No. El checkpointer y el store usan los tipos de datos del núcleo de HotKV y su índice vectorial, y funcionan en un servidor con o sin licencia.
Sí. AsyncHotKVSaver y AsyncHotKVStore funcionan con ainvoke y astream.
Sí. Todo se guarda bajo un prefijo de clave, langgraph por defecto, que puedes cambiar por aplicación o entorno.
HotKV habla el protocolo de Redis, así que puedes apuntar un cliente que ya usas hacia él y ejecutar estos mismos comandos.