Fluxos com intervenção humana
Reembolsos, mudanças de contrato e deploys em produção esperam a aprovação de uma pessoa, por minutos ou dias, sem manter um processo aberto.
Persista agentes LangGraph no HotKV. Pause, retome e volte no tempo pelo estado do grafo, e mantenha a memória de longo prazo pesquisável pelo significado.
Um pacote para o checkpointer e o store. Python 3.10 ou mais recente.
Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.
Um agente LangGraph que guarda o estado na memória do processo perde tudo em um reinício. Aprovações com intervenção humana não podem esperar até o dia seguinte, execuções que falharam não podem ser retomadas e nada do que o agente aprendeu sobrevive até a próxima conversa.
O langgraph-checkpoint-hotkv armazena os checkpoints de cada grafo no HotKV. Um grafo pode ser interrompido e retomado, ou voltar a qualquer etapa anterior e ramificar a partir dela. O store complementar mantém a memória de longo prazo entre threads, encontrada por namespace, por filtro ou, com um modelo de embedding, pelo significado.
Um pacote para o checkpointer e o store. Python 3.10 ou mais recente.
pip install langgraph-checkpoint-hotkvCada etapa do grafo agora é salva no HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])O grafo percorre as suas etapas, salvando um checkpoint depois de cada uma, e para antes do reembolso.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})O processo reiniciou durante a noite. O estado continua no HotKV, esperando na mesma etapa.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextO aprovador diz sim e o grafo continua a partir do checkpoint salvo.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})A memória de longo prazo fica no store e é encontrada de novo em qualquer conversa posterior.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Reembolsos, mudanças de contrato e deploys em produção esperam a aprovação de uma pessoa, por minutos ou dias, sem manter um processo aberto.
Uma execução que falha na etapa 40 é retomada na etapa 40, em vez de começar do zero.
Volte a qualquer checkpoint anterior, mude a entrada e ramifique, para ver como o agente teria se comportado.
HotKVSaver e AsyncHotKVSaver mantêm o estado do grafo entre execuções, com interrupção, retomada e viagem no tempo.
O HotKVStore mantém itens entre threads, pesquisáveis por namespace, filtro ou significado, com expiração opcional.
Passa na própria suíte de conformidade de checkpointers do LangGraph, 81 testes em 8 capacidades, para os dois savers.
Usa os tipos de dados essenciais do HotKV e o seu índice vetorial, e funciona com ou sem uma licença 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"}})Não. O checkpointer e o store usam os tipos de dados essenciais e o índice vetorial do HotKV, e funcionam em um servidor com ou sem licença.
Sim. AsyncHotKVSaver e AsyncHotKVStore funcionam com ainvoke e astream.
Sim. Tudo é armazenado sob um prefixo de chave, langgraph por padrão, que você pode mudar por aplicação ou ambiente.
O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.