본문 바로가기
AI2026년 4월 21일7분 읽기

AI 에이전트 디자인 패턴 7가지 — Reflexion·ReAct·Plan-Execute·Multi-Agent 실전

YS
김영삼
조회 1
AI 에이전트 디자인 패턴 7가지 — Reflexion·ReAct·Plan-Execute·Multi-Agent 실전

핵심 요약

2026년 시점 LLM 에이전트 시스템은 단일 호출이 아니라 여러 단계 + 도구 + 검증의 복합체. 잘 알려진 7가지 패턴을 적합 워크로드와 함께 정리한다.

  • ReAct — 가장 단순. 추론+행동 반복
  • Reflexion — 자기 반성으로 정확도 향상
  • Chain-of-Thought (CoT) — 단순 추론 강화
  • Tree-of-Thoughts — 분기 탐색
  • Plan-and-Execute — 계획 + 실행 분리
  • MCP-Tool — 표준 도구 호출
  • Multi-Agent — 역할 분담

1. ReAct (Reasoning + Acting)

Thought: 사용자가 코드의 N+1을 찾으라고 했다. 먼저 코드를 읽어야 한다.
Action: read_file(path="src/users.ts")
Observation: ...코드 내용...
Thought: forEach 안에 await가 있어 N+1 가능성. 확인하자.
Action: grep(pattern="forEach.*await", path="src")
Observation: 3곳 발견
Thought: 충분한 정보. 답변 작성.
Answer: 다음 3곳에서 N+1 패턴이 발견됨...

가장 단순. 도구 호출이 필요한 거의 모든 워크로드 baseline.

2. Reflexion — 자기 반성

첫 답변 → 자체 비평 → 개선 답변. 정확도가 평균 15~25%p 상승.

# Step 1: 초안
draft = llm("코드 리뷰: ...")

# Step 2: 비평
critique = llm(f"다음 답변의 약점·놓친 점:\n{draft}")

# Step 3: 개선
final = llm(f"다음 답변을 critique 반영해 개선:\n초안: {draft}\n비평: {critique}")

3. Chain-of-Thought

"단계별로 생각해보세요" 같은 프롬프트로 추론 표시. GPT-5.5·Opus 4.7은 이미 자동으로 CoT 사용. 명시적으로 강제할 때만 의미 있음.

4. Tree-of-Thoughts

여러 분기를 동시에 탐색 → 평가 → 가장 좋은 가지 선택. 비용 5~10배. 수학·논리 퍼즐에서만 의미.

# 3개 후보 생성
candidates = [llm(prompt) for _ in range(3)]

# 자체 평가
scores = [llm(f"0~10점으로 평가: {c}") for c in candidates]

# 최고점 선택
best = candidates[scores.index(max(scores))]

5. Plan-and-Execute

큰 작업을 (1) 계획 단계 → (2) 단계별 실행으로 분리. 복잡한 멀티스텝 작업의 표준.

# Step 1: Plan
plan = llm("다음 작업의 단계 목록:\n{task}")
# "1. ... 2. ... 3. ..."

# Step 2: Execute each step
results = []
for step in parse_plan(plan):
    result = execute_step(step)
    results.append(result)

# Step 3: Synthesize
final = llm(f"결과 통합:\n{results}")

6. MCP-Tool 패턴

도구를 MCP 서버로 표준화. 모델 종속성 없음.

from mcp import Client

async with Client("npx @mcp/filesystem /data") as fs:
    tools = await fs.list_tools()
    # [read_file, write_file, list_dir, ...]
    
    # LLM에게 tools spec 전달, function_call 응답을 fs.call로 실행
    response = llm.with_tools(tools)
    if response.tool_call:
        result = await fs.call(response.tool_call.name, response.tool_call.args)

7. Multi-Agent

역할별 에이전트 분담. 각 에이전트는 자기 영역에 특화된 시스템 프롬프트.

planner = Agent(role="계획", model="opus-4.7")
coder = Agent(role="구현", model="sonnet-4.6")
tester = Agent(role="테스트", model="haiku-3.5")
reviewer = Agent(role="리뷰", model="opus-4.7")

plan = planner.run(task)
code = coder.run(plan)
tests = tester.run(code)
feedback = reviewer.run(code, tests)
if feedback.needs_fix:
    code = coder.run(plan, feedback)
# ...

패턴 선택 매트릭스

워크로드1순위2순위
코드 작성·디버깅ReAct + MCP-ToolMulti-Agent
복잡한 분석Plan-and-ExecuteReflexion
고품질 글쓰기ReflexionMulti-Agent
수학·논리Tree-of-ThoughtsPlan-and-Execute
RAG 답변ReActReflexion (검증 강화)

비용·정확도 트레이드오프

패턴호출 수정확도 향상지연
단순 호출1xbaseline1x
ReAct (3 step)3~5x+10%p3~5x
Reflexion3x+15~25%p3x
Plan-Execute5~10x+20~35%p5~10x
Tree-of-Thoughts10~20x+5~15%p10~20x
Multi-Agent5~15x+25~40%p5~15x (병렬화 가능)

실전 권장

  • 대부분 워크로드는 ReAct + MCP-Tool로 충분
  • 품질이 비용보다 중요한 곳만 Reflexion·Multi-Agent
  • Tree-of-Thoughts는 거의 안 씀 (비용 대비 효과 낮음)
  • 패턴 결합 가능: Multi-Agent 안에서 각 에이전트가 ReAct

자주 묻는 질문

LangGraph·CrewAI 등 프레임워크가 필수?

아니다. 위 패턴은 표준 SDK로 직접 구현 가능. 프레임워크는 가독성·재사용 좋지만 lock-in 리스크.

패턴 vs 단일 호출 어느 시점에서 갈리나?

작업 단계 ≥ 3 또는 도구 호출 ≥ 2회 필요하면 패턴 사용. 단순 Q&A는 단일 호출이 답.

Reflexion이 항상 좋은 결과를 내나?

아니다. 단순 작업은 첫 답변이 이미 정답. 비평이 오히려 over-thinking 만들 수 있음. 복잡 작업에서만 효과 큼.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록