인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

유영재님의 프로필 이미지

작성한 질문수

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

메시지 그래프(Messages Graph) / 피드백 루프 (Feedback Loop) 이해하기

tool_search_graph 서브그래프 구현 관련 질문: 조건부 분기 처리 및 supervisor 연결 방법

작성

·

58

0

섹션 6. 서브그래프입니다!

안녕하세요,

tool_search_graph 관련 서브그래프 구현에 대해 두 가지 질문이 있습니다

  1. 조건부 분기 처리 시, question에 따라 분기된 후에 해당 툴에 맞게 질문을 추가로 필터링하는 과정이 필요한지 궁금합니다. 현재는 간단해서 그냥 하신건지요? question을 찍어보니, 그대로 넘어와서요

  2. 해당 서브그래프를 supervisor 하단에 배치했을 때, 코드상으로 어떻게 연결할 수 있는지 구체적인 방법이 궁금합니다.

답변 부탁드립니다

답변 2

0

유영재님의 프로필 이미지
유영재
질문자

감사합니다!

0

판다스 스튜디오님의 프로필 이미지
판다스 스튜디오
지식공유자

안녕하세요. 판다스 스튜디오입니다.

1. 질문 필터링 관련

일반적으로 조건부 분기 후 도구에 맞는 적절한 필터링이 필요합니다. 단순 프로토타입에서는 생략할 수 있지만, 실제 사용 시에는 도구에 맞게 가공하는 과정이 권장됩니다.

def filter_for_search_tool(state):
    original_question = state.get("question", "")
    # 필터링 로직 (예: 검색에 적합한 키워드 추출)
    filtered_question = "검색어: " + extract_keywords(original_question)
    return {"question": filtered_question}

2. Supervisor 하단에 서브그래프 연결 방법

다음 예시와 같이 메인 그래프에 서브그래프를 노드로 추가하고, 조건부 엣지로 연결합니다.

# 서브그래프 생성
search_graph = create_search_tool_graph()
db_graph = create_database_tool_graph()

# 메인 그래프에 서브그래프 연결
main_graph = StateGraph(State)
main_graph.add_node("supervisor", supervisor)
main_graph.add_node("search_tool", search_graph)
main_graph.add_node("database_tool", db_graph)

# 라우팅 함수 (supervisor 결정에 따라 분기)
def route(state):
    return state["next_step"]

# 조건부 엣지 설정
main_graph.add_edge(START, "supervisor")
main_graph.add_conditional_edges(
    "supervisor", route,
    {
        "search_tool": "search_tool",
        "database_tool": "database_tool",
        "end": END
    }
)

# 서브그래프에서 supervisor로 돌아오는 경로
main_graph.add_edge("search_tool", "supervisor")
main_graph.add_edge("database_tool", "supervisor")

감사합니다!