간단한 게임을 통해 ReAct (Reasoning + Action) 이해하기
Source: Dev.to
제가 처음 뉴욕시에서 필라델피아로 이사했을 때, 사람과의 교류가 절실히 필요했습니다. 그래서 당연히 성인이라면 하는 대로 Meetup을 다운로드했죠. 첫 번째 사회 활동은 작가 모임이었고, 아이스‑브레이커는 “Pass the Story” 라는 어린 시절 게임이었습니다.
“Pass the Story” 게임
- 종이 한 장을 돌려가며 사용합니다.
- 한 사람이 한 줄을 쓰고, 다음 사람에게 종이를 넘깁니다.
- 새로운 참여자는 지금까지 적힌 내용을 읽고, 다음 줄을 추가한 뒤 다시 넘깁니다.
- 그룹이 함께 이야기를 완성할 때까지 이 과정을 반복합니다.
게임을 ReAct에 매핑하기
ReAct (Observing + Reasoning + Acting)은 게임 단계와 다음과 같이 대응됩니다:
| ReAct 구성 요소 | 게임 행동 |
|---|---|
| Observe (관찰) | 사람은 지금까지 적힌 이야기를 읽는다. |
| Reason (추론) | 사람은 이야기를 어떻게 이어갈지 생각한다. |
| Act (행동) | 사람은 다음 줄을 쓰고 종이를 넘긴다. |
페이지에 적힌 첫 번째 줄이 쿼리가 됩니다. 이후 각 참여자는 이야기가 완성될 때까지 Observe → Reason → Act 루프를 반복합니다.
언어 모델의 무상태성
다음 플레이어가 종이를 읽기 전까지는 이야기를 전혀 모르는 것처럼, LLM은 무상태(stateless) 합니다: API 호출이나 대화 턴 사이에 기억을 유지하지 않죠. 각 요청은 새로 시작됩니다—볼리우드 영화 Ghajini의 주인공처럼 말이죠.
전체 이야기를 다음 호출에 전달하는 것은 대화 기록을 LLM에 다시 보내는 것과 동일합니다. 누적된 이야기가 모델의 컨텍스트가 됩니다.
제한 사항 및 실용적인 해결책
무한 루프
참여자(또는 모델)의 “어휘”가 매우 제한적이면 같은 문장을 반복할 수 있습니다:
“고양이와 개는 동물이다. 동물은 고양이와 개이다.”
AI에서는 이것이 무한 루프로 나타납니다—관찰이 새로운 정보를 제공하지 않고, 추론이 반복되며, 같은 행동을 계속하게 됩니다.
해결책: 반복 횟수에 엄격한 제한을 두기(예: “최대 5번 반복 허용”).
컨텍스트 윈도우 제한
이야기가 커지면(예: 100페이지) 뒤에 오는 참여자는 전체를 읽을 수 없습니다. LLM도 비슷한 문제에 직면합니다: 각 Observe → Reason → Act 루프가 토큰을 추가하면서
- 비용 증가
- 응답 시간 지연
- 모델 컨텍스트 한도 초과 위험
해결책: 컨텍스트 프루닝 – 매번 전체 기록을 보내는 대신 가장 최근 단계만 유지하고, 이전 단계는 고수준 요약으로 보관합니다.
ReAct vs. ReWOO
- ReAct: 매 단계마다 생각한다(즉흥적).
- ReWOO: 한 번 깊게 생각하고 구조화된 계획을 만든 뒤 실행한다(전략적).
이는 다음과 같은 차이와 같습니다:
- 즉흥적으로 한 줄씩 이야기를 이어가는 것 vs.
- 플롯을 먼저 합의하고 장을 쓰는 것.
두 접근법 모두 유용합니다: 하나는 반응형, 다른 하나는 전략형입니다.
의견
저는 IBM 영상이 “2026년은 다중 에이전트 시대”라고 말한 것이 ReWOO를 의미한다고 생각합니다. 올해 말까지 이 블로그는 이미 구식이 될 수도 있지만, ReAct 루프가 어떻게 작동하는지 명확히 이해하는 데 도움이 되었길 바라며 여러분의 생각을 공유해 주세요.
멋진 필라델피아 작가 모임에 환영해 주셔서 감사합니다!
Reddit | LLMs