22차시. RAG를 Graph로 바꾸기
퀴즈 1 — 예전과 같은 키를 돌려주는 그래프 ask
그래프 ask도 예전과 같은 키를 반환하게 작성하세요.
빈칸 코드에서 시작합니다.
def ask(answer, sources):
pass결과 보기 (예시 풀이)
# 그래프로 바꾼 뒤에도 ask() 는 15차시와 같은 모양의 딕셔너리를 돌려줘야 합니다.
# app.py 는 result["answer"], result["sources"] 를 읽으므로 이 두 키 이름을 지킵니다.
def ask(answer, sources):
return {"answer": answer, "sources": sources}
# 그래프가 끝난 뒤의 최종 State 를 흉내 낸 가짜 값입니다.
final_state = {
"answer": "환불은 수령 후 7일 이내에 신청합니다[1].",
"documents": [{"filename": "manual.pdf", "page_no": 3}],
}
# 최종 State 에서 출처만 추려 ask() 에 넘깁니다.
sources = [{"file": d["filename"], "page": d["page_no"]}
for d in final_state["documents"]]
result = ask(final_state["answer"], sources)
# 확인 1: app.py 가 읽던 두 키가 그대로 있는지
print(sorted(result.keys()))
# 확인 2: 화면 코드가 하던 대로 꺼내 쓸 수 있는지
print("답변:", result["answer"])
print("출처:", result["sources"])
# 확인 3: 근거가 없을 때도 같은 키 모양인지
print(ask("관련 자료를 찾지 못했습니다.", []))
실행 결과
['answer', 'sources']
답변: 환불은 수령 후 7일 이내에 신청합니다[1].
출처: [{'file': 'manual.pdf', 'page': 3}]
{'answer': '관련 자료를 찾지 못했습니다.', 'sources': []}채점 기준: app.py가 읽던 키를 유지한다.
관련 교안: 22차시 「4. 실습 ② — 그래프 완성」