이종관
글 목록으로

LATS: 통합 에이전트 프레임워크

ToT, ReAct, Reflexion, MCTS를 통합한 에이전트 프레임워크

2026년 2월 1일·6 min read·
agent
lats
tree-search
planning

Language Agent Tree Search

개념

LATS(Language Agent Tree Search)는 지금까지 등장한 거의 모든 에이전트 기법을 통합한 프레임워크이다:

  • Tree of Thought (ToT): 다중 경로 탐색
  • ReAct: 외부 도구 상호작용
  • Reflexion: 실패로부터 학습
  • Monte Carlo Tree Search (MCTS): 탐색 최적화

6가지 핵심 작업

  1. Selection (선택) — 탐색할 노드를 선택한다.
  2. Expansion (확장) — 새로운 가능성을 생성한다.
  3. Evaluation (평가) — 유망함을 평가한다.
  4. Simulation (시뮬레이션) — 행동을 실행하고 관찰한다.
  5. Backpropagation (역전파) — 결과를 역전파한다.
  6. Reflection (성찰) — 실패 시 반성한다.

각 단계 상세

단계설명기반 기법
Selection탐색할 노드 선택MCTS (UCB1)
Expansion새로운 가능성 생성ToT
Evaluation유망함 평가ToT
Simulation행동 실행 및 관찰ReAct
Backpropagation결과 역전파MCTS
Reflection실패 시 반성Reflexion

통합된 기법들

기법LATS에서의 역할
Tree Search다중 경로 탐색 구조
ReAct외부 도구 상호작용
Reflexion실패로부터 학습
MCTS탐색 효율 최적화

성능

LATS는 모든 기법을 통합한 만큼, 압도적인 성능을 보여준다:

벤치마크이전 최고LATS
HotpotQA78%83.8%
HumanEval91% (Reflexion)94.4%
WebShop67%75.9%

동작 예시: 코딩 문제

문제: "파이썬으로 병합 정렬 구현하기"

Selection: UCB1 점수가 높은 노드를 선택한다. 재귀적 구현 접근을 선택한다.

Expansion: 세 가지 구현 방식을 생성한다 — 방식 1: 기본 재귀, 방식 2: 최적화된 재귀(in-place), 방식 3: 반복적 구현.

Evaluation: 각 방식의 유망함을 평가한다 — 방식 1: 0.7(간단하지만 메모리 비효율), 방식 2: 0.9(균형 잡힌 접근), 방식 3: 0.6(복잡함).

Simulation (ReAct): 방식 2를 구현한다.

  • Thought: 배열을 반으로 나누고 재귀 호출
  • Action: def merge_sort(arr): ... 코드 작성
  • Observation: 코드 작성 완료
  • Thought: 테스트 실행
  • Action: merge_sort([3,1,4,1,5,9]) 실행
  • Observation: [1,1,3,4,5,9] 성공

Backpropagation: 테스트 통과로 점수를 역전파하고, 방식 2 경로의 UCB1 점수가 상승한다.

완료: 최종 코드를 반환한다.

실패 시 Reflection

Simulation 실패: merge_sort([]) 실행 시 IndexError: list index out of range 발생

Reflection: "빈 배열에 대한 경계 조건 처리가 없었다. 재귀의 기저 조건에 빈 배열 체크를 추가해야 한다."

재시도: if len(arr) <= 1: return arr 경계 조건을 추가하여 문제를 해결한다.

UCB1 알고리즘

LATS는 MCTS의 UCB1(Upper Confidence Bound)을 사용하여 탐색과 활용의 균형을 맞춥니다:

UCB1=xˉ+C×ln(N)n\text{UCB1} = \bar{x} + C \times \sqrt{\frac{\ln(N)}{n}}

  • xˉ\bar{x} (평균 보상): 이 경로가 얼마나 좋았는가 (활용)
  • ln(N)n\sqrt{\frac{\ln(N)}{n}} (탐색 항): 덜 방문한 경로에 보너스 (탐색)
  • CC: 탐색-활용 균형 상수

기존 기법과의 비교

  • CoT: 단일 경로 탐색, 도구 사용 X, 학습 X, 최적화 X
  • ToT: 다중 경로 탐색, 도구 사용 X, 학습 X, 최적화 X
  • ReAct: 단일 경로 탐색, 도구 사용 O, 학습 X, 최적화 X
  • Reflexion: 단일 경로 탐색, 도구 사용 O, 학습 O, 최적화 X
  • LATS: 다중 경로 탐색, 도구 사용 O, 학습 O, 최적화 O

구현 구조

python
class LATS:
    def __init__(self, llm, tools):
        self.llm = llm
        self.tools = tools
        self.memory = []  # Reflexion 메모리
 
    def solve(self, problem):
        root = Node(state=problem)
 
        while not self.is_solved(root):
            # 1. Selection
            node = self.select(root)
 
            # 2. Expansion
            children = self.expand(node)
 
            # 3. Evaluation
            for child in children:
                child.value = self.evaluate(child)
 
            # 4. Simulation (ReAct)
            best_child = max(children, key=lambda x: x.value)
            result = self.simulate(best_child)
 
            # 5. Backpropagation
            self.backpropagate(best_child, result)
 
            # 6. Reflection (실패 시)
            if not result.success:
                reflection = self.reflect(best_child, result)
                self.memory.append(reflection)
 
        return self.get_solution(root)

비용-성능 트레이드오프

기법상대 비용상대 성능
CoT낮음보통
ToT중간높음
Reflexion중간~높음높음
LATS높음매우 높음

LATS는 가장 높은 성능을 제공하지만, 비용도 가장 높다.

언제 LATS를 사용해야 하는가?

상황권장
단순한 작업CoT로 충분
도구 필요ReAct
탐색 필요ToT
복잡한 코딩Reflexion
최고 성능 필요LATS

관련 개념

  • Tree of Thought (ToT): 다중 경로 탐색
  • ReAct: 도구 사용
  • Reflexion: 실패로부터 학습
  • Monte Carlo Tree Search: 게임 AI 탐색 알고리즘