LangGraph recursion_limit
2026년 7월 16일
LangGraph recursion_limit
recursion_limit은 LangGraph 그래프가 너무 많이 반복될 때 강제로 중단시키는 안전장치다.- 정상적인 업무 종료 조건이 아니라, 무한 루프를 막기 위한 보험에 가깝다.
- 그래프에 END로 가는 길이 없거나, 조건이 잘못되어 같은 노드를 계속 돌 때 사용한다.
왜 필요한가
- 그래프가 끝없이 반복되는 것을 막기 위해 필요하다.
- LLM 호출, 도구 호출, API 호출이 무한 반복되면 비용이 폭발할 수 있다.
- 실습 중 edge를 잘못 연결했는지 확인할 때 유용하다.
- 운영에서는 장애 확산을 막는 마지막 안전장치 역할을 한다.
예시 코드
Python
이 코드가 무한 루프인 이유
Mermaid스크롤로 확대 · 드래그로 이동
START에서increment로 간다.increment가 끝나면 다시increment로 간다.- END로 가는 edge가 없다.
- 그래서 LangGraph는 정상 종료할 수 없다.
- 이때
recursion_limit이 없으면 계속 반복될 수 있다.
recursion_limit이 하는 일
Python
- 그래프 실행의 최대 반복 깊이를 제한한다.
- 제한에 도달하면 정상 결과를 반환하지 않는다.
- 대신
GraphRecursionError를 발생시킨다. - 그래서
try / except GraphRecursionError로 감싸서 에러 중단을 처리한다.
정상 루프 제어와 차이
정상 루프 제어는 조건을 만족하면 END로 간다.
Python
Python
이 경우는 정상 종료다.
Mermaid스크롤로 확대 · 드래그로 이동
반면 recursion_limit은 END로 보내는 로직이 아니다.
- 조건부 종료: 정상 종료
recursion_limit: 강제 중단
언제 쓰나
- 실습 중 일부러 무한 루프를 만들어 확인할 때
- 조건부 edge가 빠졌는지 확인할 때
- agent가 같은 tool을 반복 호출하는 것을 막고 싶을 때
- 예상보다 그래프 실행이 오래 도는지 감시하고 싶을 때
- 운영에서 비용/시간 폭주를 막는 마지막 방어선이 필요할 때
언제 의존하면 안 되나
- 업무상 정상 종료 조건을
recursion_limit으로 대신하면 안 된다. - 예를 들어 "목표 금액 달성 시 종료" 같은 문제는 조건부 edge로 END에 보내야 한다.
recursion_limit에 걸리면 에러로 끝나기 때문에 원하는result를 안정적으로 받기 어렵다.
한 줄 요약
recursion_limit= 무한 반복을 막는 강제 안전장치.- 정상 종료는
add_conditional_edges와 END로 설계해야 한다. - 실무에서는 조건부 종료 +
recursion_limit보험을 함께 두는 것이 좋다.