작성
·
10
0
아래 코드에서 create_retrieval_chain에 인자로 combine_docs_chain을 사용하는데요,
retrieval_qa_chat_prompt에서 정의한 {context}는 프롬프트에 고정적으로 있어야 하는 부분인가요?
내부적으로 context라는 이름으로 정해져있는 것인지 궁금합니다.
retrieval_qa_chat_prompt = ChatPromptTemplate.from_template("""
다음 컨텍스트를 바탕으로 질문에 답변해주세요. 컨텍스트에 관련 정보가 없다면,
"주어진 정보로는 답변할 수 없습니다."라고 말씀해 주세요.
컨텍스트: {context}
질문: {input}
답변:
""")
# 체인 생성
combine_docs_chain = create_stuff_documents_chain(llm, retrieval_qa_chat_prompt)
rag_chain = create_retrieval_chain(retriever, combine_docs_chain)
# 체인 실행
query = "테슬라 창업자는 누구인가요?"
response = rag_chain.invoke({"input": query})
답변 1
0
안녕하세요. 판다스 스튜디오입니다.
여기서 {context}
는 create_retrieval_chain
에서 내부적으로 정해진 고정 변수가 맞습니다. retriever에서 가져온 문서들을 자동으로 context
라는 키로 combine_docs_chain에 전달하므로, 프롬프트에서는 반드시 {context}
를 사용해야 합니다. 마찬가지로 {input}
도 사용자 질문을 받는 고정된 키 이름입니다. 이 변수명들을 바꾸면 체인이 제대로 작동하지 않으므로 그대로 사용해야 합니다.
감사합니다.