15분
멈추지 않는 Agent, 멈춰야 하는 Agent
Day 3: ReAct 에이전트
멈추지 않는 Agent, 멈춰야 하는 Agent
AI Agent 기초 > Day 3: ReAct 에이전트
학습 목표
단순 Tool 호출 Agent의 한계를 체감한다 ReAct 패턴이 왜 필요한지 이해한다
Agent가 폭주하다
어제 만든 Agent를 현장에 배포했다. 처음에는 잘 됐다.
그런데 금요일 오후, 이런 질문이 들어왔다.
현장 반장: "A라인 전체 설비 상태 확인하고, 문제 있는 거 있으면
알람 원인 찾아서, 필요한 부품 재고도 확인해줘"
Agent의 행동:
1. get_equipment_status("A-LINE-*") -> 호출 (라인 전체 조회)
2. get_equipment_status("CNC-001") -> 또 호출 (왜?)
3. get_equipment_status("CNC-002") -> 또 호출 (또?)
4. search_manual("CNC-001") -> 호출 (CNC-001은 정상인데?)
5. check_inventory("BRG-001") -> 호출 (이 부품 코드는 없는데?)
6. get_alarm_history("A-LINE") -> 호출 (이미 1에서 확인했는데?)
7. search_manual("CNC-002") -> 호출 (정상 설비를...)
...
12번째 Tool 호출 후에야 응답이 나왔다.
소요 시간: 45초
API 비용: 12회 호출
정확도: 50% (불필요한 호출 다수)
문제의 원인
Agent가 "생각 없이" Tool을 호출했다.
- 정상 설비도 매뉴얼 검색
- 이미 조회한 데이터를 다시 조회
- 존재하지 않는 부품 코드로 재고 확인
- 언제 멈춰야 할지 모름
Tool을 가진 것만으로는 부족하다. 언제, 왜, 어떤 순서로 쓸지 아는 것이 핵심이다.
▲ ReAct 패턴: Thought → Action → Observation 반복 사이클
ReAct = Reasoning + Acting
사람이 문제를 풀 때를 생각해보자.
숙련 엔지니어의 사고 과정:
1. [생각] "A라인 설비부터 전체 상태를 확인하자"
[행동] 설비 상태 조회
2. [관찰] "CNC-003만 경고 상태. 나머지는 정상."
[생각] "CNC-003의 알람 내용을 확인하자. 정상 설비는 건너뛰자."
[행동] CNC-003 알람 이력 조회
3. [관찰] "W-1105: 진동 수치 상승. 베어링 관련일 수 있다."
[생각] "매뉴얼에서 W-1105 조치 방법을 찾자."
[행동] 매뉴얼 검색
4. [관찰] "베어링 BRG-002, BRG-003 교체 필요."
[생각] "해당 부품 재고를 확인하자."
[행동] 재고 확인
5. [관찰] "BRG-003이 안전재고 미달."
[생각] "충분한 정보가 모였다. 종합 보고서를 작성하자."
[최종 응답]
5번의 Tool 호출로 정확한 답을 얻었다. 폭주 Agent는 12번을 호출하고도 50%밖에 못 맞췄다.
이것이 ReAct (Reasoning + Acting) 패턴이다.
오늘 배울 것
- ReAct 패턴의 구조: Thought -> Action -> Observation
- ReAct Agent 구현: 생각하는 Agent 만들기
- LangChain으로 ReAct Agent 쉽게 만들기
- 제조 현장 최적화: 불필요한 호출 줄이기
Tool + 추론 = 진짜 Agent.
AI로 학습하기 — 꿀팁
🧪단순 Tool 호출 Agent 한계 제조 심화AI 학습 팁
단순 Tool 호출만 하는 Agent가 복잡한 제조 문제 앞에서 실패하는 구체적인 상황을 탐구하세요.
단순 Tool 호출 Agent(ReAct 없이 LLM이 한 번에 Tool 결정)가 제조 라인 품질 불량 원인을 찾으려 할 때 어떤 상황에서 실패하는지 시나리오로 작성해줘. Tool 결과가 애매하거나 여러 번 반복 조회가 필요한 상황에서 단순 호출 방식의 한계를 보여주고, ReAct 패턴이 동일 상황을 어떻게 처리하는지 대조해줘.
이 팁이 도움이 됐나요?