# Upsonic Docs: Using Memory in your Agent
# https://docs.upsonic.ai/guides/using_memory_in_your_agent
# Imports
from upsonic import Agent
from upsonic import Task
from upsonic.storage import InMemoryStorage, Memory
# Create a storage provider
storage = InMemoryStorage(max_sessions=100, max_profiles=50)
# Create a Memory instance with all memory types enabled
memory = Memory(
storage=storage,
session_id="user_session_123",
user_id="user_456",
full_session_memory=True, # Remember complete conversations
summary_memory=True, # Maintain conversation summaries
user_analysis_memory=True, # Build user profiles
dynamic_user_profile=True, # Automatically adapt profile schema
num_last_messages=10, # Limit context to last 10 messages
debug=True # Enable debug logging
)
# Create an Agent with Memory
personal_assistant = Agent(
name="Personal Assistant",
role="Personal AI Assistant with Memory",
goal="Provide personalized assistance by remembering user preferences and conversation history",
instructions="""
Always reference previous conversations when relevant.
Adapt your responses based on the user's profile and preferences.
Use the conversation summary to provide context-aware assistance.
""",
memory=memory
)
# Example tasks that demonstrate memory capabilities
task1 = Task(
description="I prefer to be called 'Alex' and I'm interested in machine learning",
)
task2 = Task(
description="What did we discuss in our previous conversation?",
)
task3 = Task(
description="Based on what you know about me, suggest a learning path for AI",
)
# Execute tasks to build memory
print("=== Task 1: Building User Profile ===")
result1 = personal_assistant.do(task1)
print(f"Response: {result1}")
print("\n=== Task 2: Testing Memory Recall ===")
result2 = personal_assistant.do(task2)
print(f"Response: {result2}")
print("\n=== Task 3: Using Memory for Personalization ===")
result3 = personal_assistant.do(task3)
print(f"Response: {result3}")
# Check memory statistics
print(f"\n=== Memory Statistics ===")
print(f"Session ID: {memory.session_id}")
print(f"User ID: {memory.user_id}")
print(f"Full Session Memory: {memory.full_session_memory_enabled}")
print(f"Summary Memory: {memory.summary_memory_enabled}")
print(f"User Analysis Memory: {memory.user_analysis_memory_enabled}")