AI 에이전트 이해하기 - ReAct와 계획-실행 루프
함수 호출로 LLM에 도구를 쥐여줬다면, 그다음 질문은 자연스럽습니다. "목표만 던지면 알아서 여러 단계를 밟아 끝내주면 안 되나?" 이 아이디어가 AI 에이전트(agent) 이고, 그 대표적인 동작 방식이 ReAct와 계획-실행 루프입니다.
이 글에서는 에이전트가 무엇이고, 어떤 루프로 도는지, 그리고 실패·무한루프를 어떻게 막으며 현실적으로 어디까지 되는지를 정리합니다.
1. 에이전트란 - 관찰·사고·행동의 루프
일반적인 LLM 호출은 "질문 → 답변" 한 번으로 끝납니다. 에이전트는 다릅니다.
에이전트 = LLM을 두뇌로 삼아, 목표를 달성할 때까지 [사고 → 행동 → 관찰]을 스스로 반복하는 시스템.
핵심은 루프입니다.
목표 입력
│
▼
┌───────────────────────────────┐
│ 관찰(Observation): 지금 상황 파악 │
│ ↓ │
│ 사고(Thought): 다음에 뭘 할지 판단 │
│ ↓ │
│ 행동(Action): 도구 호출/답변 │
└───────────────────────────────┘
│ (목표 달성까지 반복)
▼
최종 결과
한 번의 응답으로 못 끝내는 일을, 여러 스텝에 걸쳐 도구를 쓰며 처리한다는 게 에이전트의 본질입니다.
2. ReAct 패턴 - Reasoning + Acting
에이전트의 가장 기본적인 패턴이 ReAct입니다. 이름 그대로 Reasoning(추론)과 Acting(행동)을 번갈아 합니다.
각 스텝에서 LLM은 세 가지를 만들어냅니다.
- Thought: 지금 상황에서 무엇을 해야 하는지에 대한 생각
- Action: 실제로 호출할 도구와 인자
- Observation: 그 도구가 돌려준 결과(이건 시스템이 채워줌)
질문: "우리 팀에서 이번 주 마감인 이슈가 몇 개야?"
Thought: 이슈 트래커를 조회해야겠다.
Action: search_issues({ team: "backend", due: "this_week" })
Observation: 7건 반환됨
Thought: 개수만 세면 되니 답할 수 있다.
Action: finish("이번 주 마감 이슈는 7건입니다.")
이게 앞 글의 함수 호출 루프와 거의 같은 구조라는 걸 눈치챘을 겁니다. 실제로 ReAct는 함수 호출 위에 "생각을 명시적으로 뱉게 하고, 목표 달성까지 반복" 을 얹은 것입니다.
3. 계획-실행(Plan-and-Execute) 패턴
ReAct는 매 스텝 즉흥적으로 다음 행동을 정합니다. 단계가 많아지면 길을 잃기 쉽죠. 그래서 나온 게 계획-실행 방식입니다.
먼저 전체 계획을 세우고(Plan), 그 계획을 순서대로 실행(Execute)한다.
[Plan] LLM이 큰 그림을 먼저 짬
1. 지난달 매출 데이터 조회
2. 카테고리별 집계
3. 표로 정리해 요약
[Execute] 각 단계를 도구로 실행하며 진행
→ 중간에 어긋나면 계획을 다시 조정(re-plan)
| 패턴 | 방식 | 강점 | 약점 |
|---|---|---|---|
| ReAct | 매 스텝 즉흥 판단 | 유연함, 단순함 | 긴 작업에서 방향 상실 |
| 계획-실행 | 계획 먼저, 그다음 실행 | 복잡한 다단계에 강함 |