주제: 6-3 Agent 구조 (ReAct / Toolformer / Self-RAG)

분류: rag_agent

타입: concept

난이도: 중상

선수지식: 있음 — RAG, Prompting, LLM Inference

Agent는 "답을 바로 말하는 모델"이 아니라, "필요하면 생각하고, 도구를 쓰고, 결과를 다시 보고 다음 행동을 고르는 모델"로 이해하면 된다.

일반 LLM은 프롬프트 하나를 보고 곧바로 응답을 만든다. 반면 agent는 문제를 여러 단계로 쪼개고, 검색이나 계산기 같은 외부 도구를 호출하며, 그 결과를 다시 다음 입력으로 사용한다. 그래서 더 복잡한 작업 흐름을 다룰 수 있다.

즉 agent 구조는 LLM을 단순 생성기에서 문제 해결 루프로 확장하는 시도라고 볼 수 있다. 이 차이를 잡아두면 ReAct, Toolformer, Self-RAG가 왜 등장했는지 이해하기 쉬워진다.

문제 설정

일반적인 LLM은 다음 방식으로 동작합니다.

P(answer|prompt)

즉 입력 프롬프트만 기반으로 답을 생성합니다.

하지만 실제 문제 해결에서는 다음 기능이 필요합니다.

이 문제를 해결하기 위해 등장한 구조가 LLM Agent입니다.

핵심은 "모델이 답을 아느냐"보다 "필요한 정보를 찾고, 도구를 호출하고, 중간 결과를 이용해 다음 행동을 선택할 수 있느냐"에 있다. 그래서 agent는 reasoning과 acting을 함께 다룬다.

Agent는 "답을 바로 말하는 모델"이 아니라, "필요하면 생각하고, 도구를 쓰고, 결과를 다시 보고 다음 행동을 고르는 모델"로 이해하면 된다.

일반 LLM은 프롬프트 하나를 보고 곧바로 응답을 만든다. 반면 agent는 문제를 여러 단계로 쪼개고, 검색이나 계산기 같은 외부 도구를 호출하며, 그 결과를 다시 다음 입력으로 사용한다. 그래서 더 복잡한 작업 흐름을 다룰 수 있다.

직관 비유

Thought → Action → Observation

이 차이가 중요한 이유는, 복잡한 업무에서는 "답을 아는가"보다 "필요한 정보를 찾고 조합할 수 있는가"가 더 중요하기 때문이다. agent 구조는 LLM을 단순 생성기에서 문제 해결 루프로 확장한다.

1. Agent 의사결정 구조

Agent는 다음 루프 구조를 가집니다.

User Query
 ↓
Reasoning
 ↓
Tool Call
 ↓
Observation
 ↓
Next Reasoning

즉 모델이 스스로 다음 행동을 결정합니다.

2. ReAct (Reason + Act)

ReAct는 reasoning과 tool use를 결합한 프롬프트 방식입니다.

구조

Thought: 문제 분석
Action: tool 호출
Observation: 결과 확인

예:

Question: What is the capital of France?

Thought: I should search for the capital.
Action: Search("capital of France")
Observation: Paris

Answer: Paris

수식 관점

at P(action|statet)

기호 의미

왜 필요한가

LLM이 외부 도구를 사용할 수 있도록 합니다.

주의점

프롬프트 설계가 중요합니다.

3. Toolformer

Toolformer는 LLM이 스스로 tool 사용을 학습하도록 만든 모델입니다.

핵심 아이디어

예:

Input:
The result of 234 * 45 is [Calculator(234*45)].

모델은 tool 호출 위치를 학습합니다.

수식

P(text,toolcall)

기호 의미

왜 중요한가

프롬프트 없이도 tool 사용이 가능합니다.

4. Self-RAG

Self-RAG는 retrieval을 모델이 스스로 판단하는 구조입니다.

기존 RAG:

Query
 ↓
Retrieval
 ↓
Generation

Self-RAG:

Query
 ↓
LLM decides retrieval
 ↓
Retrieve or generate

수식

at P(retrieve|context)

기호 의미

왜 필요한가

항상 retrieval을 수행할 필요는 없습니다.

주의점

retrieval 판단이 중요합니다.

5. Agent 실행 루프

while not finished:
  thought = LLM(reason)
  action = select_tool(thought)
  observation = tool(action)
  update_context()

Agent는 iterative reasoning 구조를 가집니다.

6. ReAct vs Toolformer vs Self-RAG

방법 특징
ReAct prompt 기반 reasoning + action
Toolformer tool usage 학습
Self-RAG retrieval decision 학습

7. Agent 시스템 구성

User Query
 ↓
Planner (LLM)
 ↓
Tool Execution
 ↓
Observation
 ↓
Final Answer

즉 LLM이 planner 역할을 합니다.

코드-수식 연결

개념 코드 설명
agent loop while not done: 반복 reasoning
tool call tool.run() 외부 도구 실행
LLM reasoning llm.generate() 다음 행동 결정

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)