ReAct 완전 정리, 추론과 행동을 번갈아 하면 무엇이 달라지나
요약
- ReAct는 Thought와 Action을 번갈아 생성하고, 행동의 결과인 Observation을 다음 추론에 반영하는 에이전트 루프입니다. 이름 자체가 Reasoning + Acting입니다.
- 문제 설정이 명확합니다. 추론만 하면 외부 사실을 못 끌어와 환각에 취약하고, 행동만 하면 무엇을 왜 할지 계획이 없습니다.
- 논문의 표현으로는 "추론 흔적은 행동 계획을 세우고 추적하고 갱신하며 예외를 다루게 돕고, 행동은 외부 소스와 접속해 추가 정보를 모으게 한다"입니다. 양방향입니다.
- 가장 중요한 사실. ReAct는 모델이 아니라 패턴입니다. 새 모델을 학습시키는 게 아니라 같은 LLM에게 형식을 반복하도록 시키는 프롬프팅이자 제어 방식입니다.
- 결과는 인컨텍스트 예시 1~2개만으로 ALFWorld에서 모방과 강화학습 대비 절대 성공률 +34%, WebShop에서 +10%입니다.
- 공짜가 아닙니다. 관찰마다 LLM을 다시 부르므로 토큰과 지연이 스텝 수에 비례하고, 초점 상실과 반복 루프라는 두 실패 모드를 반드시 가드해야 합니다.
1장. 왜 나왔나
1.1 논문 정보
제목 ReAct: Synergizing Reasoning and Acting in Language Models
저자 Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du,
Izhak Shafran, Karthik Narasimhan, Yuan Cao
출처 arXiv:2210.03629 (2022년 10월 최초), ICLR 20231.2 두 흐름이 따로 연구되고 있었다
논문 초록이 문제 설정을 명확히 합니다.
LLM 은 언어 이해와 상호작용형 의사결정에서 인상적인 능력을 보였지만
추론 능력 (예: chain-of-thought 프롬프팅) 과
행동 능력 (예: 행동 계획 생성) 은
주로 별개 주제로 연구돼 왔다"둘이 따로 연구되고 있었다"는 게 출발점입니다.
1.3 각각의 한계
추론만 (Chain-of-Thought)
모델이 머릿속으로 중간 단계를 적어가며 푼다
그런데 자기 머릿속 지식만 쓴다
최신 사실이나 문서를 못 가져오니
① 환각 사실을 그럴듯하게 지어낸다
② 오류 전파 한 번 틀린 추론이 뒤까지 오염시킨다
행동만 (act-only)
검색이나 클릭 같은 도구를 부른다
그런데 "지금 왜 이 행동을 하는지"를 추론하지 않으면
무엇을 언제 멈출지 판단이 흐려진다1.4 사람은 어떻게 하나
사람은 생각하면서 행동하고
행동 결과를 보고 다시 생각한다
그럼 LLM 도 추론과 행동을 번갈아 하게 만들면
추론이 행동을 이끌고 관찰이 추론을 바로잡는
선순환이 생기지 않을까2장. 핵심 아이디어
2.1 한 스텝의 세 요소
Thought (생각)
지금 상황에서 무엇을 할지, 왜 하는지 자연어로 추론한다
외부 세계를 바꾸지 않는 순수한 내부 독백이다
Action (행동)
도구를 실제로 부른다
예: search[아이템], lookup[키워드], 끝맺는 finish[답]
Observation (관찰)
도구가 돌려준 결과
다음 Thought 의 입력이 된다중요한 건 Thought가 행동 사이사이에 끼어든다는 점입니다. 그래서 "생각으로 검색을 계획하고, 검색 결과를 보고 생각을 고치는" 흐름이 만들어집니다.
2.2 루프
사용자 질문
│
▼
Thought 무엇을 할지 추론
│
▼
Action 도구 실행
│
▼
Observation 도구가 돌려준 결과
│
▼
충분한가?
│
├─ 아니오 ──► Thought 로 되돌아감
│
└─ 예 ──► finish, 최종 답2.3 시너지가 양방향이라는 점
논문이 강조하는 부분입니다. 한쪽이 다른 쪽을 돕는 게 아니라 서로 돕습니다.
추론 흔적이 행동에 주는 것
행동 계획을 세우고(induce)
추적하고(track)
갱신하고(update)
예외를 다루게(handle exceptions) 한다
행동이 추론에 주는 것
지식 베이스나 환경 같은 외부 소스와 접속해
추가 정보를 모으게 한다"예외를 다룬다"가 실무에서 특히 중요합니다. 3.3에서 실제 사례로 봅니다.
2.4 탐정 비유
탐정은
단서를 놓고 추론하고 (Thought)
현장을 조사하고 (Action)
발견한 증거를 확인해 (Observation)
다음 추론을 고친다
머릿속으로만 사건을 풀지 않고
매번 현실에 맞춰 가설을 교정한다3장. 한 문제로 따라가기
3.1 질문
논문 Figure 1의 HotpotQA 질문입니다.
Apple Remote 말고, Apple Remote가 원래 조작하도록 설계된 프로그램을 제어할 수 있는 다른 기기는 무엇인가?
멀티홉 질문입니다. "Apple Remote가 조작하던 프로그램이 무엇인지" 먼저 알아야 "그 프로그램을 제어하는 다른 기기"를 찾을 수 있습니다.
3.2 트레이스
Thought 1 Apple Remote 가 원래 무슨 프로그램을 조작하려고
만들어졌는지 찾아야겠다
Action 1 search[Apple Remote]
Observation 1 Apple Remote 는 원래 Front Row 미디어 센터
프로그램을 조작하도록 설계됐다
Thought 2 그럼 Front Row 를 검색해, 그걸 제어하는 다른 기기를 찾자
Action 2 search[Front Row]
Observation 2 검색 결과 없음
Thought 3 'Front Row (software)' 로 다시 검색해야겠다
Action 3 search[Front Row (software)]
Observation 3 Front Row 는 Apple Remote 또는 키보드 기능키로
제어할 수 있다
Thought 4 답은 키보드 기능키다
Action 4 finish[키보드 기능키]3.3 여기서 ReAct의 가치가 드러나는 두 지점
첫째, grounding입니다.
Observation 1 이 "Front Row" 라는 사실을 외부에서 가져와
다음 추론의 근거가 됐다
CoT 였다면 이 사실을 기억에서 꺼내야 하는데
틀리면 그대로 오답으로 간다둘째, 실패 복구입니다.
Observation 2 가 비었을 때
Thought 3 이 검색어를 스스로 바꿔 실패를 복구했다
추론이 행동을 유연하게 조정한 것
2.3 에서 말한 "예외를 다룬다"가 이 장면이다행동만 하는 에이전트라면 빈 결과를 받고 멈추거나 같은 검색을 반복했을 겁니다. 검색어를 바꿔 볼 이유를 추론이 만들어 줬습니다.
이 트레이스는 원문 Figure 1의 예시를 재구성한 것이고, 실제 관찰 텍스트와 표현은 원문을 따릅니다.
4장. 실험 결과
4.1 두 부류의 과제
성격이 전혀 다른 두 축에서 검증했다는 게 이 논문의 설득력입니다.
| 벤치마크 | 과제 유형 | 결과 |
|---|---|---|
| HotpotQA | 멀티홉 QA | 위키피디아 API와 상호작용해 환각과 오류 전파를 줄임 |
| Fever | 사실 검증 | 외부 근거로 주장의 참과 거짓을 판정 |
| ALFWorld | 상호작용형 의사결정, 텍스트 게임 | 모방과 강화학습 대비 절대 성공률 +34% |
| WebShop | 상호작용형 의사결정, 웹 쇼핑 | 베이스라인 대비 절대 성공률 +10% |
4.2 핵심 메시지 둘
① 적은 예시로 큰 효과
위 결과를 인컨텍스트 예시 단 1~2개로 달성했다
파인튜닝이 아니다
② 추론과 행동의 시너지
추론 축(QA, 검증)과 행동 축(게임, 쇼핑)은 서로 다른데
둘을 엮은 ReAct 가 각각의 단독 방식을 모두 앞섰다4.3 부수 효과, 해석 가능성
논문이 별도로 언급하는 이득입니다.
추론 흔적이 없는 방법들에 비해
인간 해석 가능성(interpretability)과 신뢰성(trustworthiness)이 향상됐다
사람이 "왜 이렇게 답했는지"를 따라갈 수 있다
사람과 비슷한 문제해결 궤적이 텍스트로 남는다디버깅 관점에서 이게 실무적으로 큽니다. 틀렸을 때 어느 Thought에서 어긋났는지 볼 수 있습니다.
4.4 균형 있게 읽기
QA 에서 ReAct 가 CoT 를 모든 지표에서 압도한 건 아니다
논문 자체도 검색이 헛도는 경우 등
ReAct 의 실패 사례를 함께 분석한다
실무에서는 ReAct 와 CoT 를 상황에 따라 섞는
예를 들어 필요할 때만 검색으로 전환하는 조합이 유효하다5장. 세 가지 대비로 이해하기
5.1 CoT와 act-only와 ReAct
CoT 추론만. 근거가 없다
act-only 행동만. 계획이 없다
ReAct 관찰로 grounding 해 환각을 낮추고
추론 흔적이 텍스트로 남아 디버깅이 된다5.2 네이티브 함수호출과의 차이
실무에서 가장 자주 나오는 질문입니다.
ReAct
LLM 이 Thought 와 Action 을 텍스트로 생성한다
그래서 네이티브 함수호출 API 를 지원하지 않는 모델
소형 로컬 모델에서도 돈다
네이티브 function calling
모델이 구조화된 호출을 직접 뱉는다
파싱이 안정적이고 토큰이 적게 든다둘은 배타적이 아닙니다.
ReAct 는 함수호출 위에 "사고 과정" 한 겹을 더한 것으로 볼 수 있다
얻는 것 적응성. 실패 복구와 계획 조정
잃는 것 토큰. 텍스트 파싱의 불안정성5.3 비용과 실패 모드
비용
관찰마다 LLM 을 다시 호출한다
토큰과 지연이 스텝 수에 비례한다
실패 모드 둘
① 초점 상실
긴 추론 도중 원 질문에서 이탈한다
② 반복 루프
같은 Thought 와 Action 을 반복하며 종료하지 못한다종료 조건 가드와 반복 감지는 선택이 아니라 필수입니다. 7.2에서 이를 정면으로 다룬 후속 연구를 봅니다.
6장. 실무
6.1 프레임워크 채택
LlamaIndex
ReActAgent 를 제공한다
함수호출을 지원하지 않는 LLM 에서도 도는 범용 에이전트
LangChain
초기 ReAct 형 에이전트를 거쳐
현재는 LangGraph 를 주력 에이전트 빌더로 권장한다
Hugging Face Agents Course
LlamaIndex 의 ReAct 에이전트를 교육 예제로 다룬다6.2 자주 하는 실수 둘
① 종료 조건 가드가 없다
무한 루프에 빠진다
스텝 상한과 반복 감지가 필요하다
② 관찰 텍스트가 길어 컨텍스트가 폭증한다
검색 결과 전문을 그대로 넣으면 몇 스텝 만에 창이 찬다
관찰을 요약하거나 절단해 넣어 완화한다두 번째가 특히 실무에서 자주 터집니다. 웹 검색이나 문서 조회의 결과는 길고, 그게 매 스텝 누적됩니다.
6.3 비용 쪽을 택하는 설계도 있다
ReAct 의 "관찰마다 재호출"은 적응성의 대가로 비용을 치른다
자원이 빠듯한 온디바이스 환경에서는
계획과 인자 값을 한 번에 산출하는 단일호출 플래너로
이 루프를 우회하기도 한다
도구와 인자 결정 호출을 여러 단계에서 한 단계로 줄인다
ReAct 의 적응성 ↔ 호출비용 트레이드오프에서
비용 쪽을 택한 셈이다Plan-and-Solve와 ReWOO가 이 방향의 대표입니다.
6.4 지금도 ReAct가 유효한 자리
네이티브 함수호출이 보편화된 지금 순수 ReAct가 여전히 맞는 자리가 있습니다.
함수호출을 지원하지 않는 모델
소형 로컬 모델
추론 흔적이 필요한 감사와 디버깅 상황7장. 이후 발전
7.1 계보
| 시기 | 발전 | 요지 |
|---|---|---|
| 2022-10 | ReAct | Thought, Action, Observation 인터리빙으로 추론과 행동 시너지 |
| 2023-12 | ReST meets ReAct | ReAct 궤적을 AI 피드백과 성장배치 RL로 반복 학습해 자기개선 |
| 2024-10 | Focused ReAct | 원 질문 재주입과 조기 종료로 초점 상실과 반복 루프를 완화 |
| 2024-04 | 에이전트 아키텍처 서베이 | ReAct를 단일과 멀티에이전트 패턴의 기본 빌딩블록으로 정리 |
7.2 Focused ReAct가 겨냥한 것
5.3에서 본 두 실패 모드를 정면으로 다룬 후속 연구입니다.
reiterate 원 질문을 다시 주입해 초점 상실을 막는다
early stop 조기 종료로 반복 루프를 끊는다
저자 보고로는
원 ReAct 대비 정확도 +18%에서 +530%, 런타임 최대 34% 감소
⚠ 데이터셋별 편차가 매우 크다
+530% 는 원래 점수가 낮았던 케이스일 가능성이 높다
이 범위 자체가 "조건에 따라 갈린다"는 뜻으로 읽어야 한다7.3 ReAct를 변주한 계열
ReWOO 호출 수를 줄이려 도구 시퀀스를 선계획
Reflexion 시도 간 언어적 피드백으로 학습
ToT, LATS 탐색을 트리로 넓힘모두 ReAct의 어떤 약점을 겨냥합니다. ReWOO는 비용, Reflexion은 시도 간 학습 부재, ToT는 단일 경로의 한계입니다.
8장. 정리
8.1 핵심 셋
① ReAct 는 Thought → Action → Observation 을 번갈아 반복해
추론이 행동을 이끌고 관찰이 추론을 교정하는 루프다
② 이득은 관찰로 근거를 잡아 환각을 낮추고
추론 흔적으로 해석과 디버깅이 쉬워지는 것이다
그것도 예시 1~2개로 ALFWorld +34%, WebShop +10%
③ 대가는 스텝 수에 비례하는 토큰과 지연
그리고 초점 상실과 반복 루프라는 실패 모드다8.2 남는 질문
- 네이티브 함수호출이 보편화된 지금 순수 ReAct의 영역은 어디까지인가. 함수호출 미지원 모델과 감사가 필요한 상황이 답에 가깝지만, 경계가 계속 좁아지고 있습니다.
- Thought를 얼마나 길게 쓰게 할 것인가. 길수록 계획이 정교해지지만 초점 상실 위험과 토큰이 함께 늘어납니다.
- 관찰 요약을 자동화할 수 있나. 6.2의 컨텍스트 폭증 문제인데, 요약하면서 중요한 정보를 잃는 위험이 있습니다.
8.3 용어 정리
| 용어 | 한 줄 뜻 |
|---|---|
| ReAct | 추론과 행동과 관찰을 번갈아 반복하는 에이전트 프롬프팅 패턴 |
| Thought / Action / Observation | 한 스텝의 세 요소. 내부 추론 / 도구 호출 / 그 결과 |
| 인터리빙 (interleaved) | 추론과 행동을 번갈아 섞는 것 |
| grounding | 외부 관찰과 사실에 답을 근거 짓는 것 |
| 환각 (hallucination) | 모델이 사실이 아닌 내용을 사실처럼 지어내는 현상 |
| 오류 전파 | 한 번 틀린 추론이 이후 단계까지 오염시키는 것 |
| 함수호출 (function calling) | 모델이 구조화된 도구 호출을 직접 출력하는 기능 |
| 인컨텍스트 예시 | 프롬프트에 넣는 시범 예시. 파인튜닝과 대비 |
| 초점 상실 | 긴 추론 도중 원 질문에서 이탈하는 실패 모드 |
| 반복 루프 | 같은 생각과 행동을 반복하며 종료하지 못하는 실패 모드 |
8.4 참고자료
- Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models" (ICLR 2023, arXiv:2210.03629)
- Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" (NeurIPS 2022, arXiv:2201.11903)
- Aksitov et al., "ReST meets ReAct: Self-Improvement for Multi-Step Reasoning LLM Agent" (arXiv:2312.10003)
- Li, Xu, Chen, "Focused ReAct: Improving ReAct through Reiterate and Early Stop" (arXiv:2410.10779)
- Masterman et al., "The Landscape of Emerging AI Agent Architectures for Reasoning, Planning, and Tool Calling: A Survey" (arXiv:2404.11584)
- LlamaIndex Docs, ReActAgent 소개
- Hugging Face Agents Course, Using Agents in LlamaIndex
'AI Agent > Patterns' 카테고리의 다른 글
| DoT (Division of Thoughts) (0) | 2026.08.11 |
|---|---|
| Reflexion (0) | 2025.10.19 |
| Plan and Solve (0) | 2025.10.05 |
| ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models (0) | 2024.10.14 |
댓글