Bird
Raised Fist0
LangChainframework~10 mins

Question reformulation with history in LangChain - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the necessary class for question reformulation.

LangChain
from langchain.chains import [1]
Drag options to blanks, or click blank then click option'
ARephraseQuestionChain
BStuffDocumentsChain
CConversationalRetrievalChain
DChatVectorDBChain
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a chain that only handles document stuffing.
Selecting a chain unrelated to conversation.
2fill in blank
medium

Complete the code to create a retriever from a vector store.

LangChain
retriever = vectorstore.[1]()
Drag options to blanks, or click blank then click option'
Aas_retriever
Bget_retriever
Cretrieve
Dfetch_retriever
Attempts:
3 left
💡 Hint
Common Mistakes
Using a method that does not exist on the vector store.
Confusing retrieval with fetching.
3fill in blank
hard

Fix the error in the code to create a ConversationalRetrievalChain with a language model and retriever.

LangChain
qa_chain = ConversationalRetrievalChain.from_llm(llm=[1], retriever=retriever)
Drag options to blanks, or click blank then click option'
Allm_model
Bmodel
Clanguage_model
Dllm
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect parameter names causing runtime errors.
Passing the model instance with wrong variable names.
4fill in blank
hard

Fill both blanks to reformulate a question using chat history and a new question.

LangChain
rephrased_question = qa_chain.[1](question=new_question, chat_history=[2])
Drag options to blanks, or click blank then click option'
Arephrase_question
Bgenerate_question
Cchat_history
Dhistory
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect method names that do not exist.
Passing chat history with wrong parameter names.
5fill in blank
hard

Fill all three blanks to create a question-answering chain that uses a language model, retriever, and returns source documents.

LangChain
qa_chain = ConversationalRetrievalChain.from_llm(llm=[1], retriever=[2], return_source_documents=[3])
Drag options to blanks, or click blank then click option'
Allm
Bretriever
CTrue
DFalse
Attempts:
3 left
💡 Hint
Common Mistakes
Passing wrong variable names for llm or retriever.
Forgetting to set return_source_documents to True.

Practice

(1/5)
1. What is the main purpose of question reformulation with history in LangChain?
easy
A. To store user personal data securely
B. To speed up the chatbot response time
C. To translate questions into multiple languages
D. To help chatbots understand follow-up questions better

Solution

  1. Step 1: Understand the role of question reformulation

    It helps the chatbot by using previous conversation history to clarify follow-up questions.
  2. Step 2: Identify the main benefit

    This makes the chatbot understand user intent better and respond more naturally.
  3. Final Answer:

    To help chatbots understand follow-up questions better -> Option D
  4. Quick Check:

    Question reformulation = better follow-up understanding [OK]
Hint: Focus on improving chatbot understanding of follow-ups [OK]
Common Mistakes:
  • Confusing reformulation with speed optimization
  • Thinking it stores personal data
  • Assuming it translates languages
2. Which of the following is the correct way to create a ConversationChain in LangChain that uses question reformulation with history?
easy
A. chain = ConversationChain(llm=llm, memory=ConversationBufferMemory())
B. chain = ConversationChain(memory=llm, llm=ConversationBufferMemory())
C. chain = ConversationChain(llm=llm, history=ConversationBufferMemory())
D. chain = ConversationChain(buffer=llm, memory=ConversationBufferMemory())

Solution

  1. Step 1: Recall the correct parameter names

    ConversationChain expects an LLM instance as 'llm' and a memory object as 'memory'.
  2. Step 2: Match the correct syntax

    chain = ConversationChain(llm=llm, memory=ConversationBufferMemory()) correctly assigns 'llm=llm' and 'memory=ConversationBufferMemory()'. Others mix parameter names or use incorrect ones.
  3. Final Answer:

    chain = ConversationChain(llm=llm, memory=ConversationBufferMemory()) -> Option A
  4. Quick Check:

    Correct parameters = llm and memory [OK]
Hint: Remember 'llm' and 'memory' are required parameters [OK]
Common Mistakes:
  • Swapping 'llm' and 'memory' parameters
  • Using 'history' instead of 'memory'
  • Passing wrong argument names
3. Given the following code snippet, what will be the output after the second question?
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

llm = SomeLLM()
memory = ConversationBufferMemory()
chain = ConversationChain(llm=llm, memory=memory)

print(chain.run("What is AI?"))
print(chain.run("And how does it learn?"))
medium
A. The memory will reset after each question
B. The second answer will ignore the first question
C. The second answer will consider the first question's context
D. The code will raise a syntax error

Solution

  1. Step 1: Understand ConversationBufferMemory behavior

    This memory stores conversation history and passes it to the LLM for context.
  2. Step 2: Analyze the chain.run calls

    The second call to run uses the stored history, so the answer will reflect the first question's context.
  3. Final Answer:

    The second answer will consider the first question's context -> Option C
  4. Quick Check:

    Memory stores history = context-aware answers [OK]
Hint: ConversationChain with memory keeps context across calls [OK]
Common Mistakes:
  • Assuming memory resets automatically
  • Thinking each run is independent
  • Expecting syntax errors from correct code
4. Identify the error in this LangChain code snippet for question reformulation with history:
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

llm = SomeLLM()
chain = ConversationChain(llm=llm, memory=ConversationBufferMemory)

response = chain.run("Explain machine learning.")
print(response)
medium
A. The llm variable is not defined
B. ConversationBufferMemory is not instantiated with parentheses
C. The run method does not exist on ConversationChain
D. The print statement is missing parentheses

Solution

  1. Step 1: Check how ConversationBufferMemory is used

    It must be instantiated with parentheses to create an object, but here it's passed as a class.
  2. Step 2: Verify other parts

    llm is defined, run method exists, and print syntax is correct in Python 3.
  3. Final Answer:

    ConversationBufferMemory is not instantiated with parentheses -> Option B
  4. Quick Check:

    Instantiate classes with () [OK]
Hint: Always add () when creating memory instance [OK]
Common Mistakes:
  • Forgetting parentheses when instantiating classes
  • Assuming run method is missing
  • Confusing print syntax in Python 3
5. You want to improve a chatbot to handle multi-turn conversations with question reformulation using LangChain. Which approach best achieves this?
hard
A. Use ConversationChain with ConversationBufferMemory to keep history and reformulate questions
B. Use a simple LLM call without memory for faster responses
C. Store conversation history manually in a list and pass only the last question to the LLM
D. Use ConversationChain but reset memory after each question to avoid confusion

Solution

  1. Step 1: Understand multi-turn conversation needs

    Keeping conversation history helps the chatbot understand context and reformulate questions properly.
  2. Step 2: Evaluate options

    Use ConversationChain with ConversationBufferMemory to keep history and reformulate questions uses ConversationChain with memory, which automates history management and reformulation. Others either ignore history or reset it, losing context.
  3. Final Answer:

    Use ConversationChain with ConversationBufferMemory to keep history and reformulate questions -> Option A
  4. Quick Check:

    Memory + ConversationChain = best multi-turn handling [OK]
Hint: Use ConversationChain with memory for natural multi-turn chats [OK]
Common Mistakes:
  • Ignoring conversation history
  • Resetting memory too often
  • Manually managing history inefficiently
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