-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathchat_optimized_memory.py
More file actions
38 lines (32 loc) · 1.3 KB
/
Copy pathchat_optimized_memory.py
File metadata and controls
38 lines (32 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.store.memory import InMemoryStore
from langmem import create_manage_memory_tool, create_search_memory_tool
from langgraph.config import get_store
checkpointer = InMemorySaver()
store = InMemoryStore(
index={
"dims": 1536,
"embed": "openai:text-embedding-3-small"
}
)
namespace = ("agent_memories",)
memory_tools = [
create_manage_memory_tool(namespace),
create_search_memory_tool(namespace)
]
def prompt(state):
# Search over memories based on the messages
store_obj = get_store()
items = store_obj.search(namespace, query=state["messages"][-1].content)
print("Items")
print(items)
memories = "\n\n".join(str(item) for item in items)
system_msg = {"role": "system", "content": f"## Memories:\n\n{memories}"}
return [system_msg] + state["messages"]
agentObj = create_react_agent("openai:gpt-4o", prompt=prompt, tools=memory_tools, store=store,
checkpointer=checkpointer)
def chat(agent, txt, thread_id):
result_state = agent.invoke({"messages": [{"role": "user", "content": txt}]},
config={"configurable": {"thread_id": thread_id}})
return result_state["messages"][-1].content