RAG2026-5일20차시 · Edge 이해8 / 18← 이전목차다음 →MetaContents

20차시. Edge 이해

5. 실습 ② — 그래프 구조 눈으로 보기

출처: 원본 PDF 20차시_Edge이해.pdf 10~11쪽 · 쪽 그림 10쪽 11쪽

연결이 의도대로 됐는지 확인하는 가장 빠른 방법입니다.

5-1) 터미널에서 확인

출력
print(app.get_graph().draw_ascii())

출력
──────────────────────────────────────
        +-----------+
        | __start__ |
        +-----------+
              *
              *
        +----------+
        | retrieve |
        +----------+
         ..        ..
       ..            ..
+----------+      +----------+
| generate |      | fallback |
+----------+      +----------+
         **        **
           *      *
        +---------+
        | __end__ |
        +---------+

5-2) 이미지 파일로 저장

Python
png = app.get_graph().draw_mermaid_png()
with open("graph.png", "wb") as f:
    f.write(png)
print("graph.png 저장 완료")

실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)

출력
graph.png 저장 완료

💡 구조 확인을 습관으로
그래프를 만들 때마다 draw_ascii()를 찍어보세요.
· 연결이 빠진 노드가 있는지
· END로 가는 길이 없는 노드가 있는지
· 의도한 분기가 실제로 갈라지는지
코드를 읽는 것보다 그림 한 장이 빠릅니다.

5-3) 실행해보기

출처: 원본 PDF 11쪽

출력
def run(question):
    init = {"question": question, "query": question,
            "retries": 0, "log": [], "tried_queries": []}
    final = app.invoke(init)
    print("Q:", question)
    print("A:", final["answer"][:70])
    for line in final["log"]:
        print("   ", line)
    print("-" * 55)

run("환불은 며칠 이내인가요?")
run("대표이사 이름은?")

Q: 환불은 며칠 이내인가요?
A: 환불은 상품 수령 후 7일 이내에 신청하실 수 있습니다[1]...
    [retrieve] '환불은 며칠 이내인가요?' → 3/5건 통과
    [generate] 87자 생성 (인용 정상)
─────────────────────────────────────────────
──────────
Q: 대표이사 이름은?
A: 관련 자료를 찾지 못했습니다. 질문을 조금 더 구체적으로...
    [retrieve] '대표이사 이름은?' → 0/5건 통과
    [fallback] 안내 메시지 반환
← 이전 절20차시 · 4. 실습 ① — 19차시 if문을 Edge로 옮기기다음 절 →20차시 · 6. 루프 — 되돌아가는 Edge