ReAct: 추론과 행동을 결합한 에이전트의 기본 루프

에이전트 AI를 구현하려는 개발자는 모델이 추론만 하거나 행동만 하는 것이 아니라, 두 과정을 동시에 수행해야 한다는 ReAct(Reasoning and Acting)의 전제에서 시작해야 한다. 현대 AI 에이전트는 추론, 행동, 도구, 메모리, 피드백, 계획, 협업이라는 7가지 핵심 요소의 조합으로 구축되며, 그 중심에는 생각과 행동을 교차 수행하는 기본 루프가 있다. 이 루프를 이해하면 복잡한 에이전트 시스템이 어떤 논리로 외부 세계와 상호작용하는지 파악할 수 있다.

ReAct 프레임워크는 모델이 추론 단계(Reasoning)와 행동 단계(Action)를 번갈아 수행하도록 유도한다. 추론 단계에서 모델은 현재 상황을 분석해 다음 단계를 위한 계획을 수립하고, 작업 진행 상황을 추적하며, 실행 과정의 실수를 스스로 찾아내 복구한다. 행동 단계에서는 검색 API(응용 프로그램 인터페이스)나 지식 베이스 같은 외부 환경과 직접 상호작용하며 필요한 데이터를 가져온다. 모델은 내부의 파라미터 지식에만 의존하지 않고, 외부의 실제 데이터를 확인하며 정답에 접근한다.

이 과정은 Think $\rightarrow$ Act $\rightarrow$ Observe $\rightarrow$ Update 순서의 루프로 작동한다. 모델이 먼저 수행할 작업을 생각하고(Think), 외부 도구를 호출해 행동하며(Act), 그 결과값을 관찰하고(Observe), 관찰된 내용을 바탕으로 상태를 업데이트(Update)한 뒤 다시 생각하는 단계로 돌아간다. 예를 들어 검색 API를 통해 얻은 정보가 부족하다면, 관찰 단계에서 이를 인지하고 업데이트 단계에서 검색어를 수정해 다시 행동 단계로 진입한다. 정답을 한 번에 출력하는 기존 방식과 달리, 환경의 피드백을 받아 경로를 수정하는 반복 구조를 갖춘다.

Joon Sung Park, Joseph C. O'Brien, Carrie J. Cai, Meredith Ringel Morris, Percy Liang, Michael S. Bernstein 연구진이 제시한 이 구조는 대규모 언어 모델(LLM) 에이전트의 기초가 된다. 실무자는 이 루프를 통해 모델이 단순히 텍스트를 생성하는 수준을 넘어, 외부 도구를 적절한 시점에 호출하고 그 결과를 논리적으로 해석하는 능력을 부여할 수 있다. 구현 시에는 모델이 생각과 행동이라는 구분자를 명확히 출력하도록 프롬프트를 설계하는 것이 핵심이다.

Toolformer와 Voyager: 외부 도구 활용과 자가 성장 메커니즘

Toolformer는 자기지도 학습(Self-supervised)을 통해 API 호출 시점과 도구 선택, 인자 전달 방법을 스스로 익힌다. 모델이 텍스트를 생성하는 과정에서 외부 도구가 필요하다고 판단되는 지점에 API 호출문을 삽입하고, 실제 도구를 실행해 얻은 결과가 이후 텍스트의 정확도를 높였는지 검증하며 학습 데이터를 필터링한다. 구체적으로 계산기, 검색 엔진, 번역 시스템, 캘린더, QA 시스템 같은 도구들을 상황에 맞게 선택해 호출하고 그 결과값을 다시 생성 문장에 통합한다. 이를 통해 LLM은 다음 단어를 예측하는 확률 모델을 넘어 외부 소프트웨어를 제어하는 장치로 동작한다.

Voyager는 마인크래프트라는 가상 환경에서 자동 커리큘럼(Automatic Curriculum)을 통해 세상을 탐색한다. 특정 과제를 해결하고 멈추는 것이 아니라, 현재 자신의 상태와 주변 환경을 분석해 다음으로 달성해야 할 목표를 스스로 생성하고 도전한다. 예를 들어 나무를 캐는 법을 배우면 이를 바탕으로 도구를 만들고, 더 나아가 복잡한 건축물을 짓는 식으로 목표의 난이도를 스스로 높여가며 활동 영역을 확장한다. 에이전트가 고정된 데이터셋이 아니라 역동적인 환경 속에서 실시간으로 상호작용하며 스스로 학습 데이터를 생성하고 성장하는 구조를 가진다.

