28차시. Conditional Edge 이해
8. 자주 하는 실수
출처: 원본 PDF 28차시_ConditionalEdge이해.pdf 19쪽 · 쪽 그림 19쪽
| 실수 | 올바른 방법 |
|---|---|
| 분기 함수 안에서 State를 수정 | 판단만 합니다. 값 변경이 필요하면 노드를 만드세요 |
| 경로맵에 없는 문자열을 반환 | 반환 가능한 값을 모두 맵에 넣고 기본 경로를 두세요 |
| 대소문자가 달라 KeyError | 경로 이름을 상수로 정의해 재사용하세요 |
| 조건 순서가 뒤바뀌어 상한이 무시됨 | 안전장치를 가장 위에 배치하세요 |
| 분기 함수에서 LLM을 호출 | 느리고 비쌉니다. 노드에서 판단해 State에 넣으세요 |
| 분기 조건이 10개가 넘음 | 노드에서 미리 계산하거나 2단계로 나누세요 |
8-1) 분기 함수에서 LLM을 부르면 안 되는 이유
⚠️ 유혹적이지만 위험합니다
def route(state):
answer = llm.invoke("이 질문은 어떤 유형?") # ❌
문제점
· 분기 함수는 여러 번 호출될 수 있습니다
그때마다 비용이 발생합니다
· 같은 State인데 다른 결과가 나올 수 있습니다
결정성이 깨집니다
· 실패하면 그래프 전체가 중단됩니다
예외 처리할 곳이 없습니다
올바른 방법
classify_node에서 LLM을 부르고 intent를 State에 저장
분기 함수는 state["intent"]만 읽음