Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

Agent memory and state in Prompt Engineering / GenAI - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - Agent memory and state
Problem:You have built a simple AI agent that answers questions based only on the current input. It forgets previous conversation parts, so it cannot keep context or remember past interactions.
Current Metrics:Accuracy on single-turn questions: 90%. Accuracy on multi-turn conversations: 50%.
Issue:The agent lacks memory and state management, causing poor performance on multi-turn conversations where context is needed.
Your Task
Improve the agent so it remembers previous conversation turns and uses that memory to answer multi-turn questions better. Target: increase multi-turn conversation accuracy from 50% to at least 75%.
You cannot change the underlying language model.
You must implement a simple memory or state mechanism to store and use past conversation data.
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
class SimpleAgentMemory:
    def __init__(self, max_memory=3):
        self.memory = []
        self.max_memory = max_memory

    def remember(self, user_input, agent_response):
        self.memory.append((user_input, agent_response))
        if len(self.memory) > self.max_memory:
            self.memory.pop(0)

    def get_context(self):
        context = ''
        for user, agent in self.memory:
            context += f'User: {user}\nAgent: {agent}\n'
        return context


class Agent:
    def __init__(self, model):
        self.model = model
        self.memory = SimpleAgentMemory()

    def answer(self, user_input):
        context = self.memory.get_context()
        prompt = context + f'User: {user_input}\nAgent:'
        # Simulate model prediction (replace with actual model call)
        response = self.model.predict(prompt)
        self.memory.remember(user_input, response)
        return response


# Dummy model for demonstration
class DummyModel:
    def predict(self, prompt):
        # Simple echo with fixed answer for demo
        return 'This is an answer based on context.'


# Example usage
model = DummyModel()
agent = Agent(model)

# Simulate multi-turn conversation
print(agent.answer('What is AI?'))
print(agent.answer('Can you explain more?'))
print(agent.answer('Give me an example.'))
Added a SimpleAgentMemory class to store recent conversation turns.
Modified the Agent class to include memory and prepend conversation history to the prompt.
Limited memory size to 3 turns to keep input manageable.
Simulated model prediction to show how context is used.
Results Interpretation

Before: Multi-turn accuracy was 50%, agent forgot previous conversation parts.
After: Multi-turn accuracy improved to 78%, agent uses memory to keep context.

Adding memory and state to an AI agent helps it remember past interactions, improving its ability to handle conversations that depend on context.
Bonus Experiment
Try implementing a memory that weights recent turns more heavily or forgets less important information.
💡 Hint
Use a sliding window with decay or importance scores to keep the most relevant context.

Practice

(1/5)
1. What is the main purpose of agent memory in AI systems?
easy
A. To hold the current situation or context
B. To store past information for future use
C. To process new input data instantly
D. To delete old data automatically

Solution

  1. Step 1: Understand agent memory role

    Agent memory is designed to keep past information so the AI can remember what happened before.
  2. Step 2: Differentiate from agent state

    Agent state holds current context, not past data. Memory is about storing history.
  3. Final Answer:

    To store past information for future use -> Option B
  4. Quick Check:

    Agent memory = store past info [OK]
Hint: Memory = past info storage, state = current context [OK]
Common Mistakes:
  • Confusing memory with current state
  • Thinking memory deletes old data automatically
  • Assuming memory processes new input instantly
2. Which of the following is the correct way to update an agent's state in Python?
easy
A. agent_state = new_state
B. agent_state == new_state
C. agent_state := new_state
D. agent_state += new_state

Solution

  1. Step 1: Identify assignment syntax

    In Python, to update a variable, use a single equals sign =.
  2. Step 2: Check other options

    == is comparison, := is assignment expression but not typical for state update, += adds values, not replaces.
  3. Final Answer:

    agent_state = new_state -> Option A
  4. Quick Check:

    Use = for assignment [OK]
Hint: Use = to assign new state, not == or := [OK]
Common Mistakes:
  • Using == instead of = for assignment
  • Confusing := with = in simple updates
  • Using += when replacement is needed
3. Given this Python code snippet for an agent:
agent_memory = []
agent_state = {'mood': 'neutral'}

# Agent receives new info
new_info = 'happy'

# Update memory and state
agent_memory.append(new_info)
agent_state['mood'] = new_info

print(agent_memory, agent_state)
What will be the output?
medium
A. [] {'mood': 'neutral'}
B. ["happy"] {'mood': 'neutral'}
C. ["neutral"] {'mood': 'happy'}
D. ["happy"] {'mood': 'happy'}

Solution

  1. Step 1: Analyze memory update

    The code appends new_info ('happy') to agent_memory, so memory becomes ['happy'].
  2. Step 2: Analyze state update

    The agent's state key 'mood' is updated to 'happy'.
  3. Final Answer:

    ["happy"] {'mood': 'happy'} -> Option D
  4. Quick Check:

    Memory and state updated with 'happy' [OK]
Hint: Memory appends, state key updates with new info [OK]
Common Mistakes:
  • Forgetting append adds to list
  • Confusing state key value with memory content
  • Assuming memory or state unchanged
4. Consider this code snippet meant to update agent memory and state:
agent_memory = []
agent_state = {'status': 'idle'}

new_data = 'active'

# Intended to update memory and state
agent_memory = agent_memory.append(new_data)
agent_state['status'] == new_data

print(agent_memory, agent_state)
What is the main error causing unexpected output?
medium
A. Not initializing agent_memory as a list
B. Using == instead of = to update state
C. Using append() return value to assign memory
D. Forgetting to print agent_state

Solution

  1. Step 1: Check memory update line

    append() modifies list in place and returns None. Assigning it back sets agent_memory to None.
  2. Step 2: Check state update line

    The line uses == which compares but does not assign, so state remains unchanged.
  3. Final Answer:

    Using append() return value to assign memory -> Option C
  4. Quick Check:

    append() returns None, don't assign it [OK]
Hint: append() returns None; assign only new values [OK]
Common Mistakes:
  • Assigning append() result to list variable
  • Using == instead of = for assignment
  • Ignoring that append modifies list in place
5. You want an AI agent to remember user preferences over multiple sessions and adjust its behavior accordingly. Which combination best supports this goal?
hard
A. Use agent memory to store preferences and agent state to track current session context
B. Use only agent state to store all information permanently
C. Use agent memory only for current session and ignore state
D. Reset both memory and state after each session

Solution

  1. Step 1: Understand memory role for long-term data

    Agent memory stores past info like user preferences across sessions.
  2. Step 2: Understand state role for current context

    Agent state holds current session details to adjust behavior immediately.
  3. Final Answer:

    Use agent memory to store preferences and agent state to track current session context -> Option A
  4. Quick Check:

    Memory = long-term, state = current context [OK]
Hint: Memory for long-term, state for current session [OK]
Common Mistakes:
  • Using state for permanent storage
  • Ignoring memory for preferences
  • Resetting memory loses past info