AI 시리즈 면접 문제 6: AI Agent의 세 가지 핵심 방법론: ReAct, Plan-and-Solve 및 Reflection
AI Agent의 세 가지 핵심 방법론: ReAct, Plan-and-Solve 및 Reflection
AI Agent는 환경을 자율적으로 인식하고 결정을 내리며 행동을 실행하는 지능형 에이전트입니다. 핵심 방법론은 크게 세 가지: ReAct, Plan-and-Solve, Reflection입니다. 각각을 소개하고, 순서도와 코드 예제를 함께 제공합니다.
1. ReAct (Reasoning + Acting)
핵심 아이디어: 추론(Reasoning)과 행동(Acting)을 번갈아 수행합니다. Agent는 각 단계에서 현재 상태와 다음 계획을 먼저 생각(추론)한 후, 하나의 동작(예: 도구 호출, 정보 검색)을 실행하고 결과에 따라 다시 추론합니다.
순서도:
[초기 상태] → [추론: 다음 단계 생각] → [행동: 동작 실행] → [결과 관찰] → [추론: 계획 업데이트] → ... → [최종 답변]
예제 코드 (의사 코드):
def react_agent(question):
context = []
while not solved:
# 추론: 생각 단계 생성
thought = llm.generate_thought(question, context)
# 행동: 생각에 따라 동작 선택
action = llm.choose_action(thought)
# 동작 실행, 관찰 결과 얻기
observation = execute_action(action)
# 생각, 행동, 관찰을 컨텍스트에 추가
context.append((thought, action, observation))
return final_answer
예시:
- 사용자 질문: "오늘 베이징 날씨는?"
- Agent 추론: "날씨 API를 호출해야 하며, 도시명과 날짜가 필요하다."
- 행동: 날씨 API 호출 (매개변수: 베이징, 오늘)
- 관찰: 반환 "맑음, 25°C"
- 추론: "정보를 얻었으므로 답변할 수 있다."
- 출력: "베이징 오늘 맑음, 25°C입니다."
2. Plan-and-Solve
핵심 아이디어: 먼저 완전한 계획(Plan)을 수립한 후, 단계별로 실행(Solve)합니다. 계획 단계에서는 복잡한 작업을 하위 단계로 분해하고, 실행 단계에서는 순서대로 완료하며 중간 결과에 따라 계획을 조정할 수 있습니다.
순서도:
[작업] → [계획 수립: 하위 단계 분해] → [단계1 실행] → [단계2 실행] → ... → [단계N 실행] → [최종 답변]
예제 코드:
def plan_and_solve(task):
# 계획 단계
plan = llm.generate_plan(task) # 예: ["자료 검색", "정보 정리", "보고서 작성"]
context = {}
for step in plan:
# 각 단계 실행
result = execute_step(step, context)
context[step] = result
# 결과 종합
final = llm.synthesize(context)
return final
예시:
- 작업: "AI Agent에 관한 블로그 작성"
- 계획:
1. AI Agent 정의 및 최신 동향 검색
2. 핵심 포인트 읽고 정리
3. 블로그 개요 작성
4. 내용 채우기
5. 교정 및 게시
- 실행: 각 단계를 순서대로 완료하여 최종 블로그 출력.
3. Reflection
핵심 아이디어: Agent가 실행 중 또는 실행 후에 자신의 행동을 반성(Reflection)하고, 결과를 평가하여 이후 행동을 개선합니다. 일반적으로 자기 비판, 오류 수정 또는 전략 최적화를 포함합니다.
순서도:
[행동] → [결과 관찰] → [반성: 성공 여부 평가] → [실패 시: 전략 조정] → [다시 행동] → ... → [성공]
예제 코드:
def reflection_agent(task):
max_attempts = 3
for attempt in range(max_attempts):
action = llm.generate_action(task)
result = execute(action)
# 반성
reflection = llm.reflect(task, action, result)
if reflection['success']:
return result
else:
# 반성에 따라 작업 설명 또는 전략 조정
task = reflection['improved_task']
return None
예시:
- 작업: "1234 * 5678 계산"
- 행동: 직접 계산, 결과 7006652
- 반성: 계산 과정 검토, 자리 올림 오류 발견
- 조정: 재계산, 올바른 결과 7006652 (실제로 맞음)
- 여전히 오류면, 올바를 때까지 반성 반복.
요약 비교
| 방법론 | 특징 | 적용 시나리오 |
|---|---|---|
| ReAct | 추론과 행동이 번갈아, 동적 조정 | 실시간 정보 상호작용이 필요한 작업 (예: 질의응답, 검색) |
| Plan-and-Solve | 먼저 계획 후 실행, 구조적 분해 | 복잡한 다단계 작업 (예: 글쓰기, 데이터 분석) |
| Reflection | 자기 반성과 수정, 반복 최적화 | 높은 정확성이 필요한 작업 (예: 수학 계산, 코드 생성) |
실제 응용에서는 종종 세 가지를 결합합니다. 예를 들어 ReAct에 반성 메커니즘을 추가하거나, Plan-and-Solve의 각 단계 실행 후 반성합니다.
评论
暂无已展示的评论。
发表评论(匿名)