작성
·
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 반환 값과 일치하는 것으로 처리되는 건지, 아니면 병렬 노드에서만 사용하는 특별한 규칙인지 궁금합니다. 답변 감사합니다.