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) 이미지 파일로 저장
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] 안내 메시지 반환