본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 10. 08:38

AIEVO: Ant Group이 공개한 다중 에이전트 프레임워크

요약

Ant Group이 공개한 AIEVO는 SOP(표준 작업 절차)를 엄격히 준수하여 복잡한 작업을 수행하는 오픈소스 다중 에이전트 프레임워크입니다. 피드백 메커니즘과 동적 작업 생성을 통해 높은 실행 성공률과 확장성을 제공하며, 엔터프라이즈 환경에서 검증되었습니다.

핵심 포인트

  • SOP Graph 준수를 통한 높은 작업 성공률 보장
  • 피드백 및 워처 메커니즘을 통한 실행 안정성 향상
  • LangChain 대비 자율적인 에이전트 간 상호작용 지원
  • 토론, 게임, 논문 작성 등 다양한 멀티 에이전트 시나리오 지원

AIEVO는 Ant Group에서 오픈소스로 공개한, 다중 에이전트 애플리케이션을 효율적으로 구축하도록 설계된 다중 에이전트 (multi-agent) 프레임워크입니다.

높은 SOP 준수율: 복잡한 작업을 수행하기 위해 작업의 SOP Graph를 엄격하게 준수합니다. 높은 실행 성공률: 피드백 및 워처(watcher) 메커니즘을 통해 복잡한 작업의 성공률을 향상시킵니다. 높은 유연성: 작업 속성에 기반하여 동적 작업 생성 및 구독 설정을 지원합니다. 확장성: 프레임워크에 사용자 정의 개선 사항을 추가할 수 있는 다양한 확장 지점을 제공합니다. 엔터프라이즈 검증: Ant Group 내부 프로덕션 환경에서 검증되어, 프레임워크의 안정성과 신뢰성을 보장합니다.

  • 로드맵: 향후 개발에 대한 상세한 로드맵을 제공합니다.

  • 사용자 정의 SOP를 사용한 토론 대회 (Debate Competition With Custom SOP): 여러 에이전트가 사용자 정의 sop를 사용하여 토론 대회에 참여합니다.

  • 자동 SOP를 사용한 토론 대회 (Debate Competition With Auto SOP): 여러 에이전트가 sop 에이전트에 의해 정의된 sop를 사용하여 토론 대회에 참여합니다.

  • Werewolf 게임: 여러 에이전트가 Werewolf 게임을 합니다.

  • 사용자 정의 SOP를 사용한 언더커버 게임 (Undercover Game With Custom SOP): 여러 에이전트가 사용자 정의 sop를 사용하여 Undercover 게임을 합니다.

  • 자동 SOP를 사용한 언더커버 게임 (Undercover Game With Auto SOP): 여러 에이전트가 sop 에이전트에 의해 정의된 sop를 사용하여 Undercover 게임을 합니다.

  • 논문 작성 (Paper Writing): 여러 에이전트가 협력하여 논문을 작성합니다.

  • 엔지니어 (Engineer): 코드 작성 작업을 완료할 수 있는 단일 에이전트입니다.

이 모듈의 주요 기능은 에이전트를 구축하는 것을 용이하게 하는 것입니다. 저희는 Agents를 구축하기 위해 ReAct 접근 방식을 사용하며, Agent 구축에 LangChain을 사용하는 것과 비교하여 다른 Agents와 자율적으로 상호작용할 수 있도록 지원합니다.

예를 들어, 프로그래머 에이전트를 생성하려면:

