ReAct 기반 AI 에이전트 실행 엔진 설계
· 1 min read
ReAct (Reasoning + Acting) 패턴은 이제 꽤 알려진 에이전트 아키텍처다. 하지만 실제 프로덕션에 올리는 순간, 이론과 현실 사이의 간극이 생각보다 깊다.
왜 ReAct를 선택했나
에이전트에게 “이 기사가 사실인지 확인해줘”라고 요청하면, 단순 LLM 호출로는 검색, 판단, 재검색, 결론의 흐름을 만들기 어렵다.
ReAct는 이 루프를 명시적으로 구조화한다:
Thought → Action → Observation → Thought → ...
세션과 행동 루프 분리
핵심 설계 결정은 세션(Session) 과 행동 루프(Action Loop) 를 완전히 분리한 것이다.
- 세션: 사용자 의도, 컨텍스트, 크레딧 관리
- 행동 루프: Tool 선택 → 실행 → Observation 피드백
이렇게 하면 같은 루프 엔진으로 서로 다른 세션 타입(Prediction/Claim)을 처리할 수 있다.
LLM 어댑터 레이어
Claude ↔ Azure OpenAI 전환을 위해 어댑터 레이어를 설계했다. 비용/성능 상황에 따라 런타임에 LLM을 교체할 수 있다.
class LLMAdapter:
def complete(self, messages: list[Message]) -> str: ...
다음 과제
- 슬라이딩 윈도우 컨텍스트 관리로 품질 vs 비용 최적화
- 에이전트 메모리 시스템 (크로스 세션 장기 기억)