Agentic Context Engine(ACE): AI 에이전트가 스스로의 작업 경험을 통해 자동으로 학습하는 프레임워크

Agentic Context Engine (ACE) 소개

Agentic Context Engine(ACE)은 LLM 기반 에이전트를 더욱 ‘똑똑하게’ 만드는 프레임워크로, 작업 경험을 통해 에이전트가 자동으로 학습하도록 돕습니다. 이 프레임워크는 Stanford와 SambaNova의 연구를 기반으로 KAYBA.AI가 개발 및 공개하였으며, 학습 데이터나 파인튜닝 없이도 LLM 에이전트가 자신의 성공과 실패를 통해 전략을 축적하고 개선해 나가도록 설계되어 있습니다. 에이전트가 매번 동일한 실수를 반복하는 문제는 LLM 활용에서 자주 지적되어 왔습니다. ACE는 이런 반복적인 오류를 줄이고, 수행한 작업의 결과를 기반으로 피드백을 제공하여 향후 성능을 개선합니다.

ACE의 가장 큰 특징은 ‘에이전트가 동작하며 스스로의 경험으로부터 학습하는 것’입니다. 사용자는 별도로 정제된 데이터셋이나 복잡한 파인튜닝 과정을 거칠 필요 없이, 에이전트가 다양한 작업을 처리하는 과정 속에서 유용한 전략을 자동으로 기록하고 반영할 수 있습니다. 이를 통해 실제 애플리케이션 개발이나 LLM 기반 서비스 구축 시, 개발자의 개입을 최소화하면서 에이전트의 성능을 점진적으로 향상시킬 수 있습니다.

또한 ACE는 100개 이상의 LLM 공급자(OpenAI, Anthropic, Google 등)와 호환되며, 간단한 설치로 바로 사용할 수 있습니다. 학습된 전략은 ‘Playbook’이라는 형태로 저장되어 에이전트가 언제든지 참조할 수 있으며, 이는 기존 LLM 에이전트의 맥락 붕괴(context collapse) 문제를 해결하는 데도 도움이 됩니다.

LangChain, AutoGen 등과 비교

ACE는 LangChain이나 AutoGen처럼 LLM을 활용해 에이전트를 구성하는 프레임워크와 유사한 면이 있지만, 가장 큰 차이점은 에이전트가 스스로 학습하는 구조입니다. LangChain은 다양한 체인 구성을 통해 LLM의 기능을 모듈화하고 활용하지만, 명시적인 학습 기능은 없습니다. 반면, ACE는 실행 결과에 따라 전략을 반영하고 개선하는 순환 구조를 가지고 있어, 실제 에이전트가 ‘경험’을 통해 성장하는 느낌을 제공합니다.

또한 AutoGen은 멀티 에이전트 협업에 초점을 맞추고 있는 반면, ACE는 단일 에이전트의 학습과 전략 관리에 집중하고 있다는 점에서 목적과 접근 방식에서 차이가 있습니다.

Agentic Context Engine(ACE)의 주요 구성 요소 및 동작 방식

주요 컴포넌트: Generator, Reflector, Curator, Playbook

ACE는 네 가지 주요 컴포넌트로 구성됩니다:

  • Playbook: Playbook은 ACE의 핵심이자, 에이전트의 ‘집단 지성’을 저장하는 공간입니다. 모든 전략은 이곳에 저장 및 관리됩니다. 즉, Playbook에는 그 동안의 성공/실패 전략이 구조화된 문서 형태로 정리되어, 시간이 지남에 따라 에이전트의 ‘경험’이 축적됩니다.

  • Generator: Generator는 ACE 프레임워크의 출발점으로, 사용자의 질문이나 요청을 받아 Playbook에 저장되어 있는 전략을 바탕으로 작업을 수행하는 컴포넌트입니다. 쉽게 말해, 현재까지 축적된 ‘경험’을 참고해 문제를 해결하는 '실행자' 역할을 합니다. 예를 들어, 수학 문제를 푸는 경우 “곱셈은 반드시 두 숫자를 한 줄에 나열한 후 곱해라” 같은 전략이 Playbook에 존재한다면, 이 전략을 참고하여 문제를 해결합니다.

  • Reflector: Reflector는 Generator가 수행한 작업의 결과를 평가하는 컴포넌트입니다. 단순히 성공/실패를 판단하는 데서 그치지 않고, 어떤 전략이 도움이 되었는지, 어떤 전략이 문제를 야기했는지를 구체적으로 분석합니다. Reflector는 결과를 ‘유용한 전략’, ‘문제를 일으킨 전략’, ‘중립적 전략’으로 분류하고, 이러한 인사이트를 다음 단계인 Curator에게 전달합니다.

  • Curator: Curator는 Reflector가 제공한 분석 정보를 바탕으로 Playbook을 업데이트하는 역할을 합니다. 즉, 새로운 전략을 추가하거나 기존 전략을 개선하는 책임을 지게 됩니다. 이 과정은 점진적(Incremental)으로 이루어지기 때문에, Playbook은 점차적으로 ‘더 똑똑한’ 전략을 가지게 됩니다.

