Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.lyzr.ai/llms.txt

Use this file to discover all available pages before exploring further.

Agent memory maintains conversation context across multiple messages. Configure memory at agent creation or add it to existing agents.

Quick Start

from lyzr import Studio

studio = Studio(api_key="your-api-key")

# Create agent with memory
agent = studio.create_agent(
    name="Assistant",
    provider="gpt-4o",
    role="Helpful assistant",
    goal="Have contextual conversations",
    instructions="Remember what the user told you",
    memory=30  # Remember last 30 messages
)

# Conversation with context
session = "my_session"
agent.run("My favorite color is blue", session_id=session)
response = agent.run("What's my favorite color?", session_id=session)
# "Your favorite color is blue"

Adding Memory at Creation

Use the memory parameter when creating an agent:
agent = studio.create_agent(
    name="Bot",
    provider="gpt-4o",
    role="Assistant",
    goal="Help users",
    instructions="Be helpful",
    memory=30  # Integer: number of messages to remember
)

Memory Parameter

ValueRangeDescription
Integer1-50Number of recent messages to keep in context
# Small memory (quick exchanges)
agent = studio.create_agent(..., memory=10)

# Medium memory (typical conversations)
agent = studio.create_agent(..., memory=30)

# Large memory (complex multi-turn tasks)
agent = studio.create_agent(..., memory=50)

# Maximum memory
agent = studio.create_agent(..., memory=50)

Adding Memory to Existing Agent

Use agent.add_memory() to enable memory on an existing agent.
agent.add_memory(max_messages: int = 10) -> Agent

Parameters

ParameterTypeDefaultDescription
max_messagesint10Messages to remember (1-50)

Example

# Create agent without memory
agent = studio.create_agent(
    name="Bot",
    provider="gpt-4o"
)

# Add memory later
agent = agent.add_memory(max_messages=50)

# Verify
print(agent.has_memory())  # True

Checking Memory Status

has_memory()

Check if memory is enabled.
agent.has_memory() -> bool
if agent.has_memory():
    print("Memory is enabled")
else:
    print("No memory configured")

get_memory_config()

Get the current memory configuration.
agent.get_memory_config() -> dict | None
config = agent.get_memory_config()
if config:
    print(f"Max messages: {config['max_messages_context_count']}")
    print(f"Provider: {config['provider']}")

Removing Memory

Disable memory for an agent.
agent.remove_memory() -> Agent
agent = agent.remove_memory()
print(agent.has_memory())  # False

Session Management

Memory is scoped to sessions. Each session maintains its own conversation history.

Using session_id

agent = studio.create_agent(..., memory=30)

# User 1's session
agent.run("I need help with billing", session_id="user_1")
agent.run("My account ID is 12345", session_id="user_1")

# User 2's session (separate context)
agent.run("I have a technical question", session_id="user_2")
agent.run("My software version is 3.0", session_id="user_2")

# Each session has independent memory
agent.run("What's my account ID?", session_id="user_1")  # Knows: 12345
agent.run("What version am I using?", session_id="user_2")  # Knows: 3.0

Auto-Generated Sessions

If no session_id is provided, one is auto-generated:
# Each call gets a new session (no memory continuity)
agent.run("My name is Alice")  # Session: session_abc123
agent.run("What's my name?")    # Session: session_def456 (different!)
# Agent doesn't remember because sessions are different

Persistent Session IDs

For continuous conversations, use consistent session IDs:
import uuid

# Generate once per user/conversation
session_id = f"user_{user_id}_session"

# Use consistently
agent.run("Message 1", session_id=session_id)
agent.run("Message 2", session_id=session_id)
agent.run("Message 3", session_id=session_id)
# All messages share context

Examples

Chatbot with Memory

agent = studio.create_agent(
    name="Chatbot",
    provider="gpt-4o",
    role="Friendly chatbot",
    goal="Have engaging conversations",
    instructions="Be friendly and remember what users tell you",
    memory=50
)

def chat(user_id: str):
    session = f"chat_{user_id}"

    while True:
        user_input = input("You: ")
        if user_input.lower() == "quit":
            break

        response = agent.run(user_input, session_id=session)
        print(f"Bot: {response.response}")

chat("user_123")

Support Agent

agent = studio.create_agent(
    name="Support Agent",
    provider="gpt-4o",
    role="Customer support specialist",
    goal="Resolve customer issues efficiently",
    instructions="""
    1. Gather relevant information about the issue
    2. Remember details shared by the customer
    3. Provide step-by-step solutions
    4. Confirm resolution before closing
    """,
    memory=50  # Longer memory for complex issues
)

session = "support_ticket_456"

# Multi-turn support conversation
agent.run("I can't access my account", session_id=session)
agent.run("I've tried resetting my password but it didn't work", session_id=session)
agent.run("My email is john@example.com", session_id=session)
response = agent.run("What should I do next?", session_id=session)
# Agent knows: can't access, tried password reset, email is john@example.com

Teaching Assistant

agent = studio.create_agent(
    name="Tutor",
    provider="gpt-4o",
    role="Patient teaching assistant",
    goal="Help students learn at their own pace",
    instructions="""
    - Adapt to the student's level
    - Remember what topics they've covered
    - Build on previous explanations
    - Provide practice problems based on struggles
    """,
    memory=50
)

session = "lesson_python_basics"

agent.run("I want to learn Python", session_id=session)
agent.run("I already know basic variables", session_id=session)
agent.run("I'm confused about loops", session_id=session)
response = agent.run("Can you explain with an example?", session_id=session)
# Tutor knows: learning Python, knows variables, confused about loops

Memory Size Considerations

Small Memory (1-20 messages)

agent = studio.create_agent(..., memory=10)
Best for:
  • Quick Q&A
  • Single-turn tasks
  • Stateless interactions

Medium Memory (20-50 messages)

agent = studio.create_agent(..., memory=30)
Best for:
  • Typical conversations
  • Support interactions
  • General-purpose chatbots

Large Memory (30-50 messages)

agent = studio.create_agent(..., memory=50)
Best for:
  • Complex multi-turn tasks
  • Research sessions
  • Long-form content creation
Larger memory increases context size, which may affect response latency and token usage. Choose based on your use case.

Best Practices

Consistent Session IDs

# Good: Consistent session per user/conversation
session = f"user_{user_id}_conv_{conversation_id}"
agent.run(msg, session_id=session)

# Bad: Random or missing session IDs
agent.run(msg)  # Auto-generated, no continuity

Appropriate Memory Size

# Quick support: small memory
support_agent = studio.create_agent(..., memory=20)

# Complex research: large memory
research_agent = studio.create_agent(..., memory=50)

Clear Session Boundaries

# Start new session for new conversations
def start_new_conversation(user_id: str) -> str:
    import uuid
    return f"user_{user_id}_{uuid.uuid4().hex[:8]}"

session = start_new_conversation("user_123")