Voyager의 작동 체계는 탐색용 커리큘럼, 기술 라이브러리(Skill Library), 반복적 프롬프팅 메커니즘이라는 세 가지 요소가 맞물려 돌아간다. 기술 라이브러리는 실행 가능한 동작 코드를 저장하는 저장소로, 한 번 성공한 행동은 코드로 기록되어 필요할 때마다 꺼내 쓰는 함수처럼 작동한다. 반복적 프롬프팅 메커니즘은 코드를 실행한 후 환경에서 돌아온 피드백과 실행 오류 메시지를 다시 프롬프트에 넣어 코드를 수정하고 최적화한다. 성공한 코드는 기술 라이브러리에 영구 저장되어 추후 더 복잡한 과제를 수행할 때 기초 부품으로 재사용된다.

Generative Agents: 메모리와 성찰을 통한 행동의 연속성 구현

Generative Agents는 심즈(The Sims)에서 영감을 받은 상호작용 환경 내에서 인간의 행동을 시뮬레이션한다. 에이전트는 매일 정해진 일과에 따라 잠에서 깨어나 계획을 세우고, 환경 내의 다른 에이전트와 대화하며 미래 행동을 조정하는 일련의 과정을 반복한다. 이 시스템을 지탱하는 핵심 아키텍처는 메모리(Memory), 성찰(Reflection), 계획(Planning)의 결합이다. 단순히 입력값에 반응하는 챗봇과 달리, 에이전트가 처한 환경과 과거의 이력을 바탕으로 스스로 다음 행동을 결정하는 구조를 갖췄다.

구체적인 작동 순서는 과거 경험의 기억에서 시작해 성찰을 거쳐 미래 행동 계획으로 이어진다. 에이전트는 환경에서 겪은 개별 사건들을 메모리에 저장하고, 저장된 기억들 사이의 연관성을 분석해 더 높은 수준의 추상적 생각으로 발전시키는 성찰 과정을 수행한다. 이렇게 형성된 믿음이나 판단은 계획 단계에서 행동의 우선순위를 정하거나 기존 계획을 수정하는 기준이 된다. 예를 들어 누군가와 대화를 나눈 기억이 성찰을 통해 친밀함으로 정의되면, 이후 계획 단계에서 그 인물을 찾아가 함께 시간을 보내는 행동이 도출된다.

이 구조는 단발성 질문에 답하는 효율성을 넘어 행동의 연속성(Continuity)을 구현한다. 에이전트가 무엇을 기억하고 어떻게 믿음을 업데이트하며 과거 사건이 미래 결정에 어떤 영향을 주는지를 설계함으로써, 시간이 흐름에 따라 일관된 성격과 관계를 유지하는 사회적 존재처럼 움직이게 만든다.

결국 이 설계의 핵심은 메모리와 성찰이 결합되어 에이전트의 내면 상태를 지속적으로 갱신한다는 점에 있다. 기억의 단순 저장과 호출만으로는 복잡한 사회적 맥락을 유지하기 어렵지만, 성찰이라는 필터를 통해 기억을 해석함으로써 행동의 일관성을 확보한다. 실무적으로는 에이전트에게 단순한 역할 부여를 넘어, 경험을 통해 성격이 변하거나 관계가 발전하는 동적인 페르소나를 구현하고자 할 때 적용할 수 있는 설계도다.

AutoGen: 단일 비서에서 전문 에이전트 팀으로의 전환

복잡한 과제를 해결하기 위해 여러 에이전트가 서로 대화를 주고받으며 정답을 찾아가는 방식이 도입되었다. AutoGen(오토젠)은 단일 비서가 모든 일을 처리하던 기존 구조를 벗어나 전문화된 에이전트들이 팀을 이루어 협업하는 멀티 에이전트 프레임워크를 제시한다. 각 에이전트는 서로 다른 역할을 맡아 대화를 통해 정보를 교환하고 서로의 논리적 허점을 보완한다. 한 에이전트가 계획을 세우면 다른 에이전트가 이를 검토하고 수정하는 대화 과정 자체가 과제 해결의 핵심 동력이 된다.

