강의

멘토링

로드맵

Inflearn brand logo image

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

젓인님의 프로필 이미지
젓인

작성한 질문수

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

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

subgraph와 add_conditional_edges 질문

작성

·

81

0

안녕하세요 강사님,

서브 그래프 관련 질문입니다!

subgraph에서 routing 코드를 보고 있는데, add_conditional_edges 문법이 좀 헷갈려서 질문드립니다.

 

search_builder.add_conditional_edges(

"analyze_question",

route_datasources_tool_search,

["search_menu", "search_web", "search_wine"]

)

 

위 코드에서 세 번째 매개변수인 ["search_menu", "search_web", "search_wine"]가 어떻게 작동하는지 궁금합니다.

제가 이해한 바로는 route_datasources_tool_search 함수에서 return되는 값의 key 값에 따라 다음 노드로 라우팅되는 것 같은데요. 그냥 저렇게 함수들을 나열하면 알아서 key 값과 네임이 일치하는 함수로 넘어가는 건가요?

혹시 시간 되실 때 설명 부탁드립니다!

감사합니다.

답변 1

0

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

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

세 번째 매개변수인 ["search_menu", "search_web", "search_wine"]와 같이 설정하시면, 라우팅 조건에 따라서 1개 이상의 노드로 병렬 연결이 됩니다.

이 예제에서는 Agent가 사용자 질문을 파악하고 2개 도구를 호출했다면, ["search_menu", "search_web"]와 같이 메뉴 DB 검색과 Web 검색을 각각 병렬로 연결하는 방식으로 작동합니다.

감사합니다.

젓인님의 프로필 이미지
젓인
질문자

안녕하세요, 추가질문이 있습니다. 보통 add_conditional_edges에서는 route 함수 매개변수 뒤에 {a: q_node, b: END}와 같은 형식으로 사용하는 것 같은데, 병렬 노드에서는 ["search_menu", "search_web", "search_wine"]처럼 단순히 리스트로 나열만 해도 되나요? 이것이 routing 반환 값과 일치하는 것으로 처리되는 건지, 아니면 병렬 노드에서만 사용하는 특별한 규칙인지 궁금합니다. 답변 감사합니다.

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

병렬 노드에서 처리되는 방식으로 알고 있습니다.

젓인님의 프로필 이미지
젓인

작성한 질문수

질문하기