Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

Memory for conversation history 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 - Memory for conversation history
Problem:You want to build a chatbot that remembers what the user said earlier in the conversation. Currently, the chatbot only responds based on the last message and forgets previous messages.
Current Metrics:Chatbot responds correctly to single-turn questions 90% of the time, but multi-turn conversation coherence is only 50%.
Issue:The chatbot lacks memory of past conversation turns, causing it to give inconsistent or irrelevant answers in longer chats.
Your Task
Improve the chatbot's ability to remember conversation history so that multi-turn conversation coherence improves from 50% to at least 75%, without reducing single-turn accuracy below 85%.
You can only modify how conversation history is stored and used as input to the model.
You cannot change the underlying language model architecture or training data.
Keep the input size manageable to avoid slowing down response time.
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
from typing import List

class ConversationMemory:
    def __init__(self, max_turns: int = 4):
        self.max_turns = max_turns
        self.history: List[str] = []

    def add_message(self, speaker: str, message: str):
        # Store messages as 'User: message' or 'Bot: message'
        self.history.append(f"{speaker}: {message}")
        # Keep only the last max_turns*2 messages (user + bot pairs)
        if len(self.history) > self.max_turns * 2:
            self.history = self.history[-self.max_turns * 2 :]

    def get_context(self) -> str:
        # Join conversation history into a single string
        return "\n".join(self.history)

# Example usage:
memory = ConversationMemory(max_turns=3)
memory.add_message("User", "Hello, who are you?")
memory.add_message("Bot", "I am a friendly chatbot.")
memory.add_message("User", "Can you remember what I said?")
memory.add_message("Bot", "Yes, I remember your previous messages.")

# When sending input to the model, include the conversation history:
model_input = memory.get_context() + "\nUser: What is the weather today?"

print("Model input to the chatbot:")
print(model_input)

# This approach helps the model see recent conversation turns and respond coherently.
Added a ConversationMemory class to store recent user and bot messages.
Limited stored messages to last 3 turns to keep input size manageable.
Included conversation history as context input to the chatbot model.
Results Interpretation

Before: Single-turn accuracy: 90%, Multi-turn coherence: 50%

After: Single-turn accuracy: 88%, Multi-turn coherence: 78%

Including recent conversation history as input helps the chatbot remember context and respond more consistently in multi-turn conversations, reducing forgetfulness.
Bonus Experiment
Try summarizing older conversation turns into a short summary instead of including all messages, to keep input size small while preserving context.
💡 Hint
Use a simple rule-based summary like extracting key topics or use a small summarization model to compress past messages.

Practice

(1/5)
1. What is the main purpose of memory in a conversation AI system?
easy
A. To store past user and AI messages for context
B. To speed up the internet connection
C. To generate random responses without context
D. To delete all previous messages after each reply

Solution

  1. Step 1: Understand the role of memory in AI conversations

    Memory keeps track of previous messages so the AI can understand the flow of the conversation.
  2. Step 2: Identify the correct purpose

    Storing past messages helps the AI respond with context, making conversations meaningful.
  3. Final Answer:

    To store past user and AI messages for context -> Option A
  4. Quick Check:

    Memory = store past messages [OK]
Hint: Memory keeps conversation context, not random or deleted [OK]
Common Mistakes:
  • Thinking memory speeds up internet
  • Believing memory deletes all messages
  • Assuming memory generates random replies
2. Which of the following is the correct way to add a new message to conversation memory in Python?
easy
A. memory.append(new_message)
B. memory.add(new_message)
C. memory.insert(new_message)
D. memory.push(new_message)

Solution

  1. Step 1: Recall Python list methods for adding items

    Python lists use append() to add an item at the end.
  2. Step 2: Match method to memory update

    Since conversation memory is often a list, append() is the correct method to add a new message.
  3. Final Answer:

    memory.append(new_message) -> Option A
  4. Quick Check:

    Python list add = append() [OK]
Hint: Use append() to add items to a Python list [OK]
Common Mistakes:
  • Using add() which is for sets
  • Using insert() without index
  • Using push() which is not a Python list method
3. Given this Python code snippet managing conversation memory:
memory = ['Hi', 'How are you?']
new_message = 'I am fine'
memory.append(new_message)
print(len(memory))

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

Solution

  1. Step 1: Check initial memory length

    Memory starts with 2 messages: 'Hi' and 'How are you?'.
  2. Step 2: Append new message and count

    Appending 'I am fine' adds one more message, so total becomes 3.
  3. Final Answer:

    3 -> Option B
  4. Quick Check:

    2 + 1 = 3 messages [OK]
Hint: Appending adds one item, so length increases by 1 [OK]
Common Mistakes:
  • Forgetting append adds item
  • Thinking length stays same
  • Assuming code causes error
4. You have this code to keep conversation memory but it causes an error:
memory = []
new_message = 'Hello'
memory.add(new_message)

What is the error and how to fix it?
medium
A. No error; code runs fine
B. Error: new_message undefined; fix by defining new_message
C. Error: list has no add(); fix by using memory.append(new_message)
D. Error: memory is not a list; fix by initializing memory as a dict

Solution

  1. Step 1: Identify the error cause

    Python lists do not have an add() method; this causes an AttributeError.
  2. Step 2: Correct method to add item to list

    Use append() to add an item to a list, so replace add() with append().
  3. Final Answer:

    Error: list has no add(); fix by using memory.append(new_message) -> Option C
  4. Quick Check:

    List add() wrong, use append() [OK]
Hint: Lists use append(), sets use add() [OK]
Common Mistakes:
  • Using add() on list
  • Thinking new_message is undefined
  • Confusing list with dict
5. You want to keep only the last 3 messages in conversation memory to save space. Which code correctly updates memory after adding a new message?
hard
A. memory.insert(0, new_message) memory = memory[:3]
B. memory = memory[:3] memory.append(new_message)
C. memory.pop() memory.append(new_message)
D. memory.append(new_message) memory = memory[-3:]

Solution

  1. Step 1: Add new message to memory

    Use append() to add the new message at the end.
  2. Step 2: Keep only last 3 messages

    Slicing with memory[-3:] keeps the last 3 items, removing older ones.
  3. Final Answer:

    memory.append(new_message) memory = memory[-3:] -> Option D
  4. Quick Check:

    Append then slice last 3 [OK]
Hint: Append first, then slice last 3 messages [OK]
Common Mistakes:
  • Slicing before append loses new message
  • Using insert at start changes order
  • Popping removes wrong message