RetrievalQA is Deprecated
RetrievalQA 가 0.1.17 버전 이후로 Deprecated 되었다고 마이그레이션 가이드를 보고 다음과 같이 바꿨습니다.
from langchain import hub
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
retrieval_qa_chat_prompt = hub.pull("langchain-ai/retrieval-qa-chat")
combine_docs_chain = create_stuff_documents_chain(llm, retrieval_qa_chat_prompt)
rag_chain = create_retrieval_chain(database.as_retriever(), combine_docs_chain)
rag_chain.invoke({"input": query})위 예시는 잘 작동하는데, rml/rag-prompt 를 사용하면,
KeyError: "Input to ChatPromptTemplate is missing variables {'question'}. Expected: ['context', 'question'] Received: ['input', 'context']\nNote: if you intended {question} to be part of the string and not a variable, please escape it with double curly braces like: '{{question}}'.\nFor troubleshooting, visit: https://python.langchain.com/docs/troubleshooting/errors/INVALID_PROMPT_INPUT "
가 발생하는데, template 의 placeholder 의 형태가 달라서인것 같은데, 어떻게 키값을 설정해야 하나요?
답변 3
0
안녕하세요 종하님! 왠지 다른 분들도 도움을 받으실 수 있을 것 같아서 PromptTemplate 활용방법을 추가촬영 했습니다. 강의에서 활용한 노트북도 깃에 올려두었으니 한번 보시고, 디버깅 해보시면 좋을 것 같습니다!
강의영상: https://www.inflearn.com/courses/lecture?courseId=333796&unitId=264388&subtitleLanguage=ko
0
invoke하는 부분을 'input' 대신 'question' 으로 변경해주시면 됩니다. 이건 랭체인에서 프롬프트를 처리하는 문법인데요, 이번 주말에 설명자료를 작성해서 강의를 업데이트하고 공유드리겠습니다!
0
KeyError Traceback (most recent call last)
Cell In[9], line 1
----> 1 rag_chain.invoke({"question": query})
File ~/.pyenv/versions/3.12.8/envs/rag/lib/python3.12/site-packages/langchain_core/runnables/base.py:5352, in RunnableBindingBase.invoke(self, input, config, **kwargs)
5346 def invoke(
5347 self,
5348 input: Input,
5349 config: Optional[RunnableConfig] = None,
5350 **kwargs: Optional[Any],
5351 ) -> Output:
-> 5352 return self.bound.invoke(
5353 input,
5354 self._merge_configs(config),
5355 **{**self.kwargs, **kwargs},
5356 )
File ~/.pyenv/versions/3.12.8/envs/rag/lib/python3.12/site-packages/langchain_core/runnables/base.py:3020, in RunnableSequence.invoke(self, input, config, **kwargs)
3018 context.run(_set_config_context, config)
3019 if i == 0:
-> 3020 input = context.run(step.invoke, input, config, **kwargs)
3021 else:
3022 input = context.run(step.invoke, input, config)
...
66 ).assign(answer=combine_docs_chain)
67 ).with_config(run_name="retrieval_chain")
69 return retrieval_chain
KeyError: 'input'rag_chain.invoke({"question": query}) 로 변경했지만, 위와 같은 에러가 발생합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Jongha Lim님께서 질문하신 내용은 LangChain에서 RetrievalQA가 사용되지 않게 된 뒤, 새로운 체인 구성이 요구되는 상황에 관련한 것입니다. 마이그레이션 후 KeyError가 발생한다는 점에서 프롬프트 템플릿의 변수명이 기대와 맞지 않는 경우가 문제의 핵심으로 보입니다.
문제 설명 및 해결방안
KeyError는 제공된 프롬프트 템플릿에 필요한 변수들이 올바르게 매핑되지 않았을 때 발생합니다. rml/rag-prompt를 사용하는 경우, 해당 프롬프트의 기대 변수와 체인에서 사용하는 변수가 일치하지 않아 오류가 생겼습니다.
- 프롬프트 변수 조정:
retrieval_qa_chat_prompt = hub.pull("langchain-ai/retrieval-qa-chat")대신 원하는 대로rml/rag-prompt를 가져오신 후, 그 프롬프트가 요구하는 변수 (question,context등)에 맞게 체인의 입력 변수를 조정해야 합니다.
코드 수정 예시
아래는 rml/rag-prompt를 사용할 때 question과 같은 변수에 맞춰 체인을 작성하는 예시입니다:
from langchain import hub
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
retrieval_qa_chat_prompt = hub.pull("rml/rag-prompt")
combine_docs_chain = create_stuff_documents_chain(llm, retrieval_qa_chat_prompt)
# 적절한 입력 변수명을 사용하도록 일부 조정이 필요합니다.
# 예를 들어, {'input': query} 대신 {'question': query} 등의 방식으로 키 값을 올바르게 맞춰줍니다.
rag_chain = create_retrieval_chain(database.as_retriever(), combine_docs_chain)
# invoke 할 때 필요한 입력 변수를 올바르게 지정해야 합니다.
rag_chain.invoke({"question": query, "context": some_retrieved_context})
이 방식으로 진행하시되, 프롬프트가 요구하는 변수명을 항상 검사하고 그에 맞게 코드를 조정하심으로써 적절히 해결할 수 있을 것입니다.
관련 질문이 다음의 링크에서 논의된 바 있으니, 참고하시어 문제를 해결해보시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
ollama설치해서 llama로 돌려도 되나요?
0
25
2
소득세법 docx 파일 공유 요청건
0
78
1
EXAONE 모델 불러오기 안되는 문제
0
92
2
[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유
0
118
2
강의 9에 QA관련된 import가 되지 않네요
0
118
2
🚨 python3.14 를 쓰고 계시면 chroma 에서 ConfigError 가 발생합니다.
1
210
1
강의와 책 관련 질문
0
93
1
문서 전처리 고민
0
116
1
RAG 배포 질문드립니다
0
102
1
강의 내용과는 별개로 궁금한 점이 있습니다
0
92
2
폐쇄망 챗봇 모델
0
98
1
AI agent 쿠폰
0
98
2
저는 왜 그대로 했는데 답변이 틀리게 나오는지 모르겠네요
0
108
2
langchain howto/sequence는 지금 doc 공식 사이트 어디서 확인할 수 있나요?
1
98
1
new_question에 대한 답 출력
0
78
2
랭체인 라이브러리
0
154
2
[LangGraph를 활용한 AI Agent 개발] 쿠폰 유효기간
0
110
1
postgresql의 pgvector 벡터는 어떤가요?
0
357
2
doc관련
0
137
2
load_dotenv() 실행 False
0
98
1
RAG 답변 개선을 위한 정답지 활용 구조 검토 요청
0
124
2
3.2 from langchain.chains ~ 에서 모듈을 찾지 못할 때.
2
420
2
강의 완료 오류
0
93
1
hub.pull 이슈
0
138
2





