30분
ReAct 패턴: Thought-Action-Observation
Day 3: ReAct 에이전트
ReAct 패턴: Thought-Action-Observation
AI Agent 기초 > 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 │ │
│ │ (생각) │ │ (행동) │ │ (관찰) │ │
│ └──────────┘ └──────────┘ └─────┬──────┘ │
│ ▲ │ │
│ └────────────────────────────────┘ │
│ 반복 │
└─────────────────────────────────────────────────┘
| 요소 | 설명 | 예시 |
|---|---|---|
| Thought | LLM이 현재 상황을 분석하고 다음 행동을 결정 | "CNC-003만 경고니까 이것부터 확인하자" |
| Action | Tool을 호출하여 정보를 얻거나 행동을 실행 | get_alarm_history("CNC-003") |
| Observation | Tool 결과를 확인하고 다음 단계를 판단 | "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이 환경 피드백인지 내부 상태인지를 논문 기준으로 명확히 해줘.
이 팁이 도움이 됐나요?