react_agent.py 가 조립하는 ReAct 그래프를 한 장에 그렸습니다. 질문이 agent 노드로 들어가고, should_continue 가 tool_calls 를 보고 tools 노드로 보낼지 END 로 끝낼지 정합니다. 그림의 노드나 아래 노드 목록을 누르면 그 노드의 설명과 코드 위치가 상세 카드에 나옵니다.
한눈에 보는 구조
사용자 UI 1
Agent 로직 6
도구 실행 1
클라우드 서비스 2
외부 시스템 1
가운데 줄이 그래프의 본선입니다. should_continue 에서 tool_calls 가 있으면 tools 노드로 내려가 도구를 실행하고, 빨간 선을 따라 다시 agent 노드로 돌아옵니다. 없으면 END 를 지나 최종 답변이 됩니다. 점선은 노드 안에서 모델을 부르는 호출입니다. 노드를 누르면 아래 상세 카드가 바뀌고 그 노드에 이어진 선이 파랗게 켜집니다.
노드 상세
← → 키로 노드 이동
나가는 연결
들어오는 연결
react_agent.py
연결 11개와 코드 위치
연결
그림의 라벨
react_agent.py
State, 수동 루프, 예시 질문
State: AgentState.messages
add_messages reducer가 노드 반환값을 덮어쓰지 않고 뒤에 append
SystemMessage는 State에 저장하지 않고 agent가 매번 앞에 붙임
should_continue는 마지막 메시지의 tool_calls만 봄
수동 루프 → 그래프
llm.invoke + append → agent 노드
if not tool_calls: break → should_continue
도구 실행 + ToolMessage → ToolNode
while → tools → agent 사이클 엣지
예시 질문 흐름
김하늘 팀 + 연봉 계산: agent → search_employee·calculate → agent → END
노트북 화면 문의: agent → classify_request → agent → END
관련 파일
day3_practice/react_agent.py도구 세 개를 준비하고 agent 노드, should_continue, ToolNode 로 ReAct 그래프를 조립한 뒤 질문 두 개를 stream 으로 실행합니다.
day3_practice/manual_react.py같은 고리를 while 루프로 직접 돌리는 수동 버전입니다. 위 '수동 루프 → 그래프' 대응의 출발점입니다.
day3_practice/react_agent.pngdraw_mermaid_png 가 그린 같은 그래프의 그림입니다(106줄).