Getting ValueError: Missing some input keys: {'query'} while using RetrievalQA #29868
Replies: 3 comments 3 replies
-
Hey @saiful1984! I'm here to help you out with any bugs, questions, or contributing help you might need. Let's squash those bugs together! 🤖 To fix the Here's how you can adjust your code:
Here's an example of how you can use from langchain.chains import create_retrieval_chain
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# Assuming retriever and llm are already set up
system_prompt = (
"Use the given context to answer the question. "
"If you don't know the answer, say you don't know. "
"Use three sentence maximum and keep the answer concise. "
"Context: {context}"
)
prompt = ChatPromptTemplate.from_messages(
[
("system", system_prompt),
("human", "{input}"),
]
)
question_answer_chain = create_stuff_documents_chain(llm, prompt)
chain = create_retrieval_chain(retriever, question_answer_chain)
result = chain.invoke({"input": query}) Switching to To continue talking to Dosu, mention @dosu. Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other |
Beta Was this translation helpful? Give feedback.
-
@dosu In your code how does context gets fitted in "Context: {context}" |
Beta Was this translation helpful? Give feedback.
-
The issue is resolved now |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
My code for RetrievalQA is below
class RAGQueryHandler:
def init(self, retriever, llm):
self.retriever = retriever
self.llm = llm
Cell In[59], line 5
2 query = "What is the capital of England?"
4 # Use the query_rag method instead of get_answer
----> 5 answer = rag_handler.query_rag(query)
6 #result = rag_handler.query_rag({"query": query})
7 print(f"Question: {query}")
Cell In[57], line 34, in RAGQueryHandler.query_rag(self, query)
28 print(f"docs: {docs}")
29 # print(f"sources {sources}")
30 # print(f"context: {context}")
31 # Run the query and get the answer
32 #answer = qa_chain.run(query)
33 #answer = qa_chain.invoke({"query": query})
---> 34 answer = qa_chain.invoke({"query": query, "context": docs})
35 #answer = qa_chain.invoke({"input": query})
36 #answer = qa.run(query=query)
37
38
39 #return {"answer": answer, "sources": sources}
40 return {"answer": answer["result"], "sources": sources}
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:170, in Chain.invoke(self, input, config, **kwargs)
168 except BaseException as e:
169 run_manager.on_chain_error(e)
--> 170 raise e
171 run_manager.on_chain_end(outputs)
173 if include_run_info:
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:160, in Chain.invoke(self, input, config, **kwargs)
157 try:
158 self._validate_inputs(inputs)
159 outputs = (
--> 160 self._call(inputs, run_manager=run_manager)
161 if new_arg_supported
162 else self._call(inputs)
163 )
165 final_outputs: Dict[str, Any] = self.prep_outputs(
166 inputs, outputs, return_only_outputs
167 )
168 except BaseException as e:
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/retrieval_qa/base.py:154, in BaseRetrievalQA._call(self, inputs, run_manager)
152 else:
153 docs = self._get_docs(question) # type: ignore[call-arg]
--> 154 answer = self.combine_documents_chain.run(
155 input_documents=docs, question=question, callbacks=_run_manager.get_child()
156 )
158 if self.return_source_documents:
159 return {self.output_key: answer, "source_documents": docs}
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:181, in deprecated..deprecate..warning_emitting_wrapper(*args, **kwargs)
179 warned = True
180 emit_warning()
--> 181 return wrapped(*args, **kwargs)
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:611, in Chain.run(self, callbacks, tags, metadata, *args, **kwargs)
606 return self(args[0], callbacks=callbacks, tags=tags, metadata=metadata)[
607 _output_key
608 ]
610 if kwargs and not args:
--> 611 return self(kwargs, callbacks=callbacks, tags=tags, metadata=metadata)[
612 _output_key
613 ]
615 if not kwargs and not args:
616 raise ValueError(
617 "
run
supported with either positional arguments or keyword arguments,"618 " but none were provided."
619 )
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:181, in deprecated..deprecate..warning_emitting_wrapper(*args, **kwargs)
179 warned = True
180 emit_warning()
--> 181 return wrapped(*args, **kwargs)
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:389, in Chain.call(self, inputs, return_only_outputs, callbacks, tags, metadata, run_name, include_run_info)
357 """Execute the chain.
358
359 Args:
(...)
380
Chain.output_keys
.381 """
382 config = {
383 "callbacks": callbacks,
384 "tags": tags,
385 "metadata": metadata,
386 "run_name": run_name,
387 }
--> 389 return self.invoke(
390 inputs,
391 cast(RunnableConfig, {k: v for k, v in config.items() if v is not None}),
392 return_only_outputs=return_only_outputs,
393 include_run_info=include_run_info,
394 )
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:170, in Chain.invoke(self, input, config, **kwargs)
168 except BaseException as e:
169 run_manager.on_chain_error(e)
--> 170 raise e
171 run_manager.on_chain_end(outputs)
173 if include_run_info:
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:158, in Chain.invoke(self, input, config, **kwargs)
151 run_manager = callback_manager.on_chain_start(
152 None,
153 inputs,
154 run_id,
155 name=run_name,
156 )
157 try:
--> 158 self._validate_inputs(inputs)
159 outputs = (
160 self._call(inputs, run_manager=run_manager)
161 if new_arg_supported
162 else self._call(inputs)
163 )
165 final_outputs: Dict[str, Any] = self.prep_outputs(
166 inputs, outputs, return_only_outputs
167 )
File ~/Documents/dc/miniconda3/envs/agentDemo/lib/python3.11/site-packages/langchain/chains/base.py:290, in Chain._validate_inputs(self, inputs)
288 missing_keys = set(self.input_keys).difference(inputs)
289 if missing_keys:
--> 290 raise ValueError(f"Missing some input keys: {missing_keys}")
ValueError: Missing some input keys: {'query'}
How can i fix this
Beta Was this translation helpful? Give feedback.
All reactions