5장 Agent를 활용한 RAG

1. AI Agent(LLM Agent) - 목표지향형 AI
AI Agent의 개념은 어떤 한 회사나 개인이 갑자기 만들어 낸 개념이 아닌 예전부터 존재하던 개념이었습니다. 이를 AI관련 실무자들이 LLM을 사용하면서 LLM을 기반으로 자율적으로 행동하는 AI를 구축하려는 일련의 시도에서부터 발전하여 오늘날의 AI Agent개념들이 정립되었습니다.
AI Agent란 LLM이단순히 질문에 답변하는 단순 챗봇을 넘어 자율적으로 동작하는 프로그램이며, 목표가 주어지면 그 목표 달성을 위해 데이터를 분석하고 , 의사결정을 내리고 , 수행내용을 학습하여 스스로 발전하는 프로그램을 의미합니다.
즉, 자율성을 기반으로 스스로 판단을 내리고 행동하는 AI 프로그램이라고 생각하시면 되겠습니다.
실제 사용되는 Agent의 종류는 단일 기능을 수행하는 Single Agent부터 복잡한 작업을 감독하는 Multi Agent에 이르기까지 다양합니다.
예를 들어 고객 문의를 해결해야 하는 상담 센터 AI 상담원을 생각해 보세요. 상담원은 자동으로 고객에게 여러 질문을 하고, 내부 문서의 정보를 조회하고, 해결책을 찾아 대응합니다. 고객의 대답에 따라 고객 문의 자체를 해결할 수 있는지 아니면 사람에게 전달해야 하는지 자율적으로 결정합니다.
2. 일반 AI와 Agent의 차이점

1. 자율성(Autonomy)
에이전트
완전히 자율적(Fully autonomous)으로 행동하며 , 인간으로부터 목표를 위임 받습니다.
"이번달 영수증을 정리해서 회계팀에 제출해줘" 하고 요청하면, 에이전트는 메일을 뒤지고, 파일을 다운로드 하고, 제출양식을 채워 직접 전송까지 마칩니다.
AI 어시스턴스
인간의 결정을 돕는(Supports human decisions) 파트너입니다.
예를들어 "이메일 초안좀 써줘"라고 하면, 이메일 초안을 주고 끝나며 최종 실행은 사용자에게 맡깁니다.
2. 의사결정방식(Decision-making)
에이전트
목표 달성과정에서 발생하는 하위 결정들을 스스로 결정(Operates independently)합니다.
회계팀에 제출하는 과정에서 이메일을 뒤져야 한다면 스스로 이메일을 뒤지는 결정을 합니다.
AI 어시스턴스
사용자가 최선의 선택을 하도록 데이터 및인사이트를 제공해 주는 역할을 합니다.
3. 복잡성과 적응력
에이전트
하나의 목표를 달성하기 위해 구조화된 여러 단계의 작업을 수행하거나 직접 설계합니다.
특히 환경변화에 따라 동적으로 계획을 수정하기도 합니다.
AI 어시스턴스
사용자의 입력에 즉각 응답합니다.
입력이 없다면 스스로 행동하지 않습니다.
3. Agent의 핵심 구성요소
Agent의 구성요소는 설계하고자 하는 Agent 아키텍쳐에 따라 더 추가 될 수 있다.
현재 설명하고자 하는 구성요소는 싱글에이전트 기준의 구성요소이다.