Agentic Context Engine(ACE)의 학습 방식

---
config:
  look: neo
  theme: neutral
---

flowchart TD
    Playbook[("`**📚 Playbook**<br>(Evolving Context)<br><br>•Strategy Bullets<br> ✓ Helpful strategies <br>✗ Harmful patterns <br>○ Neutral observations`")]
    Start(["**📝Query** <br>User prompt or question"]) --> Generator["**⚙️Generator** <br>Executes task using playbook"]
    Generator --> Reflector
    Playbook -. Provides Context .-> Generator
    Environment["**🌍 Task Environment**<br>Evaluates answer<br>Provides feedback"] -- Feedback+ <br>Optional Ground Truth --> Reflector
    Reflector["**🔍 Reflector**<br>Analyzes and provides feedback what was helpful/harmful"]
    Reflector --> Curator["**📝 Curator**<br>Produces improvement deltas"]
    Curator --> DeltaOps["**🔀Merger** <br>Updates the playbook with deltas"]
    DeltaOps -- Incremental<br>Updates --> Playbook
    Generator <--> Environment

Agentic Context Engine(ACE)의 가장 큰 특징은 학습을 위해 별도의 데이터셋이나 모델 파인튜닝 과정을 필요로 하지 않는다는 점입니다. 대신, 에이전트가 직접 수행한 작업을 바탕으로 스스로 평가하고 전략을 개선하는 문맥 내 학습(contextual learning) 방식을 채택하고 있습니다. 이는 LLM 에이전트를 운영하면서 반복적인 오류를 줄이고, 작업 수행 능력을 점진적으로 향상시키는 데 매우 효과적입니다.

이를 위해, ACE는 작업 후 에이전트가 결과를 자체적으로 분석하고 전략을 조정하는 일련의 피드백 루프를 형성합니다. 이후, 이렇게 생성한 피드백 루프를 통해 다음과 같이 동작합니다:

  1. Generator가 문제를 해결합니다. 이때, 이전 경험에서 도출된 전략이 저장된 Playbook을 참고하여 답변을 생성합니다.
  2. 작업이 완료되면 Reflector가 결과를 분석합니다. 이 분석은 사용자 피드백 없이도 가능하며, 에이전트 스스로 어떤 전략이 도움이 되었는지 혹은 해가 되었는지를 판단합니다.
  3. Reflector의 분석은 **Curator에게 전달되어 전략 개선안(델타)**으로 전환됩니다. Curator는 이러한 개선안을 Playbook에 반영합니다.
  4. 업데이트된 Playbook은 다음 작업에서 Generator가 다시 활용하게 되며, 이 과정을 반복하면서 에이전트는 실제 ‘경험’을 통해 학습합니다.


