map_to_analysts는 add_conditional_edges가 아니라 add_edges가 아닌가요?
질문 1)
Ch4 Map-reduce 강의에서
def map_to_analysts(state: AnalysisState):
company = state["company"]
return [
Send("financial_analyst", {"company": company, "task": "financial"}),
Send("stock_analyst", {"company": company, "task": "stock"}),
Send("market_analyst", {"company": company, "task": "market"})
]
함수를
workflow.add_conditional_edges(
START,
map_to_analysts,
{
"financial_analyst": "financial_analyst",
"stock_analyst": "stock_analyst",
"market_analyst": "market_analyst"
}
)
로 conditional_edges를 선언하시던데, 컨디셔널은 보통 조건문이 있지만 map_to_analysts
는 조건문 없이 바로 보내주기 때문에 add_edges 메소드를 써야 하는 거 아닌가요??
질문 2)
그리고 이게 왜 map-reduce인지 이해하지 못 했는데, map이나 reduce 함수를 쓰신게 아니라 함수형 프로그래밍처럼 배열(이터레이션)을 비동기적으로 실행을 하고 그들을 합쳐서(reduce) 처리하기 때문에 map-to-reduce라고 명명하신건가요?
질문 3)
이건 이 질문과 다른 질문인데, 질문 대댓글이 안 되서 여기서 다시 질문 드려요. 저번에 드린 질문 중 node와 agent가 헷갈려 했는데, agent는 LLM+tool이라고 하셨어요. 근데 Ch3_03의 report_generator는 LLM을 사용하지 않는 함수여서 agent인지 헷갈려요. 그래서 https://fastcampus.co.kr/communities/questions/100042 에서 한 질문으로 tool 코드를 agent처럼 사용해도 되냐고 한 질문이 여기서 나온 거에요. tool이 하는 것과 agent가 하는 행동이 모두 프로그래밍 함수로 똑같이 보이고 add_node 매소드로 추가해주면 어떠한 목적을 위해 실행하는 걸로 보여서요. 즉 llm 기능이 있더라도 툴로 정의하고 agent에 추가해서 노드로 만들 수도 있고, llm 기능이 없지만 node로도 추가할 수 있는게 아닌가? 해서요. 좀 더 구체적으로 설명해주실 수 있을까요?