Bird
Raised Fist0
LangChainframework~20 mins

Chat history management in LangChain - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
LangChain Chat History Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this LangChain chat history code?
Consider this code snippet using LangChain's ConversationBufferMemory to store chat history. What will be the printed output?
LangChain
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({'input': 'Hello'}, {'output': 'Hi there!'})
memory.save_context({'input': 'How are you?'}, {'output': 'I am fine, thanks!'})
print(memory.load_memory_variables({})['history'])
AHuman: Hello\nHuman: How are you?\nAI: Hi there!\nAI: I am fine, thanks!
BHello\nHi there!\nHow are you?\nI am fine, thanks!
C['Hello', 'Hi there!', 'How are you?', 'I am fine, thanks!']
DHuman: Hello\nAI: Hi there!\nHuman: How are you?\nAI: I am fine, thanks!
Attempts:
2 left
💡 Hint
Look at how ConversationBufferMemory formats the history string with 'Human:' and 'AI:' prefixes.
❓ state_output
intermediate
2:00remaining
What is the value of the chat history after adding a new message?
Using LangChain's ConversationBufferMemory, after saving these contexts, what is the value of memory.chat_memory.messages?
LangChain
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({'input': 'Hi'}, {'output': 'Hello!'})
memory.save_context({'input': 'What is your name?'}, {'output': 'I am LangChain.'})
messages = memory.chat_memory.messages
A[{'role': 'human', 'content': 'Hi'}, {'role': 'ai', 'content': 'Hello!'}, {'role': 'human', 'content': 'What is your name?'}, {'role': 'ai', 'content': 'I am LangChain.'}]
B['Hi', 'Hello!', 'What is your name?', 'I am LangChain.']
C[HumanMessage(content='Hi'), AIMessage(content='Hello!'), HumanMessage(content='What is your name?'), AIMessage(content='I am LangChain.')]
D['Human: Hi', 'AI: Hello!', 'Human: What is your name?', 'AI: I am LangChain.']
Attempts:
2 left
💡 Hint
Check the type of objects stored in chat_memory.messages.
📝 Syntax
advanced
2:00remaining
Which option correctly initializes a LangChain chat memory with a custom key?
You want to create a ConversationBufferMemory that stores history under the key 'chat_history'. Which code snippet is correct?
Amemory = ConversationBufferMemory(key='chat_history')
Bmemory = ConversationBufferMemory(memory_key='chat_history')
Cmemory = ConversationBufferMemory(history_key='chat_history')
Dmemory = ConversationBufferMemory(memoryKey='chat_history')
Attempts:
2 left
💡 Hint
Check the official parameter name for setting the memory key in ConversationBufferMemory.
🔧 Debug
advanced
2:00remaining
Why does this LangChain chat memory code raise an AttributeError?
Given this code, why does it raise AttributeError: 'ConversationBufferMemory' object has no attribute 'messages'?
LangChain
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
print(memory.messages)
ABecause <code>ConversationBufferMemory</code> does not have a direct <code>messages</code> attribute; messages are inside <code>chat_memory</code>.
BBecause <code>messages</code> is a private attribute and cannot be accessed directly.
CBecause <code>ConversationBufferMemory</code> must be initialized with <code>messages=True</code> to have that attribute.
DBecause the import statement is incorrect and does not import <code>ConversationBufferMemory</code> properly.
Attempts:
2 left
💡 Hint
Check the structure of ConversationBufferMemory and where messages are stored.
🧠 Conceptual
expert
3:00remaining
Which LangChain memory type best suits a chat app needing to remember only the last 3 exchanges?
You are building a chat app that should keep only the last 3 user and AI messages in memory to save space. Which LangChain memory class is best to use?
AConversationBufferWindowMemory with k=3
BConversationBufferMemory with memory_key='last_3'
CConversationSummaryMemory with max_tokens=3
DConversationTokenBufferMemory with token_limit=3
Attempts:
2 left
💡 Hint
Think about which memory type limits the number of recent messages stored.

Practice

(1/5)
1. What is the main purpose of ConversationBufferMemory in Langchain chat applications?
easy
A. To store and manage past chat messages for context
B. To generate new chat messages automatically
C. To connect to external databases
D. To format chat messages for display

Solution

  1. Step 1: Understand the role of chat history

    Chat history helps keep track of previous messages to maintain context in conversations.
  2. Step 2: Identify what ConversationBufferMemory does

    This class stores and retrieves past messages so the chat app remembers what was said.
  3. Final Answer:

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

    Chat history storage = A [OK]
