RAG2026-5일17차시 · LangGraph 입문10 / 20← 이전목차다음 →MetaContents

17차시. LangGraph 입문

조건부 분기가 있는 Graph 만들기

출처: 원본 PDF 17차시_LangGraph입문.pdf 9~10쪽 · 쪽 그림 9쪽 10쪽

이제 좀 더 복잡한 예시입니다. "검색 결과가 좋으면 진행, 나쁘면 다시 검색"하는 구조입니다.

조건을 판단하는 함수

Python
def check_search_quality(state: SimpleRAGState):
    # 검색 결과의 개수로 판단
    if len(state["results"]) > 0:
        return "good"   # 결과가 있으면 "good"
    else:
        return "bad"    # 결과가 없으면 "bad"

조건부 Edge 추가하기

출처: 원본 PDF 10쪽

출력
# Graph 생성
graph = StateGraph(SimpleRAGState)

# Node 추가
graph.add_node("search", search_node)
graph.add_node("answer", answer_node)

# 조건부 Edge 추가
graph.add_conditional_edges(
    "search",                # 어디서?
    check_search_quality,    # 어떤 함수로 판단?
    {
        "good": "answer",    # good이면 answer로
        "bad": "search"      # bad이면 다시 search로
    }
)

# 나머지는 같음
graph.set_entry_point("search")
graph.set_finish_point("answer")

실제로 동작하는 모습

출처: 원본 PDF 10쪽

첫 번째 시도
입력: query = "가격?"
↓
search_node 실행 → 검색 수행 → results = ["문서1", "문서2"]
↓
check_search_quality 실행 → len(results) = 2 > 0 → "good" 반환
↓
answer_node 실행 (good이므로) → 답변 생성 → State 반환
만약 검색이 실패했다면
search_node 실행 → 검색 실패 → results = []
↓
check_search_quality 실행 → len(results) = 0 → "bad" 반환
↓
다시 search_node로! (루프) → 새로운 검색 시도

← 이전 절17차시 · 실제 코드로 만들어보기다음 절 →17차시 · LangGraph 설치하기