ReAct 스타일 에이전트란?

발행: (2026년 6월 9일 PM 03:04 GMT+9)
8 분 소요
원문: Dev.to

출처: Dev.to

What is a ReAct-style agent? 표지 이미지

Yves Jutard

TL;DR: “ReAct”는 2023년부터 모든 모델이 내부 “reasoning + acting” 루프를 수행하는 방식이다. prompt => {loop = evaluate tool call(s)} => 최종 답변 이전에는 구글 논문이 나오기 전보다 더 어리석었다.

면책 조항: 이 글은 검토된, 약간 편집된 그리고 보강된 Claude Opus 4.8과의 대화이다.

주제를 공부하면서 답변이 공유할 가치가 있다고 생각했다.

공로를 주장하는 건 아니다. 나에게 도움이 되었고, 여러분에게도 도움이 되길 바란다.

ReAct‑style 에이전트는 사고와 행동을 교차시켜 루프를 도는 LLM 에이전트이다. 이름은 “Reasoning + Acting”에서 따왔다. 2022년 구글 리서치 Brain 팀의 논문에서 처음 소개됐으며, 도구를 사용하는 에이전트를 만들기 위한 기본 패턴 중 하나가 되었다.

논문

ReAct: Synergizing Reasoning and Acting in Language Models – Yao et al. (2022)

논문에 실린 ReAct 그림

자세히

핵심 아이디어는 모델이 단순히 생각만 하는(chain‑of‑thought) 혹은 도구를 무작정 호출하는 두 가지 중 하나에 머무르지 않고, 구조화된 사이클 안에서 번갈아 수행한다는 것이다.

  • Thought → 현재 상황과 다음에 해야 할 일을 추론한다.
  • Action → 도구 호출을 수행한다(검색, API 요청, 코드 실행 등).
  • Observation → 그 행동의 결과가 다시 모델에 입력된다.

그리고 다시 Thought 로 돌아가 새로운 관찰을 바탕으로 다음 단계를 결정한다. 충분히 답을 얻을 때까지 이 과정을 반복한다.

예시 트레이스:

Question: What's the population of the capital of France?

Thought: I need to find the capital of France first.
Action: search("capital of France")
Observation: Paris is the capital of France.

Thought: Now I need Paris's population.
Action: search("population of Paris")
Observation: Approximately 2.1 million.

Thought: I have what I need.
Answer: The population of Paris is about 2.1 million.

[전체 화면 모드 진입]
[전체 화면 모드 종료]

왜 잘 작동할까?

추론 단계가 모델을 그라운드 시킨다—행동하기 전에 계획을 세우고, 관찰이 기대와 다르면 즉시 조정한다. 행동 단계는 실제 도구에서 데이터를 끌어오므로 환상(hallucination) 을 방지한다. 핵심은 교차이다: 추론이 어떤 행동을 할지 결정하고, 관찰이 추론을 교정한다. 순수한 chain‑of‑thought는 자신감 있게 잘못된 답으로 빠질 수 있고, 순수한 행동만 하는 방식은 계획이나 예외 복구가 부족하다.

실제 서비스에서는 원 논문의 “Thought/Action/Observation” 텍스트 형식이 네이티브 도구 호출 API(함수 호출) 로 대부분 대체되었지만, 기본 루프는 여전히 ReAct이다. LangChain 에이전트, LlamaIndex 에이전트, 그리고 직접 구현하는 대부분의 커스텀 에이전트 루프가 이 개념을 기반으로 한다.

트레이드‑오프

  • 토큰을 많이 소비한다.
  • 가끔 비슷한 행동을 반복하는 무한 루프에 빠질 수 있다. 그래서 스텝 제한, Reflexion 같은 반성 메커니즘, 혹은 Plan‑and‑Execute 같은 더 구조화된 계획이 추가된다.

ReAct의 핵심 기여는 순수 CoT(Chain‑of‑Thought)의 실패 모드를 고친다는 점이다. CoT만 사용할 경우 모델은 외부 세계와 연결되지 않은 내부 표현만으로 추론하기 때문에, 잘못되거나 오래된 전제에 기반해 자신감 있게 진행한다. 그 결과 환상 + 오류 전파가 발생한다.

ReAct은 행동을 통해 추론을 중단시켜 이 폐쇄 루프를 깨뜨린다. HotpotQA와 Fever에서 ReAct은 단순 Wikipedia API와 상호작용함으로써 환상과 오류 전파 문제를 극복하고, 인간과 유사한 작업 해결 경로를 만든다(기존 베이스라인보다 해석 가능성이 높다).

루프 전/후 비교

핵심 키워드는 시너지—양방향이다. 추론 트레이스는 모델이 행동 계획을 만들고, 추적하고, 업데이트하도록 돕고, 예외 상황을 처리한다. 반면 행동은 외부 소스와 연결해 추가 정보를 얻는다. 그래서 “무엇을 찾아볼지”를 추론이 결정하고, 조회 결과가 실제 사실을 주입하면, 그 사실이 다음 추론 라운드를 제한한다. 모델은 계속해서 현실에 끌어당겨지기 때문에 크게 벗어나지 않는다.

논문에서 강조된 두 가지 포인트:

  • 인터랙티브 작업에서의 성능 향상이 눈에 띄었다. ALFWorld와 WebShop(두 인터랙티브 의사결정 벤치마크)에서 ReAct는 모방 학습·강화 학습 방법보다 각각 34%, 10% 절대 성공률 차이로 앞섰다. 단 1~2개의 인‑컨텍스트 예시만으로도 이런 RL‑수준 성능을 얻을 수 있었던 것이 패턴이 확산된 큰 이유다.
  • ⚠️ QA 작업에서는 ReAct만으로는 최고가 아니었다. HotpotQA와 Fever에서는 ReAct + CoT 하이브리드가 가장 좋은 결과를 냈다. 모델이 내부 지식과 외부 정보를 동시에 활용하도록 만든 조합이 핵심
0 조회
Back to Blog

관련 글

더 보기 »

Eidentic 소개

Today we're releasing Eidentic, an open-source TypeScript SDK for building AI agents with self-improving memory and the production fundamentals built in — not b...

Typescript의 타입

Introdução Tipos são uma forma de definir a “forma” ou o contrato dos dados que estamos usando no código. Pensando em Javascript puro, ele é dinâmico: você pode...