Hint: Remember: ConversationBufferMemory saves past messages [OK]
Common Mistakes:
  • Thinking it generates new messages
  • Confusing it with database connectors
  • Assuming it formats messages for UI
2. Which of the following is the correct way to initialize a ConversationBufferMemory instance in Langchain?
easy
A. memory = ConversationBufferMemory.create()
B. memory = ConversationBufferMemory()
C. memory = ConversationBufferMemory.new()
D. memory = ConversationBufferMemory.load()

Solution

  1. Step 1: Recall the standard initialization pattern

    In Langchain, classes are usually instantiated by calling the class name with parentheses.
  2. Step 2: Check the options for correct syntax

    Only ConversationBufferMemory() follows this pattern; others are invalid or do not exist.
  3. Final Answer:

    memory = ConversationBufferMemory() -> Option B
  4. Quick Check:

    Standard class instantiation = D [OK]
Hint: Use parentheses to create instances: ClassName() [OK]
Common Mistakes:
  • Using .load(), .new(), or .create() which are not valid here
  • Forgetting parentheses when creating an instance
  • Confusing with static methods
3. Given this code snippet, what will print(memory.load_memory_variables({})) output?
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.chat_memory.add_user_message('Hello')
memory.chat_memory.add_ai_message('Hi there!')
medium
A. {'history': 'Human: Hello\nAI: Hi there!\n'}
B. {'history': 'Hi there!\nHello\n'}
C. {'history': ''}
D. Error: method not found

Solution

  1. Step 1: Understand how messages are added

    User and AI messages are added in order: 'Hello' then 'Hi there!'.
  2. Step 2: Check how load_memory_variables returns history

    It returns a dictionary with key 'history' and a string showing messages prefixed by 'Human:' and 'AI:' in order.
  3. Final Answer:

    {'history': 'Human: Hello\nAI: Hi there!\n'} -> Option A
  4. Quick Check:

    History shows messages in order with labels = C [OK]
Hint: History shows messages in order with 'Human:' and 'AI:' labels [OK]
Common Mistakes:
  • Mixing message order
  • Expecting empty history
  • Assuming method does not exist
4. What is wrong with this code snippet that tries to add chat history?
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.add_user_message('Hello')
medium
A. You must import a different class for adding messages
B. You need to call memory.save() before adding messages
C. The message text must be a list, not a string
D. ConversationBufferMemory has no method add_user_message directly

Solution

  1. Step 1: Check method availability on ConversationBufferMemory

    The method add_user_message is not directly on ConversationBufferMemory but on its chat_memory attribute.
  2. Step 2: Identify correct usage

    Correct usage is memory.chat_memory.add_user_message(), not memory.add_user_message().
  3. Final Answer:

    ConversationBufferMemory has no method add_user_message directly -> Option D
  4. Quick Check:

    Use chat_memory to add messages = B [OK]
Hint: Add messages via memory.chat_memory, not memory directly [OK]
Common Mistakes:
  • Calling add_user_message on memory instead of chat_memory
  • Thinking message must be a list
  • Assuming save() is required before adding
5. You want to build a chat app that remembers only the last 3 messages. Which approach using ConversationBufferMemory is best to achieve this?
hard
A. Use ConversationBufferMemory with a custom buffer size of 3
B. Use ConversationBufferMemory without changes; it stores all messages
C. Manually delete older messages from chat_memory after each addition
D. Create a new ConversationBufferMemory instance for every message

Solution

  1. Step 1: Understand ConversationBufferMemory limitations

    ConversationBufferMemory stores all past messages without a built-in parameter to limit the number of messages (unlike ConversationBufferWindowMemory).
  2. Step 2: Identify the best approach among options

    Manually deleting older messages from memory.chat_memory.messages after each addition (e.g., memory.chat_memory.messages = memory.chat_memory.messages[-3:]) keeps only the last 3.
  3. Final Answer:

    Manually delete older messages from chat_memory after each addition -> Option C
  4. Quick Check:

    Manual management for custom limits = B [OK]
Hint: Manually prune memory.chat_memory.messages to last 3 after adds [OK]
Common Mistakes:
  • ConversationBufferMemory lacks message count limit parameter (use WindowMemory for that)
  • Not limiting buffer and storing unlimited history
  • Recreating instance loses all prior context
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard