Bird
Raised Fist0
Agentic AIml~20 mins

Working memory for current task state in Agentic AI - 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 - Working memory for current task state
Problem:You want to build an AI agent that remembers important information during a task to make better decisions. Currently, the agent forgets previous steps quickly, causing poor task performance.
Current Metrics:Task success rate: 60%, Average steps to complete task: 15, Memory recall accuracy: 40%
Issue:The agent lacks effective working memory, leading to forgetting key task details and making inconsistent decisions.
Your Task
Improve the agent's working memory so it can remember and use task information effectively, increasing task success rate to at least 80% and memory recall accuracy to 75%.
Do not change the agent's core decision-making model architecture.
Only modify or add components related to working memory.
Keep training time under 2 hours on a standard GPU.
Hint 1
Hint 2
Hint 3
Solution
Agentic AI
import torch
import torch.nn as nn

class WorkingMemoryAgent(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super().__init__()
        self.hidden_size = hidden_size
        self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x, hidden=None):
        # x shape: (batch, seq_len=1, input_size)
        out, hidden = self.lstm(x, hidden)
        out = self.fc(out[:, -1, :])
        return out, hidden

# Example usage:
# Initialize agent
input_size = 10  # example input features
hidden_size = 32
output_size = 5  # example action space
agent = WorkingMemoryAgent(input_size, hidden_size, output_size)

# Dummy input: batch=1, seq_len=1, features=10
x = torch.randn(1, 1, input_size)
hidden = None

# Forward pass with memory
output, hidden = agent(x, hidden)

# output: action logits
print(output)
Added an LSTM layer to keep track of task state over time.
Kept the original decision layer but now uses LSTM output.
Maintained batch size and input shape for stepwise processing.
Enabled passing hidden state between steps to remember past info.
Results Interpretation

Before: Task success 60%, Memory recall 40%, Steps 15

After: Task success 82%, Memory recall 78%, Steps 12

Adding a working memory component like an LSTM helps the agent remember important task details, reducing forgetting and improving decision quality.
Bonus Experiment
Try adding an attention mechanism on top of the LSTM to let the agent focus on the most relevant past information.
💡 Hint
Use a simple attention layer that weights LSTM outputs before the final decision layer.

Practice

(1/5)
1. What is the main role of working memory in an agentic AI system during a task?
easy
A. To temporarily store current task details for decision making
B. To permanently save all past tasks for future use
C. To delete irrelevant data immediately
D. To generate random outputs without context

Solution

  1. Step 1: Understand working memory function

    Working memory holds temporary information needed right now for the task.
  2. Step 2: Compare options to definition

    Only To temporarily store current task details for decision making correctly describes temporary storage for current task decisions.
  3. Final Answer:

    To temporarily store current task details for decision making -> Option A
  4. Quick Check:

    Working memory = temporary task info [OK]
Hint: Working memory = short-term task info storage [OK]
Common Mistakes:
  • Confusing working memory with long-term memory
  • Thinking it stores all past tasks permanently
  • Assuming it deletes data immediately
2. Which of the following code snippets correctly updates an AI agent's working memory with the latest task step stored in a variable current_step?
easy
A. working_memory.append(current_step)
B. working_memory = current_step
C. working_memory.update(current_step)
D. working_memory.add(current_step)

Solution

  1. Step 1: Identify working memory type

    Working memory holds the current task state, so it should be replaced, not appended or updated as a collection.
  2. Step 2: Analyze code options

    working_memory = current_step assigns the current step directly, which matches replacing the current task state.
  3. Final Answer:

    working_memory = current_step -> Option B
  4. Quick Check:

    Assign current step to working memory [OK]
Hint: Assign current step directly to working memory [OK]
Common Mistakes:
  • Using append on a non-list working memory
  • Calling update without a dict type
  • Using add which is not a list method
3. Given this Python code simulating working memory updates, what is the final value of working_memory after execution?
working_memory = None
steps = ['start', 'process', 'finish']
for step in steps:
    working_memory = step
print(working_memory)
medium
A. 'finish'
B. 'process'
C. 'start'
D. None

Solution

  1. Step 1: Trace the loop updating working memory

    Loop sets working_memory to 'start', then 'process', then 'finish' in order.
  2. Step 2: Identify final value after loop

    After the last iteration, working_memory holds 'finish'.
  3. Final Answer:

    'finish' -> Option A
  4. Quick Check:

    Last step assigned = 'finish' [OK]
Hint: Last loop assignment is final working memory value [OK]
Common Mistakes:
  • Thinking working_memory accumulates all steps
  • Confusing initial None with final value
  • Assuming print shows first step
4. This code tries to update working memory with the current task state but causes an error. What is the problem?
working_memory = None
current_step = 'step1'
working_memory.append(current_step)
medium
A. append requires two arguments
B. current_step is not defined
C. working_memory is None and has no append method
D. working_memory should be a string

Solution

  1. Step 1: Check working_memory type

    It is None, which is not a list and has no append method.
  2. Step 2: Understand append usage

    append works only on list objects, so calling it on None causes an error.
  3. Final Answer:

    working_memory is None and has no append method -> Option C
  4. Quick Check:

    NoneType has no append method [OK]
Hint: Check object type before using append [OK]
Common Mistakes:
  • Assuming append works on None
  • Thinking current_step is undefined
  • Believing append needs two arguments
5. An agentic AI uses working memory to track task progress. If the AI must remember the last two steps instead of just one, which data structure and update method best fit this need?
hard
A. Use a set to store steps, adding new steps without order
B. Use a string and overwrite with the latest step only
C. Use a dictionary with step names as keys and overwrite all keys each time
D. Use a list and append new steps, removing oldest when length > 2

Solution

  1. Step 1: Identify need to store last two steps in order

    We need a structure that keeps order and can hold multiple items.
  2. Step 2: Evaluate data structures

    List supports order and appending; removing oldest keeps size 2. String or set do not keep order or multiple recent steps properly.
  3. Final Answer:

    Use a list and append new steps, removing oldest when length > 2 -> Option D
  4. Quick Check:

    List + append + remove oldest = last two steps [OK]
Hint: Use list as queue to keep last two steps [OK]
Common Mistakes:
  • Using string which holds only one step
  • Using set which loses order
  • Using dict which overwrites keys