feat: Implemented memory persistent

This commit is contained in:
2026-03-02 22:55:24 -05:00
parent 390fd120f9
commit aab046b2ef
6 changed files with 90 additions and 18 deletions

View File

@@ -1,8 +1,9 @@
from langgraph.graph import StateGraph, START, END
from langchain_core.messages import SystemMessage, ToolMessage, BaseMessage
from langgraph.checkpoint.base import BaseCheckpointSaver
from langgraph.checkpoint.memory import InMemorySaver
from langchain_core.runnables import RunnableConfig
from typing import Literal, Callable, Any
from typing import Literal, Callable, Any, Union
from .schemas import MessagesState
from dataclasses import dataclass
import logging
@@ -30,7 +31,7 @@ class Agent:
self,
model: Any,
config: AgentConfig | None = None,
checkpointer: InMemorySaver | None = None,
checkpointer: Union[BaseCheckpointSaver, None] = None,
tools: list | None = None
):
"""
@@ -72,6 +73,19 @@ class Agent:
"""Expone el grafo para inspección en tests."""
return self._build_agent()
async def ainvoke(self, state: dict, config: RunnableConfig | None = None) -> dict:
"""
Versión asíncrona de invoke, necesaria para checkpointers de DB.
"""
if not config:
config: RunnableConfig = {"configurable": {"thread_id": "default"}}
if "messages" not in state:
raise ValueError("State must contain 'messages' key")
# Llamamos al método ainvoke del grafo compilado
return await self._compiled_agent.ainvoke(state, config=config)
def invoke(self, state: dict, config: RunnableConfig | None = None) -> dict:
"""
Ejecuta el agente con el estado inicial.