RAG2026-5일22차시 · RAG를 Graph로 바꾸기17 / 20← 이전목차다음 →MetaContents

22차시. RAG를 Graph로 바꾸기

퀴즈 1 — 예전과 같은 키를 돌려주는 그래프 ask

그래프 ask도 예전과 같은 키를 반환하게 작성하세요.

빈칸 코드에서 시작합니다.

Python
def ask(answer, sources):
    pass
결과 보기 (예시 풀이)
Python
# 그래프로 바꾼 뒤에도 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. 실습 ② — 그래프 완성」

← 이전 절22차시 · 실습 1 — RAG를 Graph로 바꾸기 실습 따라 하기다음 절 →22차시 · 퀴즈 2 — 문서 유무로 다음 노드 이름 고르기