동적 에이전트의 심장, 'ReAct' 루프:

  • 동적 Agent 는 ReAct(Resaon + Act) 로 이뤄져있음.
  • Reason(상황 및 인식 추론) : 현재까지의 작업 기록들 궤적(Trajectory) 를 모두 살펴보면서 다음에 무엇을 해야할지 계획하는 단계를 말함.
    • 궤적(Trajectory) 에는 이전 행동의 결과와 성공과 실패 모두 담겨있음.
  • Act(행동 및 결정 선택): 추론이 끝나고 나면 다음에 할 행동을 결정함.
  • Observe(관찰): 행동을 하고 나면 이 행동에 대한 결과를 받음.
  • 궤적 갱신 및 반복.

 

궤적이 길어지는 경우 해결법:

  • 전체 궤적은 프롬프트에 담길텐데 이러면 장기적인 문제 실행에서 이전 궤젝어 데한 내용 손실등이 있을 수 있다. (언어 모델의 컨택스트 윈도우 한계)
  • 해결법:
    1. 요약 기반 메모리
      • 에이전트는 최근의 k개 턴(turn)은 상세한 궤적 그대로 유지합니다.
      • k개 턴보다 오래된 궤적들은 별도의 LLM 호출을 통해 "지금까지의 주요 발견과 실패 요인은 무엇인가?"와 같은 프롬프트로 요약합니다.
    • 단점: 상세한 중요 세부 내용은 손실될 가능성이 있음.
    1. 검색 기반 메모리
      1. 관련성이 있는 궤적을 검색해서 보완하는 방법
      2. 검색의 성능이 매우 중요.
    2. 계층/구조적 메모리
      1. 인간의 기억을 모방한 메모리로, 단기 기억, 장기 기억, 성찰 기억 등을 저장.
      2. 시스템의 복잡도가 매우 높아지고 구현 및 설계가 어려움.

 

ReAct 의 또 다른 단점: 근시안

  • 각 단계에서 최적의 행동을 찾다보다보면 함정에 빠져서 헤어나오질 못하는 문제점을 가질 수 있음.
  • 해결법:
    • Plan-and-solve 모듈 추가:
      • 명시적인 계획을 하고, 이 계획에 대한 실행을 ReAct 프레임워크가 수행하는 것.
    • ToT 접근법:
      • 문제를 해결할 수 있는 여러가지 생각을 트리 방식으로 모두 수행해보고 실행을 ReAct 프레임워크가 수행한다.
    • Model based Planning:
      • 현재 시점에서 가능한 몇가지 시뮬레이션을 생각해보고 가장 유망한 계획을 실행하는 것. 실행에서 ReAct 를 수행한다.

+ Recent posts