쉽게 말하면, ReAct는 AI 모델이 먼저 생각을 글로 적고, 그 생각에 따라 검색 같은 행동을 한 뒤, 결과를 보고 다시 생각하는 과정을 과제가 풀릴 때까지 되풀이하게 하는 방법이다.
| 분류 | 대규모 언어 모델 프롬프팅 패러다임 |
|---|---|
| 정식 명칭 | Reasoning and Acting(추론과 행동) |
| 최초 공개 | 2022년 10월 논문 「ReAct: Synergizing Reasoning and Acting in Language Models」(arXiv:2210.03629)2 |
| 학회 채택 | ICLR 2023 Oral(Notable Top 5%)3 |
| 주요 저자 | Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao |
| 대표 과제 | HotpotQA, FEVER, ALFWorld, WebShop2 |
1. 개요
ReAct(Reasoning and Acting, 추론과 행동)는 대규모 언어 모델(large language model)이 말로 적는 추론 과정(Thought)과 외부 환경에 대한 과제별 행동(Action)을 번갈아 만들도록 하는 프롬프팅 방식이다. 모델은 생각, 행동, 관찰(Observation)의 순환을 되풀이하며 과제가 풀릴 때까지 나아간다.
2022년 10월 논문 「ReAct: Synergizing Reasoning and Acting in Language Models」(arXiv:2210.03629)에서 Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao가 처음 소개했다. 모델은 자유 형식의 생각을 만들어 계획과 행동 수정을 맡고, 행동은 검색 API, 지식 베이스, 시뮬레이션 환경에서 정보를 가져온다.
논문은 ALFWorld와 WebShop 상호작용 의사결정 과제에서 ReAct가 모방 학습과 강화 학습 방법을 절대 성공률 기준으로 각각 34%와 10%만큼 앞섰다고 밝혔다. 이 결과는 프롬프트에 예시를 한두 개만 넣었을 때 나온 것이다.2
논문은 ICLR 2023에서 구두 발표(Oral) 논문, 주목할 만한 상위 5%(Notable Top 5%)로 채택되었다.3
2. 개발과 공개
논문 저자 가운데 Yao와 Narasimhan은 집필 당시 프린스턴 대학교 소속이었고, Zhao, Yu, Du, Shafran, Cao는 Google Research의 Brain 팀 소속이었다. 연구는 Yao가 Google에서 인턴으로 일하는 동안 진행되었다.2
Google Research는 2022년 11월 8일 블로그 글로 이 방법을 소개했다. 저자들은 GitHub에 PyTorch와 Jupyter 기반 오픈소스 코드를 공개했다. 이 코드는 PaLM-540B와 GPT-3 text-davinci-002 모두에 ReAct를 구현하며, 저장소 별 수는 3,800개가 넘는다.4,5
ReAct는 사고의 연쇄 추론과 도구 사용을 결합하면 추론만 하거나 행동만 하는 기준선보다 정확하고 해석하기 쉬우며 환각이 적은 에이전트가 만들어진다는 것을 처음 보인 프레임워크 가운데 하나다. 이 Thought-Action-Observation 순환은 LangChain, LangGraph, LlamaIndex, Hugging Face의 transformers 에이전트 API 등 실서비스 에이전트 프레임워크에서 기본 제어 흐름이 되었고, 여러 상용 도구 호출 및 에이전트 실행 환경의 바탕 논리가 되었다.2,6,7
3. 등장 배경
ReAct 이전에는 대규모 언어 모델이 가진 쓸모 있지만 서로 떨어진 두 능력이 따로 연구되고 있었다. 한쪽은 사고의 연쇄(chain-of-thought prompting)이다. Wei et al.(2022)은 답하기 전에 모델에게 '단계별로 생각하라'고 요청하면 산술, 상식, 기호 추론 과제의 성능이 크게 좋아진다는 것을 보였다.8
다른 쪽은 행동 생성과 도구 사용 연구다. SayCan, Inner Monologue, WebGPT, 그리고 이후의 Toolformer 등은 적절한 행동 스키마를 주면 언어 모델이 외부 API를 호출하고, 웹 페이지를 탐색하고, 로봇 시스템을 제어하는 법을 배울 수 있음을 보였다.
두 능력은 대부분 따로 연구되었다. 사고의 연쇄는 모델의 내부 지식에만 기대므로, 그럴듯하게 들리지만 사실과 다른 추론 과정을 만들 수 있다. 논문 저자들은 이를 '사실 환각(fact hallucination)'과 '오류 전파(error propagation)'라고 불렀다. 반대로 행동만 하는 방식은 모델이 세계와 상호작용하게 하지만, 다음에 어떤 행동을 할지, 이전 행동이 왜 실패했는지, 여러 단계에 걸친 정보를 어떻게 종합할지 추론하는 능력이 부족하다.
Yao et al.은 사람이 실제로 문제를 풀 때 추론과 행동을 따로 나누지 않는다고 주장했다. 사람은 필요한 정보를 생각하고, 검색하고, 결과를 읽고, 찾은 내용을 추론한 다음, 다음 단계를 정해 답이 분명해질 때까지 반복한다. ReAct는 이 직관을 모델이 생각과 행동을 번갈아 만들도록 프롬프트로 형식화했다. 논문은 두 가지 상호 기제를 제시했다. 모델은 생각으로 다음 행동을 정하는 '추론하여 행동하기(reason to act)'를 할 수 있고, 환경에서 받은 관찰로 생각을 고치는 '행동하여 추론하기(act to reason)'를 할 수 있다. 제목의 '시너지(synergizing)'는 이 상호 피드백을 가리킨다.2
4. 작동 원리
ReAct의 핵심 기제는 세 요소로 이루어진 구조화된 순환이다.
| 구성 요소 | 역할 | 환경에 미치는 영향 |
|---|---|---|
| 생각(Thought) | 자유 형식의 자연어 추론. 모델은 문제를 나누고, 관찰을 해석하고, 가설을 세우거나 다음 단계를 계획한다. | 없음. 생각은 모델 내부에 머물며 외부 환경을 바꾸지 않는다. |
| 행동(Action) | 외부 환경과 상호작용하는 과제별 명령. 미리 정한 형식을 따른다(예: Search[query], Lookup[keyword], Finish[answer]). | 있음. 행동이 실행되고 환경이 결과를 돌려준다. |
| 관찰(Observation) | 행동을 실행한 뒤 환경이 돌려주는 결과. 모델의 문맥에 덧붙어 다음 생각 단계에서 추론에 쓰인다. | 없음. 관찰은 모델이 생성하는 것이 아니라 모델에 주어지는 입력이다.2 |
- 모델이 현재 문제의 상태를 두고 생각(Thought)을 만든다.
- 그 추론을 바탕으로 실행할 행동(Action)을 만든다.
- 시스템이 행동을 실행하고 관찰(Observation)을 돌려준다.
- 모델이 관찰을 읽고 다음 생각을 만들며 순환을 이어 간다.
- 모델이 완료 행동(예: Finish[answer])을 내면 순환이 끝난다.
이 구조 덕분에 모델은 미리 정한 행동 순서를 따르는 대신, 각 단계에서 드러나는 정보에 따라 계획을 바꿀 수 있다. 특히 이 순환은 미세 조정이나 구조 변경을 요구하지 않는다. 프롬프트에 든 소수의 예시와, 행동을 해석해 관찰을 다음 호출에 다시 넣는 외부 오케스트레이터만으로 구현된다.2
5. 예시 추적
다음 예시는 원 논문의 예를 각색한 것으로, ReAct가 간단한 Wikipedia API로 HotpotQA 데이터셋의 다단계 질문을 푸는 과정을 보여 준다. 질문은 콜로라도 조산운동(Colorado orogeny)의 동부 구역이 걸쳐 있는 지역의 고도 범위에 관한 것이다.2
Thought 1: I need to search Colorado orogeny, find the area that the
eastern sector extends into, then find the elevation range
of that area.
Action 1: Search[Colorado orogeny]
Observation 1: The Colorado orogeny was an episode of mountain building
(an orogeny) in Colorado and surrounding areas.
Thought 2: It does not mention the eastern sector. So I need to look
up eastern sector.
Action 2: Lookup[eastern sector]
Observation 2: (Result 1 / 1) The eastern sector extends into the High
Plains and is called the Central Plains orogeny.
Thought 3: The eastern sector of Colorado orogeny extends into the
High Plains. So I need to search High Plains and find its
elevation range.
Action 3: Search[High Plains]
Observation 3: High Plains refers to one of two distinct land regions.
Thought 4: I need to instead search High Plains (United States).
Action 4: Search[High Plains (United States)]
Observation 4: The High Plains are a subregion of the Great Plains.
From east to west, the High Plains rise in elevation
from around 1,800 to 7,000 ft (550 to 2,130 m).
Thought 5: High Plains rise in elevation from around 1,800 to 7,000 ft,
so the answer is 1,800 to 7,000 ft.
Action 5: Finish[1,800 to 7,000 ft]이 추적은 생각과 행동을 교차시키는 것이 왜 도움이 되는지 보여 준다. 모델은 원래 질문을 하위 질문으로 나누고(Thought 1), 정보가 없는 검색 결과에서 방향을 바꾸고(Thought 2), 엉뚱한 개체를 돌려준 검색어를 바로잡고(Thought 4), 긴 본문에서 관련 사실을 뽑아낸다(Thought 5). 이런 유연하고 적응적인 행동은 행동만 하는 방식이 명시적인 추론 통로가 없어 다루지 못하는 것이고, 순수 사고의 연쇄는 추측을 세계와 맞춰 볼 방법이 없어 다루지 못하는 것이다.2
6. 사용하는 행동과 환경
ReAct 에이전트가 쓸 수 있는 구체적 행동은 과제와 환경에 따라 달라진다. 원 논문은 두 범주의 과제에 대해 행동을 정의했다.
6.1. 지식 집약형 추론 과제
질의응답(HotpotQA)과 사실 검증(FEVER)에서 논문은 세 가지 행동을 가진 간단한 Wikipedia API를 썼다.2
| 행동 | 설명 |
|---|---|
| Search[entity] | 주어진 개체의 Wikipedia 문서 앞 5개 문장을 돌려준다. 정확히 일치하는 문서가 없으면 Wikipedia 검색 엔진에서 유사한 개체 상위 5개를 돌려준다. |
| Lookup[string] | 현재 문서에서 주어진 문자열이 들어 있는 다음 문장을 돌려준다. 브라우저의 Ctrl+F(찾기) 기능을 흉내 낸다. |
| Finish[answer] | 에피소드를 끝내고 주어진 답을 제출한다.2 |
6.2. 상호작용 의사결정 과제
텍스트 기반 게임(ALFWorld)과 웹 탐색(WebShop)에서 행동은 환경에 특화된 명령이었다. 예를 들어 '캐비닛 1로 가기', '나이프 2 집기', '[Buy Now] 클릭' 같은 명령이 환경 상태를 직접 조작했다.2
두 경우 모두 핵심 설계 선택은 행동 공간을 단순하고 명확하게 두는 것이다. 모델은 임의의 코드나 API 호출을 만들 필요 없이 작은 행동 템플릿 목록에서 골라 추론에 따라 인자를 채운다. 이 제약 덕분에 퓨샷 프롬프팅이 다룰 만해진다. 모델은 도구를 새로 발명하는 대신 스키마만 익히면 된다.
7. 프롬프트 구성
ReAct 프롬프트는 퓨샷 학습(few-shot learning) 방식으로 구성된다. 프롬프트에는 사람이 쓴 궤적(trajectory) 몇 개가 들어가며 보통 3~6개다. 궤적은 원하는 생각-행동-관찰 형식을 보여 준다. 각 궤적은 질문, 교차된 생각과 행동, 환경이 돌려준 관찰, 최종 답을 포함한 완전한 문제 해결 과정이다.
지식 집약형 과제에서 저자들은 매 단계에 조밀한 추론을 담은 궤적을 직접 썼다. 각 생각은 모델의 현재 이해와 다음에 할 일을 설명한다. 의사결정 과제에서는 더 드문 방식을 썼고, 추론은 가장 유용한 지점에만 넣었다. 예를 들어 하위 목표를 세울 때나 실수에서 회복할 때다. 모델이 추론과 행동의 리듬을 스스로 정하도록 두었다.2
논문의 프롬프트는 원래 실험에 쓴 PaLM-540B 모델에 맞춰 설계되었다. 공개된 코드는 GPT-3 text-davinci-002에도 ReAct를 구현하며, 저자들은 PaLM과 GPT-3가 과제마다 강점이 다르다고 설명한다. 예를 들어 HotpotQA 정확 일치(EM)에서는 GPT-3가 PaLM-540B를 근소하게 앞섰고, FEVER 정확도에서는 PaLM-540B가 뚜렷이 강했다.5
프롬프팅 실험에는 작업별 미세 조정이 필요하지 않았다. 모델은 ReAct 형식을 문맥 속 예시만으로 익혔다.2
실무에서는 두 가지 구현 방식이 나타났다.
| 방식 | 설명 | 쓰이는 경우 |
|---|---|---|
| 퓨샷(Few-shot) | 프롬프트에 생각-행동-관찰 순환을 보여 주는 완전한 예시 여러 개를 넣는다. | 기본 모델(지시 튜닝이 되지 않은 모델)을 쓸 때, 또는 형식을 엄격히 지켜야 할 때. |
| 제로샷(Zero-shot) | 완성된 예시 없이, 형식과 쓸 수 있는 행동을 설명하는 자세한 지시문을 프롬프트에 넣는다. | GPT-4, Claude 같은 지시 튜닝 모델을 쓸 때. 이런 모델은 추상적인 지시를 안정적으로 따를 수 있기 때문이다. |
8. 벤치마크 성능
원 논문은 두 범주에 걸친 네 개의 벤치마크에서 ReAct를 평가했다. 달리 밝히지 않은 프롬프트 실험에는 모두 PaLM-540B를 썼다.2
8.1. 지식 집약형 추론
HotpotQA는 여러 Wikipedia 문서의 정보를 종합해야 하는 다중 홉(multi-hop) 질의응답 데이터셋이다. 논문은 검증 세트에서 무작위로 뽑은 예시 500개에 6-shot 프롬프팅을 적용해 평가했다.2,9
| 방법 | 정확 일치(EM) |
|---|---|
| 표준 프롬프팅 | 25.7 |
| 사고의 연쇄(CoT) | 29.4 |
| 자기 일관성을 쓴 CoT(CoT-SC) | 33.4 |
| 행동만(Act only) | 25.7 |
| ReAct | 27.4 |
| ReAct → CoT-SC(실패 시 전환) | 35.1 |
| CoT-SC → ReAct(실패 시 전환) | 35.12 |
HotpotQA에서 ReAct는 순수 사고의 연쇄보다 원점수 정확도가 낮았다. 그러나 두 방법은 서로 다른 유형의 질문에서 실패했다. 사고의 연쇄는 점수가 더 높았지만 환각 때문에 거짓 양성(false-positive) 비율이 훨씬 높았다. ReAct는 검색된 Wikipedia 내용에 추론을 붙들어 두어 환각 오류가 적었지만, 검색 오류나 관련 없는 문서를 가져와 때때로 실패했다.
가장 좋은 전체 성능은 두 방법을 결합했을 때 나왔다. ReAct를 먼저 돌리고 실패하면 CoT-SC로 넘기는 방식(또는 그 반대)으로 EM 35.1에 도달했다.2
FEVER는 Wikipedia 증거에 근거해 주장을 SUPPORTS, REFUTES, NOT ENOUGH INFO 중 하나로 분류해야 하는 사실 검증 데이터셋이다.
논문은 검증 세트에서 무작위로 뽑은 예시 500개에 3-shot 프롬프팅을 적용했다.2
| 방법 | 정확도 |
|---|---|
| 표준 프롬프팅 | 57.1 |
| CoT | 56.3 |
| 행동만(Act only) | 58.9 |
| ReAct | 60.9 |
| ReAct → CoT-SC | 64.6 |
| CoT-SC → ReAct | 64.62 |
FEVER에서 ReAct는 CoT와 행동만 하는 기준선을 모두 분명히 앞섰다. 두 방법을 결합한 방식은 정확도 64.6으로 다시 가장 강한 결과를 냈다.2
8.2. 상호작용 의사결정
ALFWorld는 집안일 과제(예: '깨끗한 사과를 조리대에 놓기')를 요구하는 텍스트 기반 게임 환경이다. 논문은 예시 1~2개를 쓰고 6회 시행했으며, 최고 시행 결과를 보고했다.2,10
| 방법 | 성공률 |
|---|---|
| BUTLER(모방 학습) | 37% |
| 행동만(Act only) | 45% |
| ReAct | 71%2 |
ReAct는 행동만 하는 기준선보다 26%p, 모방 학습 기준선 BUTLER보다 34%p 높았다. 이는 초록이 상호작용 의사결정에서 모방 학습과 강화 학습 방법 대비 절대 성공률 34%를 앞섰다고 주장한 것과 맞는다.
6회 시행에서 ReAct의 행동만 대비 상대 성능 향상은 33%에서 90% 사이였고, 평균은 62%였다. 이 큰 차이는 교차 추론의 가치를 보여 준다. 모델은 생각을 써서 목표를 하위 목표로 나누고, 완료된 하위 목표를 추적하며, 물건을 어디서 찾을지 정한다.
WebShop은 에이전트가 시뮬레이션 쇼핑몰을 탐색해 텍스트 설명에 맞는 상품을 찾아 구매하는 웹 탐색 벤치마크다. 논문은 성공률(정확한 상품을 찾은 비율)과 평균 보상 점수를 보고했다.2
| 방법 | 성공률 | 점수 |
|---|---|---|
| 모방 학습(IL) | 29.1% | 59.9 |
| IL + 강화 학습 | 28.7% | 62.4 |
| 행동만(Act only) | 30.1% | 66.6 |
| ReAct | 40.0% | 66.6 |
| 인간 전문가 | 59.6% | 82.12 |
ReAct의 성공률은 40.0%로, 행동만 하는 기준선(30.1%)과 이전 최고 방법(IL, IL+RL)보다 높았다. 논문은 이를 초록에서 WebShop의 절대 10% 향상으로 요약했다. ReAct는 예시를 한두 개만 썼지만 학습 기반 기준선은 약 10만 개의 학습 인스턴스를 썼다.2
9. 오류 분석
저자들은 HotpotQA에서 ReAct와 CoT 각각의 궤적을 정답 50개, 오답 50개씩 무작위로 뽑아(총 200개 예시) 성공과 실패 유형을 수작업으로 분류했다. 핵심 결과는 네 가지다.
- 환각은 CoT에서 심각한 문제였지만 ReAct에서는 훨씬 덜했다. ReAct는 검색된 Wikipedia 내용에 추론을 붙들어 두므로 사실 근거가 없는 주장을 적게 만든다. CoT는 거짓 양성 비율이 훨씬 높았다.
- ReAct의 추론 오류는 모델이 관찰을 제대로 종합하지 못할 때, 같은 생각과 행동을 되풀이하는 루프에 빠질 때, 검색된 텍스트에서 잘못된 결론을 끌어낼 때 발생했다.
- ReAct의 검색 오류는 질의가 관련 없는 문서를 돌려줄 때, 또는 정답 정보가 API가 돌려준 첫 몇 문장에 없을 때 발생했다. 이런 오류는 검색을 하지 않는 CoT에는 대응하는 것이 없다.
- 두 방법은 서로 다른 질문 부분집합에서 실패한다. 그래서 실패 시 전환하는 방식이 가장 좋은 결합 성능을 낸다.2
10. 작은 모델 미세 조정
프롬프트 기반 퓨샷 학습을 넘어, 논문은 ReAct 형식의 궤적으로 더 작은 언어 모델을 미세 조정하는 실험도 했다. 절차는 다음과 같다.
- 프롬프트를 쓴 PaLM-540B 모델로 HotpotQA 학습 질문에 대해 ReAct 궤적을 만든다.
- 정답으로 이어진 궤적만 걸러 낸다.
- 성공한 궤적을 지도 학습 데이터로 삼아 더 작은 PaLM 모델(8B, 62B 매개변수)을 미세 조정한다.
결과는 미세 조정이 프롬프팅만 한 경우보다 EM 점수를 일관되고 크게 높였다는 것이었다. 미세 조정된 PaLM-62B는 HotpotQA에서 프롬프팅한 PaLM-540B를 앞섰다. 이는 ReAct 형식이 지식 증류를 통해 작은 모델로 효과적으로 옮겨 간다는 것을 보여 준다.
표준 미세 조정과 CoT 미세 조정은 비교적 적은 학습 단계 뒤에 성능이 떨어졌다. 반면 ReAct와 행동만 하는 방식은 학습 단계와 데이터가 늘수록 대체로 이득을 보았다.2
이 결과는 실용적인 파이프라인을 시사했다. 큰 프롬프트 모델로 고품질 궤적을 만든 뒤, 그 궤적으로 배포용의 작고 저렴한 모델을 미세 조정하는 방식이다. 이 흐름은 이후 FireAct(Chen et al., 2023)가 이어받았다. FireAct는 여러 과제와 도구에 걸쳐 ReAct 스타일의 에이전트 행동을 위해 언어 모델을 미세 조정했다.11
11. 다른 프롬프팅 방법과의 비교
ReAct는 여러 프롬프팅 패러다임이 만나는 지점에 있다. 다음 표는 다른 방법들과의 관계를 정리한 것이다.
| 방법 | 추론 | 외부 행동 | 근거 확보 방식 | 핵심 한계 |
|---|---|---|---|---|
| 표준 프롬프팅 | 없음 | 없음 | 내부 지식만 | 여러 단계로 된 문제를 추론하기 어렵다 |
| 사고의 연쇄(CoT) | 있음 | 없음 | 내부 지식만 | 환각이 생기기 쉽고 새 정보에 접근하지 못한다8 |
| 자기 일관성을 쓴 CoT(CoT-SC) | 있음 | 없음 | 내부 지식만 | 여러 샘플을 만드는 데 비용이 든다. 외부 근거는 여전히 없다 |
| 행동만(Act only) | 없음 | 있음 | 도구 호출을 통한 외부 근거 | 다음 행동을 추론하거나 관찰을 종합하지 못한다 |
| ReAct | 있음 | 있음 | 내부 지식과 외부 근거 모두 | 검색과 조회 오류가 생기며, 단계마다 토큰 사용량이 많다2 |
| Reflexion | 있음 | 있음 | 내부 지식과 외부 근거, 자기 평가 메모리 포함 | 자기 비판 단계와 에피소드 메모리가 추가로 필요하다12 |
| 생각 트리(Tree of Thoughts, ToT) | 있음(분기형) | 없음(원 논문 기준) | 내부 지식, 탐색 포함 | 분기 탐색 비용이 들고 평가자가 필요하다13 |
| Toolformer | 암묵적 | 있음(학습됨) | 자기 지도 도구 호출을 통한 외부 근거 | 도구 사용 궤적으로 학습이 필요하고 API 집합이 고정되어 있다14 |
| ReWOO | 있음(계획만) | 있음 | 둘 다. 다만 계획을 미리 세운다 | 조건이 예상과 다르게 바뀌면 실행 중에 적응하지 못한다15 |
논문의 핵심 통찰은 추론과 행동이 중복되는 것이 아니라 서로를 보완한다는 것이다. 추론만 하면 모델이 자기 주장을 검증할 방법이 없어 환각이 생긴다. 행동만 하면 모델이 계획을 세우거나, 오류에서 회복하거나, 여러 단계에 걸쳐 정보를 종합하지 못해 비효율적이거나 목표 없이 움직인다.2
11.1. 사고의 연쇄와의 관계
ReAct는 사고의 연쇄 프롬프팅을 대체하기보다 그 확장으로 이해하는 것이 맞다. CoT는 예시로 이끌어 낸 자연어 추론이 여러 단계 추론이 필요한 과제의 성능을 높일 수 있음을 보였다. ReAct는 이 통찰을 그대로 보존한다. ReAct 궤적의 Thought 단계는 본질적으로 CoT식 추론이지만, 그 사이에 세계에 질의할 수 있는 Action 통로를 더한다. 행동 집합이 비어 있으면 ReAct는 사고의 연쇄로 퇴화하고, 생각이 비어 있으면 순수한 행동 정책으로 퇴화한다. 논문의 핵심 발견은 두 극단 어느 쪽도 최적이 아니며, 근거가 필요한 과제에서는 결합이 분명히 더 낫다는 것이다.2,8
11.2. Toolformer와의 관계
ReAct가 프롬프팅만으로 모델에게 도구 사용을 가르친다면, Toolformer(Schick et al., 2023)는 학습 기반의 보완적 접근을 택한다. 모델이 말뭉치에 자기 생성한 도구 호출을 주석으로 달고, 다음 토큰의 손실을 줄이는 호출만 걸러 낸 뒤, 그 궤적으로 미세 조정한다. 두 방법은 결합할 수 있다. Toolformer로 학습한 모델은 ReAct 형식으로 프롬프트를 받을 수도 있다. 두 방법은 LLM에 도구 사용 능력을 부여하는 대표적인 두 패러다임이다.14
12. 수용과 영향
심사자들은 프롬프팅 기법의 우아함과, 성격이 다른 벤치마크에 걸친 성능 향상의 일관성을 강조했다.
Google Scholar 집계에 따르면 논문은 발표 후 3년 만에 5,000회를 훨씬 넘게 인용되었다. 2022년 이후 LLM 에이전트 문헌에서 가장 많이 인용된 연구 가운데 하나다.16
학계 인용을 넘어 이 패러다임은 산업과 오픈소스 소프트웨어로 빠르게 퍼졌다. 앤드루 응(Andrew Ng)은 2024년 '에이전틱 디자인 패턴' 시리즈에서 도구 사용과 계획을 네 가지 기초 패턴 가운데 두 가지로 꼽았다. 그리고 둘의 결합된 가치를 보여 주는 대표 사례로 ReAct를 가리켰다.17
주요 모델 제공사인 Anthropic, OpenAI, Google 등은 구조화된 도구 호출 API를 출시했다. 이 API의 오케스트레이션 루프는 표면 문법이 원시 텍스트 프롬프팅과 달라도 생각-행동-관찰 순환을 반영한다.
Shunyu Yao는 2024년 프린스턴 대학교에서 박사 학위를 받았고, 같은 해 8월 OpenAI 연구진에 합류했다. 그곳에서 Operator와 Deep Research를 포함한 에이전트 제품 설계에 참여했다. ReAct, Tree of Thoughts, Reflexion을 포함한 그의 연구는 OpenAI 합류 시점까지 전체 인용 수가 15,000회를 넘었다. Karthik Narasimhan은 프린스턴 대학교 컴퓨터과학과에 계속 재직하고 있다.18
13. AI 에이전트 설계에 미친 영향
ReAct는 프롬프팅만으로 언어 모델을 기능하는 에이전트로 바꿀 수 있음을 보인 초기 시연 가운데 영향력이 가장 큰 것 중 하나다. 그 생각-행동-관찰 순환은 한 세대의 에이전트 프레임워크와 연구 방향에서 개념적 청사진이 되었다.
13.1. 에이전트 프레임워크
여러 인기 라이브러리가 ReAct를 핵심 패턴으로 채택했다.
- LangChain은 처음에 ReAct를 langchain.agents.create_react_agent로 구현했다. 이 함수는 모델, 도구 목록, 선택적 프롬프트 템플릿을 받아 생각-행동-관찰 루프를 실행하는 에이전트를 돌려준다. LangChain 초기 에이전트 구조는 거의 이 패턴을 중심으로 만들어졌고, initialize_agent 도우미는 zero-shot-react-description, react-docstore 등 여러 ReAct 변형을 노출했다.
- LangGraph는 LangChain의 그래프 기반 후속 에이전트 오케스트레이션 프레임워크다. 초기에는 langgraph.prebuilt.create_react_agent 팩토리를 사전 구축 구성 요소로 제공했다. LangGraph v1(2025년 말 출시)에서는 이 사전 구축 기능의 지원이 중단되고 더 일반적인 langchain.agents.create_agent로 대체되었다. 이 함수는 LangGraph 위에서 동작하며, ReAct 루프 위에 구성 가능한 미들웨어 시스템을 더한다.
- LlamaIndex는 검색 증강 추론 파이프라인을 만들 수 있도록 사전 구성된 ReAct 에이전트 구성 요소를 제공한다.
- Hugging Face는 transformers 에이전트 API에서 ReAct 스타일 에이전트를 제공하며, 생각-행동-관찰 형식을 기본 아키텍처로 쓴다.
- CrewAI, AutoGen 및 여러 다중 에이전트 프레임워크는 ReAct 또는 가까운 변형을 에이전트별 추론 루프로 쓴다. 그 위에 조정과 메시지 전달을 얹는다.6,7,19
13.2. 후속 연구
ReAct는 많은 후속 연구에 직접 영감을 주거나 영향을 미쳤다.
- Reflexion(Shinn et al., 2023)은 ReAct에 각 에피소드 뒤의 자기 평가 단계를 더한다. 별도의 반성 프롬프트가 방금 끝난 궤적을 비판하고, 통찰을 에피소드 메모리 버퍼에 저장한다. 이후 시도에서 에이전트는 이 반성을 참고해 같은 실수를 피한다. Reflexion은 ReAct를 내부 행동 루프로 쓰고 그 위에 언어적 강화 학습을 얹는다.
- Tree of Thoughts(Yao et al., 2023)는 Shunyu Yao가 공동 저술했으며, 사고의 연쇄를 트리 탐색 절차로 일반화한다. 모델은 각 단계마다 여러 후보 생각을 제안하고 평가한 뒤, 너비 우선 또는 깊이 우선 탐색으로 유망한 가지를 탐색한다. ToT는 주로 추론 전용이지만, 중간 단계를 검토하고 수정할 수 있는 숙고 단위로 보는 ReAct의 틀을 공유한다.
- Language Agent Tree Search(LATS)(Zhou et al., 2023)도 Yao가 공동 저술했으며, Monte Carlo Tree Search를 ReAct 틀에 통합한다. 단일 추론 경로를 따르는 대신 트리 안의 여러 가능한 궤적을 탐색하고, LLM이 만든 가치 추정과 자기 반성으로 탐색을 이끈다. LATS는 ICML 2024에 발표되었다.
- ReWOO(Reasoning Without Observation)(Xu et al., 2023)는 실행 전에 모델이 도구 호출 전체 순서를 한 번에 계획하게 하여 ReAct를 최적화한다. 이로써 단계마다 한 번씩 하던 LLM 호출이 전체 한 번으로 줄어드는 대신, 실행 중에 적응하는 능력은 포기하게 된다.
- Toolformer(Schick et al., 2023)는 언어 모델이 자기 지도 학습으로 언제 외부 도구를 호출할지 스스로 결정하도록 배울 수 있음을 보였다. 이는 ReAct의 프롬프트 기반 접근을 보완한다.
- FireAct(Chen et al., 2023)는 ReAct 스타일 에이전트 행동을 위해 언어 모델을 미세 조정하는 것을 탐구했으며, 원 ReAct 논문의 미세 조정 실험을 기반으로 한다.
- Cognitive Architectures for Language Agents(CoALA)(Sumers et al., 2023)는 Yao와 Narasimhan이 공동 저술했다. 모듈형 메모리, 구조화된 행동 공간, 일반화된 의사결정을 갖춘 언어 에이전트의 일반 틀을 제시하며, ReAct가 비공식적으로 도입한 여러 아이디어를 형식화했다.
- SWE-agent(Yang et al., 2024)에도 Yao가 참여했으며, 에이전트-컴퓨터 인터페이스 설계를 소프트웨어 공학 과제에 적용한다. 에이전트가 복잡한 환경과 효과적으로 상호작용하려면 잘 설계된 행동 공간이 필요하다는 원칙을 따르며, 이는 ReAct의 행동 스키마 선택을 직접 이어받은 것이다.11,12,13,14,15,20,21,22
13.3. 상용 AI 시스템에 미친 영향
ReAct 패러다임은 상용 언어 모델 API의 도구 사용과 에이전트 기능 설계에 영향을 주었다. OpenAI의 함수 호출(function calling), Anthropic의 도구 사용, Google의 Gemini 함수 호출에는 모두 생각-행동-관찰 패턴의 요소가 들어 있다. 다만 원시 텍스트 프롬프팅보다는 구조화된 API 프로토콜(JSON 도구 정의와 도구 결과 메시지)을 통해 구현하는 경우가 많다.
많은 실서비스 에이전트 시스템은 구현 세부 사항이 원 논문의 프롬프팅 방식과 달라도 내부적으로 ReAct에서 영감을 받은 루프를 쓴다.
2024년부터 2026년까지의 '에이전트' 제품 흐름에서는 OpenAI Operator와 Deep Research, Anthropic의 컴퓨터 사용 기능, Google의 Project Astra와 Mariner, 그리고 수십 곳의 수직 특화 에이전트 스타트업이 나왔다. 이들은 생각-행동-관찰 제어를 기본 골격으로 삼는다.
14. 한계
ReAct에는 널리 알려진 몇 가지 한계가 있다.
- 검색과 조회에 대한 민감성: ReAct의 성능은 외부 도구의 품질과 그 도구가 돌려주는 정보에 크게 좌우된다. 질의가 관련 없는 결과를 내면 모델은 오해를 낳는 관찰을 바탕으로 잘못 추론할 수 있다. 원 논문은 HotpotQA에서 검색 오류가 주된 실패 유형 중 하나였다고 밝혔다.
- 반복 루프: 모델이 같은 생각과 행동을 되풀이하며 진전 없이 순환에 빠지는 경우가 있다. 저자들은 이를 추론 오류의 한 형태로 분류했다.
- 토큰 효율: 각 단계마다 모델이 생각, 행동, 관찰의 전체 이력을 다시 처리해야 하므로 컨텍스트 창이 빠르게 찬다. 단계가 많은 긴 에피소드에서 특히 문제가 된다. ReWOO는 이 문제를 풀기 위해 계획 단계를 한 번의 패스로 압축하도록 설계되었다.
- 구조적 경직성: 고정된 생각-행동-관찰 형식은 다른 제어 흐름이 더 자연스러운 상황에서 모델을 제약할 수 있다. 예를 들어 일부 과제는 한 단계씩 추론하기보다 전체 계획을 미리 세우는 편이 낫다. 이는 Plan-and-Execute 구조가 다루는 상황이다.
- 온도 민감성: 논문은 대부분의 과제에서 ReAct가 온도 0(그리디 디코딩)일 때 훨씬 잘 작동한다고 밝혔다. 다만 HotpotQA 같은 사실 기반 질의응답은 예외였다. 이는 모델이 탐색할 수 있는 추론 경로의 다양성을 제한한다.
- 도구 수에 따른 확장성: 사용할 수 있는 도구와 매개변수 시그니처가 늘어날수록 잘못 만들어진 도구 호출(환각된 호출)이 많아진다. 모델은 실제 도구 시그니처와 맞지 않는 행동 형식을 만들거나 엉뚱한 도구를 호출할 수 있다. 이는 함수가 많은 기업 응용에서 알려진 문제이며, 검색 기반 도구 선택과 더 엄격한 구조화 출력 디코더 연구를 촉발했다.
- 암묵적 비용 모델: ReAct는 서로 다른 행동의 비용을 내장해 설명하지 않는다. 실서비스 배포는 보통 최대 반복 횟수, 최대 토큰 수, 최대 도구 호출 수 같은 명시적 예산과 호출 속도 제한으로 루프를 감싼다.2,15
15. 구현 패턴
ReAct 에이전트를 만드는 실무자들은 보통 몇 가지 패턴 가운데 하나를 따른다.
15.1. 기본 프롬프트 템플릿
최소 ReAct 프롬프트는 다음 세 부분으로 구성된다.
- 과제와 쓸 수 있는 행동을 설명하는 시스템 지시문
- 완전한 생각-행동-관찰 궤적을 보여 주는 퓨샷 예시
- 현재 질문이나 과제, 그리고 모델이 추론을 시작하도록 하는 Thought 1: 표지
오케스트레이션 시스템은 모델 출력을 파싱해 행동 명령을 찾아낸다. 파싱에는 문자열 매칭, 정규 표현식, 구조화된 출력 파싱 가운데 하나를 쓴다. 그다음 행동을 실행하고, 관찰을 문맥에 덧붙이고, 다음 생각을 얻도록 모델을 다시 호출한다. 기본 제어 루프의 의사코드는 다음과 같다.
history = render_few_shot_prompt(examples) + render_question(task)
for step in range(max_steps):
completion = llm.generate(history, stop=["Observation"])
history += completion
action = parse_action(completion)
if action.name == "Finish":
return action.args
obs = tools[action.name](action.args)
history += f"\nObservation {step+1}: {obs}\n"
return None # exceeded budget15.2. 프레임워크 기반 구현
LangChain 같은 프레임워크를 쓰면 모델, 도구 객체 목록(각각 이름, 설명, 호출 가능한 함수를 가짐), 선택적 사용자 정의 프롬프트를 지정하는 것만으로 기본 ReAct 에이전트를 몇 줄의 코드로 만들 수 있다. 프레임워크가 오케스트레이션 루프, 행동 파싱, 도구 실행, 관찰 주입을 자동으로 처리한다.
LangGraph v1에서 권장되는 API는 langchain.agents.create_agent다. 이 API는 ReAct 루프를 그래프 노드로 감싸고, 로깅, 검증, 휴먼 인 더 루프(사람이 개입하는 처리)를 위한 미들웨어 훅을 노출한다.19
15.3. 실서비스 고려 사항
실서비스 ReAct 에이전트에는 보통 추가 안전장치가 들어간다. 주요 항목은 다음과 같다.
- 무한 루프를 막기 위한 최대 반복 횟수 제한
- 도구 실행 실패에 대비한 오류 처리(재시도 로직과 대체 행동 포함)
- 행동 출력 검증: 실행 전에 모델의 행동 출력이 기대 형식과 맞는지 확인한다. 많은 시스템은 원시 텍스트의 정규 표현식 파싱에 기대는 대신 제약 디코딩이나 JSON 스키마 계층을 쓴다.
- 토큰 한도에 가까워졌을 때 오래된 문맥을 잘라 내거나 요약하는 대화 메모리 관리
- 디버깅과 모니터링을 위해 각 생각-행동-관찰 단계를 기록하는 로깅과 관찰 가능성. LangSmith, Langfuse, Helicone 같은 도구가 에이전트 추적 기록에 일상적으로 쓰인다.
16. 강화 학습과의 관계
ReAct 루프는 강화 학습의 상태-행동-보상 루프와 구조적으로 닮았다. 강화 학습에서는 에이전트가 상태를 관찰하고, 행동을 하고, 보상을 받고, 정책을 갱신한다. ReAct에서는 모델이 현재 문맥(상태)을 읽고, 생각과 행동을 만들고, 관찰(새 상태에 해당)을 받은 뒤 계속한다.
그러나 ReAct는 강화 학습과 몇 가지 중요한 점에서 다르다. 에피소드 중에 명시적인 보상 신호가 없고, 모델은 시행착오를 통해 학습되지 않으며, '정책'은 전적으로 프롬프트와 모델의 사전 학습된 가중치로 정의된다.
강화 학습과의 연결은 LATS에서 더 분명해졌다. LATS는 게임을 하는 강화 학습에서 쓰이는 Monte Carlo Tree Search를 ReAct 틀에 도입했다. Reflexion은 자기 비판을 통한 일종의 에피소드 학습을 도입했다.12,20
더 최근의 추론 모델은 과정 보상이나 결과 보상을 이용한 강화 학습으로 학습되는데, 예를 들어 DeepSeek-R1과 OpenAI의 o 시리즈가 있다. 이들은 ReAct 루프를 내재화한 것으로 볼 수 있다. 학습 보상은 정답으로 이어지는 추론 궤적을 장려하며, 도구 사용이 때로 정책 안에 직접 들어가 있다.
출처 22개
- AI Wiki: ReAct (prompting) (2026-06-21 수정본) aiwiki.ai · CC BY 4.0 · 확인 2026-11-04
- ReAct: Synergizing Reasoning and Acting in Language Models arxiv.org · 확인 2026-11-04
- ReAct: Synergizing Reasoning and Acting in Language Models, ICLR 2023 notable top 5% openreview.net · 확인 2026-11-04
- ReAct: Synergizing Reasoning and Acting in Language Models research.google · 확인 2026-11-04
- ysymyth/ReAct: [ICLR 2023] ReAct: Synergizing Reasoning and Acting in Language Models github.com · 확인 2026-11-04
- createreactagent reference.langchain.com · 확인 2026-11-04
- Agents and tools huggingface.co · 확인 2026-11-04
- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models arxiv.org · 확인 2026-11-04
- HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering arxiv.org · 확인 2026-11-04
- ALFWorld: Aligning Text and Embodied Environments for Interactive Learning arxiv.org · 확인 2026-11-04
- FireAct: Toward Language Agent Fine-Tuning arxiv.org · 확인 2026-11-04
- Reflexion: Language Agents with Verbal Reinforcement Learning arxiv.org · 확인 2026-11-04
- Tree of Thoughts: Deliberate Problem Solving with Large Language Models arxiv.org · 확인 2026-11-04
- Toolformer: Language Models Can Teach Themselves to Use Tools arxiv.org · 확인 2026-11-04
- ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models arxiv.org · 확인 2026-11-04
- ReAct: Synergizing Reasoning and Acting in Language Models, citing papers semanticscholar.org · 확인 2026-11-04
- Agentic Design Patterns Part 3: Tool Use deeplearning.ai · 확인 2026-11-04
- Language Agents: From Reasoning to Acting ysymyth.github.io · 확인 2026-11-04
- LangGraph v1 migration guide docs.langchain.com · 확인 2026-11-04
- Language Agent Tree Search Unifies Reasoning, Acting, and Planning in Language Models arxiv.org · 확인 2026-11-04
- Cognitive Architectures for Language Agents arxiv.org · 확인 2026-11-04
- SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering arxiv.org · 확인 2026-11-04