Implementing Memory in Our Agent › Managing Memory Over Time
Michael BrenndoerferJuly 5, 20252 min read
AI Agent HandbookAll chapters Part 6 of 15Memory and Retrieval - How Agents Remember
Implementing Memory in Our Agent › Managing Memory Over TimeOne section · Sections in this chapter5 / 13 ↓
Sections in this chapter13
As your assistant accumulates facts, you'll need ways to manage them. Let's add some utilities:
In[2]:
Codeclass PersonalAssistantWithManagement(PersonalAssistantWithTools):
"""Assistant with memory management capabilities."""
def list_facts(self) -> str:
"""Show all stored facts."""
facts = self.knowledge.get_all_facts()
if not facts:
return "I don't have any facts stored yet."
facts_list = "\n".join(f"{i+1}. {fact}" for i, fact in enumerate(facts))
return f"Here's what I know about you:\n\n{facts_list}"
def forget_fact(self, fact_number: int) -> str:
"""Remove a specific fact."""
facts = self.knowledge.facts
if fact_number < 1 or fact_number > len(facts):
return f"Invalid fact number. I have {len(facts)} facts stored."
removed_fact = facts[fact_number - 1]["fact"]
# Remove from both lists
facts.pop(fact_number - 1)
self.knowledge.embeddings.pop(fact_number - 1)
self.knowledge._save_data()
return f"Forgot: {removed_fact}"
def update_fact(self, fact_number: int, new_fact: str) -> str:
"""Update an existing fact."""
facts = self.knowledge.facts
if fact_number < 1 or fact_number > len(facts):
return f"Invalid fact number. I have {len(facts)} facts stored."
old_fact = facts[fact_number - 1]["fact"]
# Update fact and embedding
facts[fact_number - 1]["fact"] = new_fact
facts[fact_number - 1]["timestamp"] = datetime.now().isoformat()
self.knowledge.embeddings[fact_number - 1] = self.knowledge.encoder.encode(new_fact)
self.knowledge._save_data()
return f"Updated: '{old_fact}' → '{new_fact}'"Now you can manage stored knowledge:
In[4]:
Codeassistant = PersonalAssistantWithManagement(api_key=os.getenv("ANTHROPIC_API_KEY"))
## Store some facts
assistant.chat("Remember that I live in San Francisco")
assistant.chat("Remember that I'm allergic to peanuts")
assistant.chat("Remember that I prefer Italian food")
## List all facts
print(assistant.list_facts())
## Output:
## Here's what I know about you:
##
## 1. You live in San Francisco
## 2. You're allergic to peanuts
## 3. You prefer Italian food
## Update a fact
print(assistant.update_fact(1, "You live in Oakland"))
## Output: Updated: 'You live in San Francisco' → 'You live in Oakland'
## Remove a fact
print(assistant.forget_fact(2))
## Output: Forgot: You're allergic to peanutsThese management functions give users control over their data. This is important for privacy and accuracy.