1. 목표/과제(Task)
에이전트가 달성해야하는 과제로 에이전트는 이 과제를 해결하기 위해 자율적으로 동작한다.
ex) 문서에서 환불조건을 찾아서 요약하세요.
2. 두뇌/LLM (Reasoning Engine)
계획수립 , 판단, 요약 ,추론등을 담당하는 세우는 핵심 컴포넌트
에이전트에게 주어진 환경을 이해하고, 목표에 대해 추론하고 이를바탕으로 실행계획을 세우는 핵심모델.
GPT-4o, Claude 3.5등
3. 기억 (Memory)
이전 대화 내용이나 현재 작업 진행 상황을 기억하기 위한 도구
LongTerm 메모리와 ShortTerm 메모리를 나누어서 맥락(context)를 보관한다.
LongTerm Memory : 과거 대화, 사용자 선호, 지식
ShortTerm Memory : 현재 작업맥락
4. 도구 (Tools / Actions)
에이전트가 외부 환경과 상호작용하는 수단으로, Web검색, API호출, 파일 읽기/쓰기 등을 수행하기 위해선 Tool정의가 필요하다.
Agent는 목표를 달성하기 위해 도구(Tool)를 직접 선택하고 사용(Actions)한다.
5. 환경(Environment)
도구(Tools)가 실제로 작동하는 대상으로 웹, 서버, 외부 시스템등을 의미한다.
6. 플래너 (Planning)
복잡한 목표를 작은 단위의 작업으로 쪼개고 순서를 결정하는 능력.
만약, "스포티파이 플레이리스트를 친구들에게 공유해줘"라고 Task를 설정시 작업을 다음과 같이 쪼갠다
스포티파이 플레이리스트 조회 -> SNS를 활용하여 플레이리스트 전송 -> 모든 친구들에게 보내도록 루프 작동
7. 결과 관찰(Observation) 및 루프
도구 실행의 결과를 의미하며, 에이전트는 이 결과를 바탕으로 다음 판단을 진행한다.
도구 호출결과를 판단하여 , 목표달성에 부적합한 경우 지속적으로 도구를 호출한다
계획 → 행동 → 관찰 → 재계획 반복
4. Agent의 작동방식(ReAct 패턴)
Agent의 동작방식은 Agent의 유형이나 설계한 아키텍쳐에 따라 달라질 수 있지만 일반적으로는 ReAct방식으로 설계되며 이때 에이전트는 다음과 같은 동작흐름을 가집니다.

ReAct는 Reasoning과 Acting의 합성어로 , AI가 사용자의 질문에 응답하기 위한 논리적 사고(Reasoing)과 행동(Actiong)을 교차적으로 사용하도록 유도하는 기법
AI가 답변을 생성하기 전에 먼저 논리적인 사고를 거치고, 필요하다면 외부 도구(API)를 활용하여 응답을 생성하는 방식
GPT는 스스로 API도구를 사용하지 못하므로, 요청내용에 함수를 추가하는 Function Calling방식을 통해 API를 호출하거나, Lang Chain과 같은 프레임워크를 통해 ai와 api를 결합하여 사용 해야한다.
ReAct 동작방식
Reasoning(논리적 사고 수행)
전달받은 프롬프트를 분석하여 해결방법을 도출
Acting(행동 수행)
AI가 필요하다면 외부도구를 호출
Observation(결과 분석)
ai가 실행 결과를 검토
반복
관측 결과를 바탕으로 다시 Reasoning을 수행하여 최적의 답변을 생성
결과값 반환
최종 답변 반환
ReAct 동작 예시
사용자 요청(Goal) : "오늘 서울 날씨에 맞는 음악 스포티파이에서 틀어줘."
Reasoning (사고): "먼저 서울의 날씨를 알아야겠군."
Action (실행): 날씨 API 호출 (도구 사용).
Observation (관찰): "비가 오네?"
Thought (사고): "비 오는 날에 어울리는 재즈 리스트를 찾아야지."
Action (실행): 스포티파이 재생 API 호출.
Final Answer: "비가 와서 차분한 재즈 플레이리스트를 실행했습니다."
ReAct의 한계
ReAct는 각 단계에서 생각 및 행동 관찰의 루프를 수행하기 때문에 , 만약 도구를 5번 써야하는 경우 실제로 LLM을 최소 5번 이상 호출하게 되므로 속도가 느리고 비용이 많이 든다.
ReAct가 도구 호출 결과를 잘못 해석하거나 원하는 결과를 얻지 못하는 경우 무한루프에 빠지기 쉽습니다.
ReAct는 루프가 반복될 수록 생각-액션-관찰을 반복하는데, 이 데이터들을 Context에 저장하다보면 금방 Context포화 상태가 발생할 수 있습니다.
추가 아키텍쳐들
5. Agent의 특징 요약

자율성 : 에이전트는 사전에 정의된 규칙이나 명시적 프로그래밍이 없어도 스스로 결정을 내리고 행동할 수 있다.
목표 지향성 : 에이전트에게 주어진 특정 목표를 달성하기 위해 설계되어 있다.
환경 인식 : 주변 환경이나 상황을 인식하고 이에 따라 적응할 수 있다.
도구 사용 : 다양한 도구나 API를 활용하여 작업을 수행한다.
연속성 : 목표를 달성하기 위해 1회 수행이 아닌 반복 수행을 통해 목표를 달성한다.
Last updated