[논문 리뷰] ReAct: Synergizing Reasoning and Acting in Language Models

smj·2026년 3월 31일

review

목록 보기
22/30

한줄 요약: LLM이 "생각(Reasoning)"과 "행동(Acting)"을 교차하며 외부 환경과 상호작용하게 하여, 추론만 또는 행동만의 한계를 모두 극복한 에이전트 패턴의 원형.

항목내용
저자Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao
소속Princeton University, Google Brain
발표ICLR 2023
링크arxiv.org/abs/2210.03629
키워드Reasoning, Acting, Agent, Tool Use, Grounding

1. 문제 정의

Reasoning만 (CoT):
  LLM이 내부 지식으로만 추론 → 사실 오류, 환각 발생
  예: "바락 오바마의 출생지의 인구는?" → 잘못된 도시 인구를 "추론"

Acting만 (기존 에이전트):
  관찰 → 행동 → 관찰 → 행동 (생각 없이)
  예: 검색 → 결과를 보고 바로 다음 검색 → 방향 없는 탐색

핵심 관찰:
  사람은 "생각"과 "행동"을 교차한다:
    생각: "오바마 출생지를 먼저 찾아야겠다"
    행동: 검색("Obama birthplace")
    관찰: "Honolulu, Hawaii"
    생각: "이제 호놀룰루 인구를 찾아야겠다"
    행동: 검색("Honolulu population")
    ...

2. 제안 방법

ReAct 루프

Thought → Action → Observation → Thought → Action → ...

예시 (HotPotQA):
  Q: "Aside from the Apple Remote, what other device can control
      the program that Apple Remote was originally designed to interact with?"

  Thought 1: Apple Remote가 원래 어떤 프로그램용인지 찾아야 한다.
  Action 1: Search["Apple Remote"]
  Observation 1: "The Apple Remote was originally designed to control
                  Front Row media program..."

  Thought 2: Front Row를 제어할 수 있는 다른 장치를 찾아야 한다.
  Action 2: Search["Front Row (software)"]
  Observation 2: "Front Row could be controlled by Apple Remote
                  or the keyboard function keys..."

  Thought 3: 키보드 기능키가 답이다.
  Action 3: Finish["keyboard function keys"]

왜 Thought가 중요한가?

Acting만 (Thought 없이):
  Action 1: Search["Apple Remote other device"]
  → 검색 결과 모호 → 엉뚱한 방향으로 진행

ReAct (Thought 있음):
  Thought: "문제를 분해하자: 1) Apple Remote의 대상 프로그램 → 2) 그 프로그램의 다른 제어 방법"
  → 검색 전략이 명확 → 효율적 탐색

Thought의 역할:
  1. 목표 분해 (decomposition)
  2. 정보 추출 (관찰에서 핵심 추출)
  3. 상식 추론 (검색 불필요한 부분 처리)
  4. 전략 수정 (실패 시 방향 전환)

프롬프트 구성

Few-shot 예시로 ReAct 패턴 유도:
  프롬프트 = [예시 1: 질문 + Thought/Action/Observation 전체 과정]
           + [예시 2: ...]
           + [새 질문]

사용 가능한 Action:
  Search[entity]: Wikipedia 검색
  Lookup[keyword]: 현재 페이지에서 키워드 찾기
  Finish[answer]: 최종 답변 제출

3. 실험 결과

3.1 지식 집약 추론 (HotPotQA)

방법Exact Match
Standard prompting28.7%
CoT (추론만)29.4%
Act only (행동만)25.7%
ReAct34.2%
ReAct + CoT-SC (앙상블)35.1%

→ 추론만도, 행동만도 아닌 결합이 최적

3.2 사실 검증 (FEVER)

방법정확도
CoT56.3%
Act only58.9%
ReAct64.6%

3.3 의사결정 태스크 (ALFWorld, WebShop)

환경Act onlyReAct
ALFWorld (가정환경)45%71%
WebShop (쇼핑)30.1%40.0%

→ 실제 환경 상호작용에서도 Thought가 행동 품질을 향상

3.4 오류 분석

CoT만의 실패 유형:
  - 환각 (hallucination): 51% — 존재하지 않는 사실을 "추론"
  - 추론 오류: 49%

ReAct의 실패 유형:
  - 환각: 14% ← 검색으로 사실 확인하므로 대폭 감소
  - 검색 실패: 23% — 올바른 정보를 찾지 못함
  - 추론 오류: 34%
  - 조기 종료: 29%

→ ReAct는 환각을 ~70% 감소시킴 (51% → 14%)

4. 한계점

  • 검색 품질 의존: Wikipedia 검색이 실패하면 Thought가 아무리 좋아도 답을 찾지 못함
  • 프롬프트 예시 의존: Few-shot 예시의 품질이 ReAct 패턴의 수행 능력을 좌우
  • 루프 제한: 무한 루프 방지를 위해 최대 반복 수를 설정해야 함 → 복잡한 문제에서 조기 종료
  • 비용: CoT 대비 외부 도구 호출 추가 → 지연과 비용 증가
  • 단일 도구 체인: 논문에서는 검색 위주 → 여러 도구를 동시에 사용하는 복잡한 시나리오 미탐구
  • 소형 모델 효과: PaLM-540B 위주 실험, 소형 모델에서의 ReAct 효과 제한적

5. 의의와 영향

  • AI 에이전트의 사실상 표준 패턴: LangChain, LlamaIndex 등 모든 에이전트 프레임워크의 기본 루프
  • "Thought"라는 개념으로 에이전트의 내적 추론을 명시화 → 디버깅·해석 가능
  • Reflexion, Voyager, SWE-Agent 등 후속 에이전트 연구의 직접적 기반
  • Reasoning과 Acting의 통합 프레임워크 — 이전에 별개로 연구되던 두 분야를 연결
  • OpenAI Function Calling, Tool Use의 학문적 기초
  • "LLM은 추론기이자 행위자"라는 관점의 확립

6. 💬 리뷰어 코멘트

ReAct의 핵심 통찰은 "생각을 말하게 하면 행동이 좋아진다"는 것이다. 이는 인지심리학의 "think-aloud protocol"과 정확히 대응된다. 사람도 문제를 풀 때 소리 내어 생각하면 더 체계적으로 접근하듯, LLM도 Thought를 명시적으로 생성하면 다음 Action이 더 합리적이 된다.

실전에서 ReAct는 거의 모든 에이전트의 뼈대다. LangChain의 AgentExecutor, AutoGPT의 루프, 심지어 ChatGPT의 플러그인 호출도 본질적으로 ReAct 패턴이다. 한 논문이 이렇게 넓은 실전적 영향을 미친 사례는 드물다.

한계로는 "Thought의 품질을 어떻게 보장하는가"가 있다. 모델이 잘못된 Thought를 생성하면 잘못된 Action으로 이어진다. 이 문제를 Reflexion(자기 반성)과 Tree of Thoughts(다중 경로 탐색)가 각각 다른 방식으로 해결하려 시도했다.


관련 논문: Chain-of-Thought, Reflexion, Toolformer, SWE-Agent, Tree of Thoughts

0개의 댓글