AI Agent 아키텍처
AI Agent 시스템의 핵심 아키텍처와 설계 패턴
AI Agent 아키텍처 완벽 가이드
효과적인 AI Agent를 구축하기 위한 핵심 아키텍처 패턴과 설계 원칙을 알아봅니다.
Agent 아키텍처의 핵심 구성요소
1. 두뇌 (Brain/Core)
LLM이 Agent의 중앙 추론 엔진 역할을 합니다.
- 계획 수립: 목표를 달성하기 위한 단계 결정
- 의사결정: 어떤 도구를 언제 사용할지 판단
- 자기 반성: 결과를 평가하고 전략 조정
2. 메모리 시스템 (Memory)
단기 메모리 (Working Memory)
class WorkingMemory:
def __init__(self, max_tokens=4000):
self.messages = []
self.max_tokens = max_tokens
def add(self, message):
self.messages.append(message)
self._trim_if_needed()
def _trim_if_needed(self):
# 토큰 제한 초과 시 오래된 메시지 제거
while self._count_tokens() > self.max_tokens:
self.messages.pop(0)
장기 메모리 (Long-term Memory)
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
class LongTermMemory:
def __init__(self):
self.vectorstore = Chroma(
embedding_function=OpenAIEmbeddings()
)
def store(self, experience):
self.vectorstore.add_texts([experience])
def recall(self, query, k=5):
return self.vectorstore.similarity_search(query, k=k)
3. 도구 시스템 (Tools)
from langchain.tools import tool
@tool
def search_web(query: str) -> str:
"""웹에서 정보를 검색합니다."""
# 실제 검색 로직
return search_results
@tool
def execute_code(code: str) -> str:
"""Python 코드를 실행합니다."""
# 샌드박스 환경에서 실행
return execution_result
@tool
def send_email(to: str, subject: str, body: str) -> str:
"""이메일을 전송합니다."""
# 이메일 전송 로직
return "이메일 전송 완료"
주요 Agent 패턴
1. ReAct (Reasoning + Acting)
Thought: 사용자가 서울 날씨를 물어봤다. 날씨 API를 호출해야 한다.
Action: get_weather(location="서울")
Observation: 현재 서울은 맑음, 22°C
Thought: 날씨 정보를 얻었다. 사용자에게 전달하면 된다.
Answer: 서울은 현재 맑고 기온은 22°C입니다.
2. Plan-and-Execute
class PlanAndExecuteAgent:
def run(self, task):
# 1. 계획 수립
plan = self.planner.create_plan(task)
# 2. 단계별 실행
results = []
for step in plan:
result = self.executor.execute(step)
results.append(result)
# 3. 필요시 계획 수정
if self._needs_replan(result):
plan = self.planner.replan(plan, results)
return self.synthesizer.combine(results)
3. Reflexion
class ReflexionAgent:
def run(self, task, max_attempts=3):
for attempt in range(max_attempts):
# 실행
result = self.execute(task)
# 평가
evaluation = self.evaluate(result)
if evaluation.success:
return result
# 반성 및 개선
reflection = self.reflect(result, evaluation)
self.memory.store(reflection)
return best_result
멀티 에이전트 시스템
협력 패턴
class MultiAgentSystem:
def __init__(self):
self.researcher = ResearchAgent()
self.analyst = AnalysisAgent()
self.writer = WritingAgent()
def create_report(self, topic):
# 1. 연구 에이전트가 정보 수집
research = self.researcher.gather_info(topic)
# 2. 분석 에이전트가 데이터 분석
analysis = self.analyst.analyze(research)
# 3. 작성 에이전트가 보고서 생성
report = self.writer.write(analysis)
return report
토론 패턴
class DebateSystem:
def __init__(self):
self.pro_agent = Agent(stance="찬성")
self.con_agent = Agent(stance="반대")
self.judge = JudgeAgent()
def debate(self, topic, rounds=3):
arguments = []
for _ in range(rounds):
pro_arg = self.pro_agent.argue(topic, arguments)
con_arg = self.con_agent.argue(topic, arguments)
arguments.extend([pro_arg, con_arg])
return self.judge.evaluate(arguments)
안전한 Agent 설계
- 권한 제한: 필요한 최소 권한만 부여
- 확인 단계: 중요 작업 전 사용자 승인
- 샌드박스: 코드 실행 시 격리 환경
- 로깅: 모든 행동 기록
- 비용 제한: API 호출 횟수 제한