ReAct 패턴 — AI 에이전트의 가장 기본이 되는 사고방식
Reason + Act의 합성어, ReAct 패턴. AI 에이전트가 "생각 → 행동 → 관찰"을 반복하는 방식을 코드로 이해합니다.
#ReAct#에이전트#패턴
ReAct — “생각하고, 행동하고, 다시 생각하기”
ReAct는 AI 에이전트의 가장 기본이 되는 추론 패턴입니다. “Reason + Act”의 합성어로, 2022년 Google Research가 제안했어요.
핵심 아이디어
에이전트가 한 번에 답을 내는 게 아니라, 다음 3단계를 반복합니다.
Thought (생각) → Action (행동) → Observation (관찰) → 다시 Thought
왜 강력한가
단순한 “Q&A”와 비교해 보세요.
| 방식 | 약점 |
|---|---|
| 직접 답변 | 중간 사고를 보여주지 않아 신뢰도가 낮음 |
| Chain-of-Thought | 추론은 잘하지만 실제 외부 정보에 접근 못함 |
| ReAct | 추론 + 도구 사용을 한 사이클로 묶음 |
직접 구현해보기
def react_loop(question, llm, tools, max_steps=5):
scratchpad = f"Question: {question}\n"
for i in range(max_steps):
# 1. Thought
thought = llm(
f"{scratchpad}\nThought {i+1}:"
)
scratchpad += f"Thought {i+1}: {thought}\n"
# 2. Action 결정
action = llm(
f"{scratchpad}\nAction {i+1}:"
)
scratchpad += f"Action {i+1}: {action}\n"
# 3. Finish면 종료
if "Final Answer:" in action:
return action.split("Final Answer:")[1].strip()
# 4. 도구 실행 (Observation)
tool_name, tool_input = parse_action(action)
if tool_name in tools:
observation = tools[tool_name](tool_input)
else:
observation = "Tool not found"
scratchpad += f"Observation {i+1}: {observation}\n"
return "Max steps reached"
ReAct가 빛나는 순간
- 외부 정보가 필요한 질문 — “오늘 서울 날씨 어때?”
- 다단계 계산 — “환율 반영해서 일본 여행 경비 계산해줘”
- 툴 체이닝 — “GitHub 이슈 검색 → 관련 코드 찾기 → PR 만들기”
한계
- 토큰 사용량이 큼 (전체 scratchpad를 매번 다시 보내야 함)
- 무한 루프 위험 →
max_steps필수 - 도구 실패 처리를 직접 구현해야 함
다음 글에서
- ReAct vs Plan-and-Execute — 어떤 게 더 좋을까
- LangGraph로 ReAct 그래프 시각화하기
- 멀티 에이전트 ReAct — Supervisor 패턴
Further reading
🤖 AI Agentic
Cursor AI 입문 가이드 — 처음 30분이 전부다
AI 코드 에디터 Cursor를 처음 켜는 분들을 위한 5단계 입문 가이드. 설치부터 첫 AI 수정까지, 진짜 30분이면 충분합니다.
— 끝 —
💬 댓글 기능
GitHub Discussions로 댓글을 받으려면 README의 Giscus 설정 안내를 따라주세요. (5분이면 끝나요)