// 기본 모델 인스턴스화
client, err := openai.New(
openai.WithToken(os.Getenv(

다중 에이전트 시스템에서 이 모듈은 팀원, 구독 관계, 기록 메시지 및 작업의 SopGraph와 같은 정보를 저장하는 데 주로 사용됩니다. 또한 에이전트 간 상호 작용을 위한 중간 풀 역할을 합니다. 에이전트는 Env로 메시지를 보내고, 드라이버 모듈이 이를 해당 에이전트들에게 분배합니다.

아래는 Env 모듈의 인터페이스 정의입니다:

type Environment interface {
// Produce produces messages
Produce(ctx context.Context, msgs ...Message) error
...


위에 언급된 기본 정보 외에도, Env 모듈은 토큰(작업당 최대 토큰 소비), max_turns(최대 에이전트 실행 횟수) 등과 같은 제어 정보도 저장할 수 있습니다.

Env가 메시지 중계 풀임을 언급했으니, AIEvo의 Message 상세 내용을 살펴보겠습니다.

아래는 Message의 구조 정의입니다:

type Message struct {
// Message type
Type string json:"cate"
...


현재 지원되는 메시지 유형은 다음과 같습니다:

- MsgTypeMsg: 일반 상호 작용 메시지
- MsgTypeEnd: 세션 종료 메시지
- MsgTypeCreative: CreativeAgent가 팀을 생성할 때 생성되는 메시지
- MsgTypeSOP: SopAgent가 작업을 기반으로 SopGraph를 생성할 때 생성되는 메시지

다양한 메시지 유형은 Env로 전달될 때 다른 처리 전략을 가집니다:

- MsgTypeMsg -> msgStrategy: 메시지를 Memory에 저장
- MsgTypeCreative -> creativeStrategy: 팀 수정 (에이전트 제거 및 업데이트에 사용)
- MsgTypeSOP -> sopStrategy: SopGraph를 Env에 저장

현재 지원되는 팀 모드는 다음과 같습니다:

- DefaultSubMode: 기본 모드. LeaderAgent가 존재하는 경우 LeaderSubMode가 사용되며, 그렇지 않은 경우 ALLSubMode가 사용됩니다.

- CustomSubMode: 사용자가 구독 관계를 지정하는 사용자 정의 구독 관계입니다.

팀 모드를 선택하는 방법은 다음과 같습니다?

- LeaderSubMode: 작업 SOP가 복잡하고 높은 성공률이 필요한 시나리오에 적합합니다.
- ALLSubMode: 작업 SOP가 비교적 간단하여 에이전트의 자율성을 최대한 활용하고자 하는 시나리오에 적합합니다.
- CustomSubMode: 에이전트 간의 구독 관계가 명확하게 정의되어 있고 SOP가 비교적 간단한 시나리오에 적합합니다.

이 모듈은 에이전트에 의해 생성된 콘텐츠를 검토하고 피드백을 제공하는 데 사용됩니다.

이 모듈이 도입되기 전에는 다음과 같은 문제가 발생했을 수 있습니다:

- 콘텐츠가 고정된 형식으로 생성되지 않았습니다.
- LLM의 환각(hallucination)으로 인해 에이전트가 특정 도구를 반복적으로 호출할 수 있었습니다.
- 작업 진행 메시지가 SOPGraph를 따르지 않았습니다.
- 생성된 응답에 민감한 정보가 포함되었습니다.

피드백(Feedback)을 도입함으로써 이러한 문제들을 해결할 수 있습니다. 예를 들어, Feedback에서는 출력 메시지의 형식을 검증할 수 있습니다. 요구 사항을 충족하면 제안이 제공되고 재시도(retry)를 시작할 수 있습니다.

물론, Feedback가 필요한 시나리오는 훨씬 더 광범위합니다. 사용자는 필요에 따라 Feedback을 맞춤 설정할 수 있습니다.

아래는 Feedback 모듈의 인터페이스 정의입니다:

type Feedback interface {
Feedback(ctx context.Context, agent schema.Agent, messages []schema.Message, actions []schema.StepAction,
steps []schema.StepAction, prompt string) *FeedbackInfo
...


아래는 FeedbackInfo의 구조 정의입니다:

type FeedbackInfo struct {
// 피드백 유형: Pass/Fail
Type FeedbackType `json:

예를 들어, Werewolf 게임 시나리오에서 에이전트가 사망하면, 감시자(watcher)는 해당 에이전트를 팀(Team) 목록에서 제거하여 더 이상의 메시지를 받지 못하게 함으로써 전체 운영을 방해하는 것을 막습니다.

감시자의 운영 과정은 다음과 같습니다:

  • 모든 실행 과정을 관찰하고 에이전트의 제거 및 업데이트를 위한 팀 변경 메시지를 생성하기 위해 감시자(watcher)를 시작합니다.

func (e *AIEvo) Watch(ctx context.Context, _ string, opts ...llm.GenerateOption) (string, error) { if e.Watcher != nil { e.WatchChan = make(chan schema.Message) e.WatchChanDone = make(chan struct{}) go func() { for message := range e.WatchChan { if e.WatchCondition != nil && e.WatchCondition(message) == false { e.WatchChanDone <- struct{}{} continue } generation, err := e.Watcher.Run(ctx, e.LoadMemory(ctx, e.Watcher)) if err != nil { e.WatchChanDone <- struct{}{} continue } e.Produce(ctx, generation.Messages...) e.WatchChanDone <- struct{}{} } }() } return "", nil }

  • 변경 메시지 적용하기 (apply change messages)

func (e *Environment) mngInfoStrategy(ctx context.Context, msg *schema.Message) error { if msg.MngInfo == nil { return nil } // 현재는 제거만 지원됨 if msg.MngInfo.Remove != nil { e.Team.RemoveMembers(msg.MngInfo.Remove) } _ = e.Memory.Save(ctx, *msg) return nil }

이 모듈은 전체 다중 에이전트 시스템의 운영을 구동하는 데 사용됩니다. 전체 구동 논리는 메시지 기반입니다.

운영 단계는 다음과 같습니다:

e.Handler = Chain(e.BuildPlan, e.BuildSOP, e.Watch, e.Scheduler)

  • 팀 구축 (Build Team) (수동 지정 가능): 현재 작업 속성(task attributes)을 기반으로 팀을 구성합니다.
  • SOP 구축 (Build Sop) (수동 지정 가능): 작업 문서(task document)를 기반으로 SOP를 구성합니다.
  • 감시자 시작 (Start Watcher): 전체 운영 과정을 모니터링하기 위해 감시자(Watcher)를 실행합니다.
  • 스케줄링 시작 (Start Scheduling): Env 내의 메시지를 기반으로 각 에이전트를 스케줄링합니다.

스케줄링 논리는 다음과 같습니다:

func (e *AIEvo) Scheduler(ctx context.Context, prompt string, opts ...llm.GenerateOption) (string, error) {
// 먼저 사용자의 메시지에 의해 구동됩니다
e.Produce(ctx, schema.Message{
...

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0