← 返回列表

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의 각 단계 실행 후 반성합니다.

评论

暂无已展示的评论。

发表评论(匿名)