본문 바로가기

논문 리뷰/Language Model

AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

Multi-agent 간의 대화를 중심으로 한 conversation programming으로 LLM application 구축
 
[Github]
[arXiv]
 
 

Abstract

서로 대화할 수 있는 여러 에이전트를 통해 LLM application을 구축할 수 있는 open-source framework인 AutoGen 
 
 

Introduction

개발자는 AutoGen을 통해 다양한 역할을 가진 에이전트를 쉽고 빠르게 생성할 수 있다. 
또한 쉽게 사용자 정의 동작을 확장할 수 있고, 모든 에이전트는 대화가 가능하게 만들어졌다.
모듈식으로 LLM의 기능을 확장 가능.
 
AutoGen의 근본 통찰은 복잡한 LLM application workflow를 다중 에이전트 대화로 단순화하고 통합하는 것이다.
따라서 에이전트 간 대화를 중심으로 한 프로그래밍 패러다임을 채택하고 conversation programming이라고 명명.
대화 중심의 계산 및 제어를 통해 에이전트 간의 상호 작용 동작을 프로그래밍한다.
 
 
 

The AutoGen Framework

Conversable Agents

AutoGen agent:
1) LLM
역할극, 암시적 상태 추론, 대화 기록에 따른 진행, 피드백 제공, 피드백 적용, 코딩 등 고급 LLM의 다양한 기능을 활용.
이러한 기능은 새로운 프롬프트 기술을 통해 다양한 방식으로 결합될 수 있다.

AutoGen에 내장된 보조 에이전트에 대한 기본 시스템 메시지

 
2) Humans
인간이 에이전트 대화에 참여할 수 있다.
 
3) Tools
LLM이 제안한 코드를 실행하거나 제안한 함수를 호출하는 등 도구를 실행할 수 있는 기능이 있음.
 
AutoGen의 기본 제공 에이전트를 재사용하거나 확장하여 쉽게 생성할 수 있다.

 
LLM-backed assistant agent와 tool- and human-backed user proxy agent가 함께 작업을 처리하는 모습.


Conversation Programming

대화형 프로그래밍은 두 가지 개념을 고려 : computation, control flow
 
대화 기반 computation(회색), 대화 흐름 제어(파랑)

 
AutoGen의 디자인 패턴:

Unified interfaces and auto-reply mechanisms for automated agent chat

  • 에이전트에는 메시지 수신/발신, 응답 생성 등을 위한 통합 대화 인터페이스가 내장되어 있음.
  • 또한 (파랑) 처럼 미리 정의된, 또는 사용자 정의된 자동 응답 메커니즘으로 대화가 자동으로 진행됨.

Control by fusion of programming and natural language

  • (파랑) 처럼 python 코드를 통해 에이전트 제어 가능
  • 기본 시스템 메시지처럼 자연어를 통한 제어 가능
  • 언어 간의 전환을 제어: 사용자 정의 응답 function에 특정 제어 논리가 포함된 LLM 추론을 호출하거나 LLM이 제안한 함수 호출을 통해 자연어-코드 간의 제어 전환 가능

 
예시로 보여준 대화 패턴 이외에도 사용자 정의 응답, LLM이 대화 상태에 따라 특정 함수를 호출해 추가 에이전트를 호출하는 등 동적 대화 패턴이 가능하다.
 
또한 다음 화자를 동적으로 선택한 다음 해당 응답을 다른 에이전트에게 broadcast 할 수 있는 GroupChatManager를 통해 더 복잡한 그룹 채팅 지원.
 
 
 

Applications of AutoGen

AutoGen을 사용하는 6개의 application 시연.(다 안 할 거임)

 

Math Problem Solving

Scenario 1 : 내장 에이전트 사용

Scenario 2 : 인간 참여

인간 없이는 해결할 수 없는 까다로운 문제를 해결하기 위해 UserProxyAgent에서 human input mode=‘ALWAYS’로 설정하고 보조 에이전트에게 도움 제공.

Scenario 3 : 여러 인간 사용자 참여

학생과 전문가를 참여시킴.
보조 에이전트가 문제를 만족스럽게 해결하지 못할 경우 자동으로 대화를 보류하고 전문가에게 도움 요청.
전문가의 답변을 보조 에이전트가 학생에게 전달.
필요한 경우 여러 명의 전문가와 학생을 포함하도록 쉽게 확장할 수 있다.


Decision Making in Text World Environments

ALFWorld는 실제 가정(household) 장면을 시뮬레이션하는 것을 목표로 하는 텍스트 환경으로 구성됨.
목표(e.g. 꽃병을 찾아 찬장에 넣기)와 가정 환경에 대한 설명이 주어지면 에이전트는 텍스트 인터페이스를 통해 시뮬레이션된 가정 환경을 탐색하고 상호 작용해야 한다.
 
간단한 2개의 에이전트 시스템 제안.

보조 에이전트는 계획을 세우고 행동을 결정하며, 집행 에이전트는 환경 내에서 행동을 수행하고 결과를 출력한다.
 
ALFWorld의 주요한 과제 중 하나는 상식적 추론인데, 보조 에이전트는 가정 환경에 대한 기본 지식을 무시하는 경향이 있다.
 
따라서 상식적인 사실을 제공하기 위한 grounding agent 추가.
Grounding agent는 보조 에이전트가 동일한 행동을 여러 번 반복할 때마다 일반 상식을 제공해 무한 루프 방지.

예시:


Multi-Agent Coding

Writer : 코드 작성과 해석
Safeguard : 보안 위험이 있는지 검사
Commander : 코드 실행


Dynamic Group Chat

그림만 봐도 이해가 쏙쏙 되죠?

 
단일 보조 에이전트와 대화할 때 보다 서로 역할을 분담한 여러 에이전트끼리 group chating을 했을 때 작업을 더 빠르고 성공적으로 끝낸다.
 
실패 사례지만 Github issue에 괜찮은 예시가 있다.
https://github.com/microsoft/autogen/issues/168

Can the Engineer only code very small and simple programs? · Issue #168 · microsoft/autogen

As an experiment, I tried to have Autogen create a simple Pac-Man game (using Pygame). This should be possible in only a few hundred lines of code. (I have tried this before with ChatDev and while ...

github.com


Conversational Chess

-

-