자율 에이전트
자율 에이전트 autonomous agent
- 인간의 개입 없이 스스로 작업을 수행할 수 있는 시스템 또는 소프트웨어 프로그램
- LLM을 사용하여 사용자로부터 입력된 자연어를 이해
- 입력된 정보를 바탕으로 최적의 행동을 결정하고, 이를 수행하기 위한 계획을 수립
- 결정된 계획에 따라 도구를 사용하여 작업을 수행
- 반복적인 상호작용을 통해 학습하며, 시간이 지남에 따라 성능이 향상

구글 딥마인드의 자율 에이전트 레벨 분류
- 자율성 없음: 사람이 모든 일을 함
- 도구로서 AI: 사람이 제어권을 가지고 AI는 하위 작업을 자동화
- 컨설턴트로서 AI: AI가 중요한 역할을 맡지만 주도권은 사람이 가짐
- 협력자로서 AI: AI와 사람이 동등한 입장에서 협력
- 전문가로서 AI: AI가 주도하고 사람은 방향 제시 및 피드백
- 에이전트로서 AI: 완전 자동

에이전트와 구성 요소
- 프로필(profile): 자율 에이전트의 역할 정의
- 기억(memory): 자율 에이전트의 기억을 담당
- 계획(planning): 자율 에이전트가 수행할 일을 계획
- 행동(action): 자율 에이전트의 결정을 수행

단일 에이전트와 멀티에이전트
- 작업이 복잡해질수록, 모든 것을 하는 단일 "슈퍼 에이전트"는 비효율적이 됨
- 인간 조직을 모방한 "전문가 팀" 접근 방식 채택
- 여러 에이전트의 집단 지성과 전문화된 프로필을 활용
- 다양한 능력을 가진 별개의 에이전트로 전문화
- 복잡한 프로세스를 개별 하위 작업으로 분할하고, 각 작업을 전담 전문 에이전트에게 할당
- 각 에이전트가 더 단순하고, 집중적이며, 구축/테스트/유지보수가 쉬워짐
- 인간 그룹 작업의 협력적 특성을 모방하여 여러 에이전트가 계획, 토론, 의사결정에 참여함으로써 전체적 능력이 향상
- 다양한 에이전트 간의 상호작용을 통해 복잡한 현실 세계 환경을 효과적으로 시뮬레이션하는 데도 사용할 수 있음
역할 분리 기반 에이전트 구조
- 협력(cooperative): 공유된 목표를 향해 함께 작업. 집단적 해결책 향상을 위한 정보 교환
- 토론(debate): 논쟁적 상호작용에 참여. 각자의 관점이나 해결책 제시 및 방어. 합의나 개선된 해결책 도출이 목적
- 경쟁(competitive): 각자 자신의 목표를 위해 작업. 다른 에이전트의 목표와 충돌할 수 있음
협업 전략
- 규칙 기반(Rule-based)
- 사전에 정의된 엄격한 규칙에 따라 상호작용
- 장점: 효율성, 높은 예측 가능성, 일관성, 공정성
- 단점: 불확실성이 높거나 복잡한 과제에 적용이 어려움
- 역할 기반(Role-based)
- 전문 지식에 따라 사전에 정의된 역할(예: 관리자, 개발자)을 수행
- 장점: 모듈성, 재사용성
- 단점: 경직된 구조, 전체 수행이 에이전트 간 연결에 의존
- 모델 기반(Model-based)
- 협업 방식이 고정되어 있지 않고 모델에 의해 확률적으로 결정됨
- 장점: 상황이 계속 변하는 동적 환경에서 효과적. 노이즈나 예기치 않은 사건에 대해 탄력적으로 대응 가능
- 단점: 복잡한 모델링이 필요하여 설계 및 배포가 어렵고, 계산적으로 비용이 많이 들 수 있음
에이전트 간 통신과 작업 조정
- 계층 구조(layered): 같은 계층 내부 또는 인접 계층과 주로 상호작용
- 분산 구조(decentralized): 계층 없이 에이전트 간 다대다 직접 통신
- 중앙집중 구조(centralized): 중앙의 단일한 매개를 통해 상호작용
- 공유 메시지 풀(Shared Message Pool): 메시지를 게시하고 구독하는 공유 풀 유지

계획, 실행, 검증 구조
- MetaGPT: 제품 관리자, 설계자, 프로젝트 관리자, 엔지니어 및 QA 엔지니어의 5가지 역할을 정의
- 모든 에이전트가 순차적으로 작업할 수 있도록 하는 소프트웨어 개발의 SOP를 따름
- 문서와 다이어그램(구조화된 출력)으로 통신
- 직접 대화하는 대신 "전역 메시지 풀"을 만들어 각자 자신의 작업을 게시



출처: MetaGPT: Meta Programming for A Multi-Agent Collaborative Framework (https://arxiv.org/abs/2308.00352)
도구 사용형 에이전트 구조
- 환경: 멀티 에이전트 시스템이 배치되고 상호작용하는 특정 맥락이나 설정
- 예: 소프트웨어 개발, 게임, 금융 시장, 사회적 행동 모델링 등
- 샌드박스 환경(sandbox): 시뮬레이션되거나 가상의 환경
- 에이전트들이 자유롭게 상호작용하고 다양한 전략을 시험할 수 있음
- 예: 소프트웨어 개발(코드 인터프리터를 시뮬레이션 환경으로 사용), 게임(게임 규칙을 시뮬레이션 환경으로 사용)
- 물리적 환경(physical): 실제 물리적 객체와 상호작용하는 환경
- 물리 법칙과 제약 조건을 따르는 실제 세계의 환경
- 직접적인 물리적 결과를 수반하는 행동 필요
- 무 환경(none): 특정한 외부 환경이 없는 경우
- 에이전트들이 환경과 상호작용하지 않음
- 토론이나 합의 도출을 위한 에이전트 간 커뮤니케이션만 이루어짐
멀티에이전트 시스템 설계 방법
- 설계 순서
- 전체 작업을 작은 단위로 분해
- 각 에이전트의 역할과 책임을 정의
- 에이전트 사이의 입력과 출력 형식을 정함
- 작업 순서와 의사결정 흐름을 설계
- 최종 결과를 검토하는 검증 단계를 둠
- 핵심 원칙
- 역할이 겹치면 비용과 오류가 늘어난다
- 각 에이전트가 "무엇을 받고, 무엇을 내보내는지"가 명확해야 한다
멀티에이전트 적용 시 제약사항
- 복잡도 증가: 에이전트가 많아질수록 전체 흐름을 이해하고 디버깅하기 어려워진다
- 비용과 시간 증가: 여러 번 모델을 호출하므로 토큰 비용과 응답 시간이 늘어난다
- 오류 전파: 앞 단계 에이전트의 잘못된 결과가 뒤 단계로 전달될 수 있다
- 책임 불명확: 최종 결과가 틀렸을 때 어느 에이전트의 문제인지 파악하기 어렵다
- 조정 비용: 역할 분담, 메시지 형식, 종료 조건을 제대로 설계하지 않으면 오히려 단일 에이전트보다 성능이 떨어질 수 있다
- 적용 기준
- 작업이 분명히 나눌 수 있을 때
- 독립적인 검토나 비교가 필요할 때
- 단일 에이전트가 너무 많은 역할을 맡아 성능이 떨어질 때 사용한다