30

ReAct 패턴: Thought-Action-Observation

Day 3: ReAct 에이전트

학습 목표

ReAct 논문의 핵심 아이디어를 이해한다 Thought-Action-Observation 사이클을 설명할 수 있다 ReAct가 단순 Tool 호출보다 나은 이유를 안다

ReAct 논문 (2022, Yao et al.)

"Synergizing Reasoning and Acting in Language Models" 추론과 행동을 결합하면 LLM이 더 정확하게 문제를 푼다.

핵심 아이디어: LLM에게 "생각을 말로 하면서" Tool을 사용하게 한다.


3가지 요소

┌─────────────────────────────────────────────────┐
│              ReAct 사이클                         │
│                                                   │
│  ┌──────────┐    ┌──────────┐    ┌────────────┐  │
│  │ Thought  │───▶│  Action  │───▶│Observation │  │
│  │ (생각)   │    │  (행동)  │    │ (관찰)     │  │
│  └──────────┘    └──────────┘    └─────┬──────┘  │
│       ▲                                │          │
│       └────────────────────────────────┘          │
│                   반복                             │
└─────────────────────────────────────────────────┘
요소설명예시
ThoughtLLM이 현재 상황을 분석하고 다음 행동을 결정"CNC-003만 경고니까 이것부터 확인하자"
ActionTool을 호출하여 정보를 얻거나 행동을 실행get_alarm_history("CNC-003")
ObservationTool 결과를 확인하고 다음 단계를 판단"W-1105 알람. 베어링 관련이다."

왜 Thought가 중요한가?

Thought 없는 Agent (단순 Tool 호출)

질문: "CNC-003 진동이 높아진 이유와 조치 방법"

Action 1: get_equipment_status("CNC-003")
  -> 진동 1.2mm/s, 알람 W-1105

Action 2: get_equipment_status("CNC-001")  ???
  -> 정상... 왜 이걸 호출했지?

Action 3: search_manual("진동")
  -> 여러 결과... 어떤 게 맞지?

Action 4: search_manual("CNC-003")
  -> 관련 없는 결과...

LLM이 왜 그 Tool을 호출하는지 설명하지 않으니 엉뚱한 방향으로 흘러간다.

Thought 있는 Agent (ReAct)

Thought 1: CNC-003의 현재 상태를 먼저 확인해야 한다.
Action 1: get_equipment_status("CNC-003")
Observation 1: 경고 상태, 진동 1.2mm/s, 알람 W-1105

Thought 2: W-1105 알람의 원인과 조치 방법을 매뉴얼에서 찾아야 한다.
Action 2: search_manual("W-1105")
Observation 2: 진동 수치 상승 - 베어링 마모, 축 정렬, 공구 마모. 부품: BRG-002, BRG-003

Thought 3: 필요한 부품 BRG-002와 BRG-003의 재고를 확인해야 한다.
Action 3: check_inventory("BRG-002")
Observation 3: 재고 5개, 안전재고 3개 - 충분

Thought 4: BRG-003도 확인해야 한다.
Action 4: check_inventory("BRG-003")
Observation 4: 재고 2개, 안전재고 3개 - 부족!

Thought 5: 충분한 정보가 모였다. 원인 분석과 조치 방안을 정리하자.
Final Answer: [종합 분석 보고서]

5번의 정확한 호출. 불필요한 호출 0.


ReAct vs 다른 패턴

패턴특징장점단점
단순 Tool 호출LLM이 바로 Tool 선택빠름정확도 낮음, 불필요한 호출
Chain of Thought생각만 하고 행동 안 함추론 좋음외부 데이터 접근 불가
ReAct생각 + 행동 결합정확도 높음, 효율적약간 느림 (생각 시간)
Plan-and-Execute먼저 전체 계획 후 실행복잡한 작업에 좋음계획 변경 어려움

ReAct 프롬프트 구조

System Prompt:

당신은 제조 현장의 설비 관리 AI Agent입니다.
질문에 답하기 위해 다음 과정을 반복합니다:

1. Thought: 현재 상황을 분석하고 다음에 할 일을 결정합니다.
2. Action: 필요한 Tool을 호출합니다.
3. Observation: Tool 결과를 확인합니다.

이 과정을 필요한 만큼 반복한 후, 충분한 정보가 모이면
최종 답변을 제공합니다.

규칙:
- 정상 설비는 추가 조회하지 마세요.
- 이미 조회한 정보는 다시 조회하지 마세요.
- 문제가 있는 설비에 집중하세요.
- 조치 방안은 구체적으로 제시하세요.

핵심: System Prompt에 "생각하라"고 명시해야 한다. 안 그러면 LLM은 바로 Tool을 호출한다.

AI로 학습하기 — 꿀팁
ReAct 논문 핵심 아이디어 정확성 점검AI 학습 팁

AI가 설명한 ReAct 패턴의 Thought-Action-Observation 개념이 원논문과 일치하는지 검증하세요.

ReAct 패턴의 Thought-Action-Observation 사이클에 대해 설명받았는데, 이 내용이 Yao et al.(2022) 논문 'ReAct: Synergizing Reasoning and Acting in Language Models'에서 정의한 방식과 정확히 일치하는지 점검해줘. 특히 Thought의 역할이 단순 독백인지 아닌지, Observation이 환경 피드백인지 내부 상태인지를 논문 기준으로 명확히 해줘.
이 팁이 도움이 됐나요?