3.6 일부 코드가 강의 그대로 따라하면 에러나요

에러메세지는 이건데요..
KeyError: "Input to ChatPromptTemplate is missing variables {'dictionary'}. Expected: ['dictionary', 'question'] Received: ['question']"
그래서 아래처럼 고쳤더니 결과는 잘 나오는데
new_question = dictionary_chain.invoke({
"dictionary": dictionary,
"question": query
})이러고 나서 또 밑에 ai_response관련 코드도 같은 에러가 나오다보니 강의를 매끄럽게 들을 수 없고 자꾸 흐름이 끊기네요.
사실 3.5때도 강의코드 그대로 따라하니까 llm이 답변을 제대로 안해줘서, chunk_size / overlap 이렇게 저렇게 조정하고. 조정해보니 또 한번에 넣을 수 없는 사이즈라서 배치처럼 짤라서 넣고. 우여곡절 끝에 강의랑 동일한 결과를 얻긴 했는데요...
빠르게 슥슥 듣고 강사님 다른 강의(ai agent)로 넘어가고싶은데 매끄럽게 안되니까 초큼 힘들어요 ㅠ
제 환경이 잘못 구성된걸까요 ㅠㅠ
답변 1
0
안녕하세요! 좋은 질문 감사합니다.
제가 제공해드린 코드와 올려주신 스크린샷에는 한가지 차이가 있는데요, 제공해주신 스크린샷에는ChatPromptTemplate을 생성할때 f 가 빠져있습니다. f-string을 사용하지 않는 경우 어떤 차이가 있는지 설명을 드려보자면
랭체인의 PromptTemplate들은, 중괄호로 감싸져있는 항목들을 변수로 인식해서 invoke()를 활용해서 넘겨줘야 합니다.
prompt = ChatPromptTemplate.from_template(f"""
사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요.
만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다.
그런 경우에는 질문만 리턴해주세요
사전: {dictionary}
질문: {{question}}
""")위와 같이 작성하면 f-string 을 활용하기 때문에 중괄호 한겹으로 감싸진 dictionary는 위에 작성한 dictionary 로 치환되고, 중괄호 두겹으로 감싸진 question만 변수로 인식하기 때문에, invoke()를 호출할 때 question만 넘겨주면 됩니다.
하지만 hylee님께서 작성하신 것처럼 아래와 같이 작성하는 경우에는
prompt = ChatPromptTemplate.from_template("""
사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요.
만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다.
그런 경우에는 질문만 리턴해주세요
사전: {dictionary}
질문: {{question}}
""")f-string을 활용하지 않기 때문에 dictionary와 question을 모두 변수로 인식해서 .invoke()를 호출할 때 작성하신 것처럼 dictionary와 question을 모두 넘겨줘야합니다.
랭체인 문법에 아직 충분히 익숙하지 않으시다면 말슴하신 AI Agent강의↗도 좋지만, 한시간으로 끝내는 LangChain 기본기↗ 강의를 통해서 문법에 조금 더 익숙해지신 후에 AI Agent강의로 넘어가시는 걸 추천 드립니다!
온톨로지 활용
0
44
2
ollama설치해서 llama로 돌려도 되나요?
0
46
2
소득세법 docx 파일 공유 요청건
0
95
1
EXAONE 모델 불러오기 안되는 문제
0
95
2
[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유
0
125
2
강의 9에 QA관련된 import가 되지 않네요
0
125
2
🚨 python3.14 를 쓰고 계시면 chroma 에서 ConfigError 가 발생합니다.
1
224
1
강의와 책 관련 질문
0
96
1
문서 전처리 고민
0
121
1
RAG 배포 질문드립니다
0
106
1
강의 내용과는 별개로 궁금한 점이 있습니다
0
98
2
폐쇄망 챗봇 모델
0
102
1
AI agent 쿠폰
0
99
2
저는 왜 그대로 했는데 답변이 틀리게 나오는지 모르겠네요
0
109
2
langchain howto/sequence는 지금 doc 공식 사이트 어디서 확인할 수 있나요?
1
100
1
new_question에 대한 답 출력
0
80
2
랭체인 라이브러리
0
159
2
[LangGraph를 활용한 AI Agent 개발] 쿠폰 유효기간
0
111
1
postgresql의 pgvector 벡터는 어떤가요?
0
383
2
doc관련
0
144
2
load_dotenv() 실행 False
0
103
1
RAG 답변 개선을 위한 정답지 활용 구조 검토 요청
0
125
2
3.2 from langchain.chains ~ 에서 모듈을 찾지 못할 때.
2
429
2
강의 완료 오류
0
94
1





