핵심 개념 - 애플리케이션 스택
핵심 개념 - 애플리케이션 스택
AutoGen Core는 특정 에이전트 추상화나 멀티에이전트 패턴에 묶이지 않는, 의견이 없는(unopinionated) 프레임워크로 설계됐어요. 그래서 다양한 종류의 멀티에이전트 애플리케이션을 만들 수 있는 거예요. 이번 글에서는 AutoGen 애플리케이션이 어떻게 쌓여 있는지, 즉 애플리케이션 스택을 살펴볼게요.
스택의 구성
스택의 맨 아래에는 에이전트들이 서로 통신할 수 있게 해 주는 기본 메시징·라우팅 기능이 있어요. 이것들은 에이전트 런타임(agent runtime)이 관리하고, 대부분의 애플리케이션에서는 개발자가 런타임이 제공하는 고수준 API만 다루면 돼요 (Agent and Agent Runtime 참고).
스택의 맨 위에서는 개발자가 에이전트들이 주고받을 메시지 타입을 정의해요. 이 메시지 타입들의 집합은 에이전트들이 지켜야 하는 행동 계약(behavior contract) 을 형성하고, 계약의 구현이 에이전트가 메시지를 어떻게 처리할지를 결정해요. 이 행동 계약을 메시지 프로토콜이라고도 불러요. 행동 계약을 구현하는 것은 개발자의 책임이고, 멀티에이전트 패턴은 이 행동 계약들로부터 만들어져요.
예제 애플리케이션: 코드 생성
구체적인 예시로, 코드 생성을 위한 멀티에이전트 애플리케이션을 생각해 볼게요. 이 애플리케이션은 세 개의 에이전트로 이뤄져 있어요: Coder Agent, Executor Agent, Reviewer Agent.
이 예시에서 행동 계약은 다음과 같아요:
CodingTaskMsg— 애플리케이션에서 Coder Agent로 가는 메시지CodeGenMsg— Coder Agent에서 Executor Agent로 가는 메시지ExecutionResultMsg— Executor Agent에서 Reviewer Agent로 가는 메시지ReviewMsg— Reviewer Agent에서 Coder Agent로 가는 메시지CodingResultMsg— Reviewer Agent에서 애플리케이션으로 가는 메시지
행동 계약은 에이전트들이 이 메시지들을 처리하는 방식으로 구현돼요. 예를 들어 Reviewer Agent는 ExecutionResultMsg를 들으면서 코드 실행 결과를 평가해 승인할지 거부할지 결정해요. 승인하면 CodingResultMsg를 애플리케이션에 보내고, 아니면 ReviewMsg를 Coder Agent에 보내서 코드 생성을 한 번 더 돌리게 해요.
이 행동 계약은 reflection(반성) 이라는 멀티에이전트 패턴의 한 사례예요 — 생성 결과를 또 다른 생성 라운드로 검토해서 전체 품질을 높이는 방식이죠.