시스템 내부에서 에이전트에게 구체적인 페르소나와 역할을 부여하고 상황에 맞는 도구를 사용하게 설정한다. 특히 사람이 직접 개입하는 Human-in-the-loop(인간 참여형 제어) 방식을 통해 AI의 판단이 빗나갔을 때 실시간으로 수정하거나 방향을 잡아줄 수 있다. 이는 완전 자동화가 주는 불안함을 해소하고 최종 결과물의 신뢰도를 높이는 실무적 안전장치가 된다. 에이전트가 직접 코드를 작성하고 이를 실행 환경에서 돌려보는 기능도 포함되어 있어 단순한 텍스트 생성을 넘어 실제 작동하는 결과물을 검증한다.

이러한 협업 구조는 코딩과 수학 문제 풀이뿐만 아니라 복잡한 질의응답과 기업의 의사결정 과정에 적용된다. 특히 자원 배분이나 경로 최적화를 다루는 운영 연구(OR, Operations Research) 분야에서 분석 에이전트가 데이터를 추출하고 전략 에이전트가 대안을 제시하며 검증 에이전트가 리스크를 체크하는 식으로 역할을 나눈다. 이러한 분업화는 단일 모델이 가질 수 있는 확증 편향을 줄이고 다각도에서 문제를 바라보게 한다.

단일 어시스턴트 구조에서 전문 에이전트들의 협업 시스템으로 확장되면 설계의 초점이 개별 모델의 지능보다 에이전트 간의 소통 구조를 설계하는 오케스트레이션 능력으로 이동한다. ReAct가 개별 에이전트가 생각하고 행동하는 기본 루프를 정의했다면 AutoGen은 그 루프를 가진 개체들을 어떻게 팀으로 묶어 시너지를 낼 것인지에 대한 방법론을 제시한다. 이제 설계자는 단일 프롬프트를 정교하게 깎는 작업에서 벗어나 팀의 역할 분담과 소통 구조를 설계하는 시스템 아키텍트의 관점에서 접근해야 한다.

실무 적용: 문제 규모에 따른 에이전트 아키텍처 선택 기준

앞서 살펴본 설계도들은 과제의 복잡도와 목적에 따라 다르게 조합하여 적용해야 한다.

단순히 특정 API를 연동해 정답을 도출하는 과제라면 ReAct와 Toolformer 조합이 가장 효율적이다. 불필요한 아키텍처 설계 비용을 줄이면서 모델이 외부 도구 사용 시점을 스스로 판단하게 만들어, 텍스트 생성기 수준의 LLM을 외부 도움을 결정하는 시스템으로 빠르게 전환할 수 있다. 반면 사용자와의 장기적인 상호작용이 필요하거나 일관된 페르소나를 유지해야 하는 서비스라면 Generative Agents의 메모리 및 성찰 구조를 도입해야 한다. 이는 단발성 응답이 아닌 행동의 연속성을 보장하며 사용자와의 관계 맥락을 유지하는 데 필수적이다.

검증 단계가 많고 워크플로가 복잡한 엔터프라이즈급 과제는 AutoGen과 같은 멀티 에이전트 협업 체계가 적합하다. 기획자, 개발자, 검수자 역할을 가진 개별 에이전트를 배치해 대화로 문제를 해결하고, Human-in-the-loop 설계를 통해 최종 결과물의 신뢰도를 높이는 방식이다. 특히 역할 부여를 통해 각 에이전트의 전문성을 극대화하면 단일 에이전트가 겪는 컨텍스트 창의 한계와 환각 현상을 효과적으로 제어할 수 있다.

과제의 복잡도가 단일 API 호출 수준이면 ReAct 조합을, 상태 유지가 핵심이면 메모리 구조를, 다단계 검증이 필수라면 멀티 에이전트 체계를 선택하는 것이 리소스 낭비를 막는 가장 확실한 기준이다.

결국 어떤 설계도를 선택하느냐는 '에이전트가 얼마나 자율적으로, 얼마나 오래, 얼마나 정교하게' 움직여야 하는가에 대한 정의에서 시작된다.