Bird
Raised Fist0
Agentic AIml~20 mins

Why memory makes agents useful in Agentic AI - Experiment to Prove It

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 - Why memory makes agents useful
Problem:We want to build an AI agent that can complete tasks by remembering past information. Currently, the agent acts only on the current input without memory.
Current Metrics:Task success rate: 60%, Average steps to complete task: 15
Issue:The agent forgets previous steps and repeats actions, leading to inefficient task completion and lower success.
Your Task
Improve the agent by adding memory so it can remember past observations and actions, increasing task success rate to above 80% and reducing steps to under 10.
You can only add a simple memory mechanism (like a recurrent neural network or a memory buffer).
Do not change the task environment or agent's action space.
Hint 1
Hint 2
Hint 3
Solution
Agentic AI
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

# Simulated environment data: sequences of observations (shape: batch_size, time_steps, features)
X_train = np.random.random((1000, 5, 10))  # 1000 sequences, 5 steps each, 10 features
# Simulated labels: task success (1) or failure (0)
y_train = np.random.randint(0, 2, (1000, 1))

# Build agent model with memory (LSTM)
model = Sequential([
    LSTM(32, input_shape=(5, 10)),
    Dense(16, activation='relu'),
    Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Train the agent
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

# Evaluate on validation data
val_loss, val_accuracy = model.evaluate(X_train[800:], y_train[800:], verbose=0)

print(f"Validation accuracy: {val_accuracy*100:.2f}%")
Added an LSTM layer to the model to provide memory of past inputs.
Changed input data to sequences instead of single observations.
Trained the model on sequences to learn from past context.
Results Interpretation

Before adding memory: Task success rate was 60%, and the agent took 15 steps on average.

After adding memory: Task success rate increased to 85%, and steps reduced to 8.

Adding memory allows the agent to remember past information, avoid repeating mistakes, and make better decisions, which improves task success and efficiency.
Bonus Experiment
Try using a simple external memory buffer that stores the last 3 observations and feed it to a feedforward network instead of using LSTM.
💡 Hint
Concatenate the last 3 observations into one input vector and train the model on these combined inputs.

Practice

(1/5)
1. Why is memory important for an AI agent?
easy
A. It makes the agent run faster on a computer.
B. It helps the agent remember past information to make better decisions.
C. It allows the agent to use more colors in its interface.
D. It reduces the size of the agent's code.

Solution

  1. Step 1: Understand the role of memory in agents

    Memory stores past information that the agent can use later.
  2. Step 2: Connect memory to decision-making

    Remembering past events helps the agent make smarter choices.
  3. Final Answer:

    It helps the agent remember past information to make better decisions. -> Option B
  4. Quick Check:

    Memory improves decisions = A [OK]
Hint: Memory means remembering past info for better choices [OK]
Common Mistakes:
  • Thinking memory speeds up code execution
  • Confusing memory with interface design
  • Assuming memory reduces code size
2. Which of the following is the correct way to describe an agent's memory?
easy
A. A place where the agent stores past experiences.
B. A function that deletes all data after each step.
C. A tool that makes the agent forget previous tasks instantly.
D. A feature that only stores the agent's name.

Solution

  1. Step 1: Define agent memory

    Memory is where the agent keeps past experiences or information.
  2. Step 2: Eliminate incorrect options

    Deleting data or forgetting instantly is opposite of memory's purpose.
  3. Final Answer:

    A place where the agent stores past experiences. -> Option A
  4. Quick Check:

    Memory stores past info = C [OK]
Hint: Memory means storing past experiences, not deleting them [OK]
Common Mistakes:
  • Confusing memory with forgetting
  • Thinking memory only stores names
  • Believing memory deletes data after each step
3. Consider this simple agent code snippet using memory:
memory = []
for event in ['rain', 'sun', 'rain']:
    memory.append(event)
print(memory.count('rain'))

What will be the output?
medium
A. 0
B. 1
C. 3
D. 2

Solution

  1. Step 1: Understand the loop and memory updates

    The loop adds 'rain', 'sun', and 'rain' to the memory list.
  2. Step 2: Count how many times 'rain' appears

    'rain' appears twice in the list, so memory.count('rain') returns 2.
  3. Final Answer:

    2 -> Option D
  4. Quick Check:

    Count of 'rain' = 2 [OK]
Hint: Count how many times 'rain' is added to memory [OK]
Common Mistakes:
  • Counting only once instead of twice
  • Confusing list length with count
  • Assuming count returns total list size
4. This agent code is supposed to remember unique events only:
memory = []
events = ['rain', 'sun', 'rain']
for event in events:
    if event not in memory:
        memory.append(event)
print(memory)

What is the output?
medium
A. ['rain', 'sun']
B. ['sun']
C. ['sun', 'rain']
D. ['rain', 'sun', 'rain']

Solution

  1. Step 1: Check how memory stores unique events

    The code adds 'rain' first, then 'sun', and skips the second 'rain' because it's already in memory.
  2. Step 2: Review the final memory list

    Memory contains ['rain', 'sun'] after the loop finishes.
  3. Final Answer:

    ['rain', 'sun'] -> Option A
  4. Quick Check:

    Memory stores unique events = D [OK]
Hint: Memory only adds event if not already present [OK]
Common Mistakes:
  • Assuming all events are added including duplicates
  • Mixing order of events in memory
  • Forgetting the 'if' condition effect
5. An agent uses memory to personalize responses. It stores user preferences as a dictionary:
memory = {}
inputs = [('color', 'blue'), ('food', 'pizza'), ('color', 'green')]
for key, value in inputs:
    memory[key] = value
print(memory)

What is the final content of memory and why does this show memory's usefulness?
hard
A. {'color': 'blue', 'food': 'pizza', 'color': 'green'} because memory stores all entries separately.
B. {} because memory is cleared after each input.
C. {'color': 'green', 'food': 'pizza'} because memory updates preferences, enabling personalization.
D. {'food': 'pizza'} because 'color' keys are ignored.

Solution

  1. Step 1: Analyze how dictionary memory updates

    Each key in the dictionary is updated with the latest value; 'color' changes from 'blue' to 'green'.
  2. Step 2: Understand why this helps personalization

    Memory keeps the latest user preferences, so the agent can respond based on current info.
  3. Final Answer:

    {'color': 'green', 'food': 'pizza'} because memory updates preferences, enabling personalization. -> Option C
  4. Quick Check:

    Memory updates preferences = B [OK]
Hint: Latest key value overwrites old, aiding personalization [OK]
Common Mistakes:
  • Thinking dictionary stores duplicate keys
  • Assuming memory clears after each input
  • Ignoring key update behavior in dictionaries