이러한 피드백 루프는 단순히 성능을 평가하는 수준을 넘어서, 수행한 작업의 문맥을 기반으로 실질적인 전략 업데이트를 수행합니다. 아래는 학습이 구체적으로 어떤 방식으로 이루어지는지를 설명한 예시입니다:

  • 성공한 전략의 반복 학습: 예를 들어, 에이전트가 ‘이모지 관련 질문에서 존재하는 이모지 목록을 참조한 후 답변을 구성’하는 전략으로 올바른 결과를 도출했다면, Reflector는 이 전략을 유용한 것으로 판단하고 Curator가 이를 Playbook에 추가합니다. 이후 같은 유형의 질문이 들어오면 에이전트는 동일한 전략을 우선적으로 활용하게 됩니다.
  • 실패한 시도의 전략화: 반대로, 에이전트가 ‘존재하지 않는 이모지를 만들어서 출력’했다면, Reflector는 해당 접근을 해로운 전략으로 판단합니다. Curator는 이를 피해야 할 패턴으로 기록하고, Generator는 이후 작업에서 이 전략을 회피합니다.
  • 도구 선택에 대한 학습: 특정 작업에서 특정 모델 또는 API 호출이 효과적이었다면, 이 기록도 Playbook에 포함됩니다. 예를 들어, 복잡한 수치 연산에는 GPT-4o가, 창의적 작성에는 Claude 3.5가 더 적절하다는 전략이 반영되면, Generator는 작업 유형에 따라 적절한 모델을 자동으로 선택하게 됩니다.
  • 희귀한 예외 처리 전략 축적: 일부 예외적인 상황(예: 모호한 질문, 중의적 문장 등)에 대한 대응법도 전략으로 저장됩니다. 일반적인 문제와 달리 빈도가 낮지만, 반복 시 도움이 되는 대응법이 Playbook에 추가되어 향후 같은 상황에서 적용됩니다.

중요한 점은, 이러한 모든 학습 과정이 LLM의 내부 파라미터를 변경하지 않고, 오직 **외부 문맥(context)**만으로 이루어진다는 점입니다. 이는 곧 에이전트를 운영하면서도 지속적인 학습을 가능하게 하며, 비용이 많이 드는 파인튜닝이나 데이터 준비 작업 없이도 실제 환경에 적응 가능한 LLM 에이전트를 구현할 수 있게 해줍니다.

Agentic Context Engine(ACE) 설치 및 사용 방법

설치 및 기본 사용 예시

아래와 같이 pip를 통해 설치할 수 있으며, LangChain, 개발 모드 등 다양한 설치 옵션도 존재합니다:

# Basic installation
pip install ace-framework

# With LangChain support
pip install ace-framework[langchain]

# With all features
pip install ace-framework[all]

# Development
pip install ace-framework[dev]

# Development from source (contributors)
git clone https://github.com/kayba-ai/agentic-context-engine
cd agentic-context-engine
pip install -r requirements.txt
pip install -e .


설치 후에는 다음과 같은 방식으로 사용할 수 있습니다:

from ace import LiteLLMClient, Generator, Reflector, Curator, Playbook

client = LiteLLMClient(model="gpt-4o-mini")
generator = Generator(client)
reflector = Reflector(client)
curator = Curator(client)
playbook = Playbook()

result = generator.generate(
    question="What is 7*8?",
    context="",
    playbook=playbook
)
print(result.final_answer)

위 예시 코드는 Playbook을 참고하여 문제를 해결하고, 그 결과를 바탕으로 전략을 학습하는 과정을 보여줍니다.

사용 예시: 해마 이모지(Seahorse Emoji) 챌린지

kayba_test_demo

해마 이모지(Seahorse Emoji)는 존재하지 않는 이모지를 찾아내는 문제로, 많은 LLM이 존재한다고 착각하는 대표적 사례입니다. ACE는 이 문제를 반복 수행하며 스스로 잘못된 출력을 교정하고, 결국 올바른 판단을 하게 되는 과정을 보여줍니다. 해당 데모는 다음 예제를 실행하면 확인할 수 있습니다:

python examples/kayba_ace_test.py

전체 코드는 GitHub 저장소의 kayba_ace_test.py 파일을 참고하면 됩니다.

ACE 설정: 사용 가능한 LLM 제공자

ACE는 다양한 모델을 지원하며, fallback 기능도 포함합니다:

client = LiteLLMClient(
    model="gpt-4",
    fallbacks=["claude-3-haiku", "gpt-3.5-turbo"]
)

이를 통해 특정 모델에 문제가 생겼을 때 자동으로 대체 모델을 사용하도록 설정할 수 있습니다.

라이선스

Agentic Context Engine(ACE) 프로젝트는 MIT 라이선스로 공개 및 배포되고 있습니다. 상업적 사용 및 수정이 자유롭습니다.

:github: Agentic Context Engine 프로젝트 GitHub 저장소

:scroll: Agentic Context Engineering 논문




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

2개의 좋아요

ACE의 전체 시스템 아키텍처, 모듈식 구성 요소(Generator, Reflector, Curator), 그리고 Finance 및 AppWorld 벤치마크용 스크립트를 포함한 저장소가 공개되었습니다. :smiley: