multi agent - part 4
IoA(Internet of Agents) - 2024 / 7 / 9
https://arxiv.org/pdf/2407.07061
인터넷에 영감을 받아 만든 멀티에이젼트 프레임워크
인터넷의 발전으로 위키피디아, Linux OS 같은 사람간의 협력이 어떤 결과물로 나온것처럼 AI agent를 이와 같은 환경에 둘수 없을까?
1. 제한된 환경(ecosystem)
대부분의 프레임워크는 자체 시스템(ecosystem) 내에서 정의된 에이전트만을 고려하기 때문에,
다양한 서드파티 agent 의 통합을 차단하고 에이전트 기능의 다양성과 platform의 generality 을 제한할 수 있다
(2) 단일 device 시뮬레이션
거의 모든 멀티에이전트 프레임워크는
단일 기기에서 다중 에이전트 시스템을 시뮬레이션한다.
이는 에이전트가 여러 장소에 분산된 여러 기기에 걸쳐 존재할 수 있는 현실에서의 시나리오와는 크게 다르다
(3) rigid 의사소통 및 조정(coordination)
의사소통 과정, 에이전트 그룹화, 상태 전환( state transitions )이 대부분 하드코딩
반면 실제 생활에서는 사람들이 주어진 작업에 따라 팀원을 결정하고
(토론)과 (작업 할당 - task assignment 또는 실행 - execution) 사이에서 동적으로 전환한다.
클라이언트- 서버 아키텍쳐형태의 프레임워크
서버( agent registration, discovery, and message routing)
1. Interaction Layer - 팀 생성과 커뮤니케이션 facilitate
Agent query Block - agent가 협력할 다른 agent를 찾기(search)
Group Setup Block - 그룹챗 생성, 관리
Message Routing Block - agent들과 그룹챗 사이의 메시지들이 정확하고 휴율적으로 오가고 있는지 확인
2. Data Layer- agents, group chats, tasks에 대한 정보 관리
Agent Registry Block - 등록된 agent의 데이터베이스 maintain
Session Management Block - 서버와 클라이언트간의 연결, 연결이 계속 지속되고 있는지 확인
3. Foundation Layer - 필수적인 인프라(agent 통합, 데이터 관리 등) 제공
Data Infrastructure Block - 데이터 영속성(persistence) , 반환(retrieval) 관리
Network Infrastructure Block - 네트워크 연결 관리
Security Block - 인증, 권한 등 시스템 보안 실행
클라이언트( wrapper, communication functionalities)
1. Interaction Layer - 시스템과 에이젼트간의 연결을 관리
Team Formation Block
task에 맞는 팀 생성, 협력 agent가 적합한지를 확인하는 logic
Communication Block
그룹챗에서의 agent의 참여, 메시지 처리 관리
2. Data Layer - agent의 메모리 (agent 실행한것에 관한 관련 local 데이터) maintain
Agent Contact Block
현재 상호작용하고 있는 agent들에 관한 정보 저장
Group Info Block
현재 진행하는 그룹챗 , 협력에 관한 디테일 maintain
Task Management Block
agent에 부여된 task 진행,상황 추적
3. Foundation Layer - 클라이언트가 수행하는 것에 대한 기본 기능들(functionalities
Agent Integration Block - 서드파티 에이전트를 통합하기 위한 프로토콜과 인터페이스를 정의
Data Infrastructure Block - 로컬 데이터의 저장과 retrieval 처리
메커니즘
1.1 agent registration
새로운 agent가 등록시 클라이언트 wrapper가 서버에서 이를 등록
agent는 능력, 스킬, 어느 도메인 특화인지에 대한 정보를 제공
이는 서버의 데이터 레이어의 Agent registry block에 저장
1.2 discovery mechanism
서버로부터 협력에 가장 적합한 agent를 찾아줌(agent registry의 정보에 중점을 둬서)
서버의 agent query block의 search_clinet 를 사용함
2. AUTONOMOUS NESTED TEAM FORMATION
2.1 Team Formation Process
클라이언트 c 에 작업 t가 할당되면, 팀 형성 과정을 시작
->
클라이언트는 서버가 제공하는 두 가지 필수 도구인 search_clinet 과 launch_group_chat에 접근가능
->
클라이언트의 LLM은 작업과 현재 발견된 클라이언트 set을 기반으로 어떤 도구를 호출할지 결정하도록 프롬프트
->
더 많은 협력자가 필요한 경우, 적절한 특성을 가진 클라이언트 검색을 호출
->
적합한 협력자를 찾으면, launch_group_chat 을 호출해 새로운 그룹 채팅 g ∈ G를 시작( G는 모든 그룹 채팅의 공간)
2.2 Nested Team Structure
팀과 하위 팀의 계층적 구조를 가능하게 한다
g ∈ G를 task t에 대한 초기 그룹 채팅이라고 할때
task 실행 중에 클라이언트 c가 하위 작업 tl을 할당받고,
tl에 추가 전문 지식이 필요하다고 판단하면,
c는 다시 적절한 에이전트를 검색하고 새로운 하위 그룹 채팅 gl ∈ G를 시작할 수 있다.
이 과정은 gl에서 할당된 새로운 하위 작업에 대해 재귀적으로 계속될 수 있으며, 트리와 같은 구조의 그룹 채팅을 형성
2.3.AUTONOMOUS CONVERSATION FLOW CONTROL
Sequential Speaking Mechanism
잠재적 conflict을 관리하고 명확한 의사소통을 보장하기 위해, IoA Sequential Speaking Mechanism 을 채택
주어진 시간에 한 에이전트만 발언할 수 있어, 혼란을 방지하고 명확한 의사소통 순서
이 접근 방식은 단순하지만, 다음의 동적 기능들과 결합될 때 더 정확한 convo 관리
Finite State Machine for Group Chat States
우리는 대화 흐름을 finite state machine M = (S, Σ, δ, s0, F)로 형식화
- S = {sd, ss, sa, sp, sc}는
- 토론 discussion
- 동기식 작업 할당 synchronous task assignment
- 비동기식 작업 할당 asynchronous task assignment
- 일시 중지 & 트리거 pause & trigger
- 결론 conclusion, 을 나타내는 상태 집합
- Σ는 상태 전이 결정 공간 - state transition decision space
- δ : S × Σ → S는 현재 상태와 LLM이 내린 transition decision을 다음 상태로 매핑하는 transition function
- s0 = sd는 토론 단계( discussion phase )에서 대화의 시작을 나타내는 초기 상태 initial state
- F = {sc}는 결론 상태만을 포함하는 최종 상태 집합
그림 3은 대화 흐름의 state transition를 보여준다. 각 상태는 협업 과정의 다른 단계에 해당된다
- 토론 (sd): 에이전트들이 일반적인 대화에 참여하고, 아이디어를 교환하며, 작업 요구사항을 명확히
- 동기식 작업 할당 (ss): 특정 에이전트에게 작업이 할당되며, 완료될 때까지 그룹 채팅이 일시 중지
- 비동기식 작업 할당 (sa): 진행 중인 토론을 중단하지 않고 작업이 할당
- 일시 중지 & 트리거 (sp): 그룹 채팅이 일시 중지되고, 지정된 비동기 작업의 완료를 기다림
- 결론 (sc): 협업의 종료를 표시하며, 최종 요약을 요청
4 TASK ASSIGNMENT AND EXECUTION
Task Representation:
IoA에서 task t 튜플 (dt, St)로 표현
여기서 dt는 작업 description이고 St = {s1, s2, ..., sn}는 t가 분해될 수 있는 하위 작업(subtask)의 set
처음에 St는 비어 있을 수 있으며, 하위 작업은 협업 과정 중 동적으로 확인될수 있다
Task Allocation:
IoA의 작업 할당은 그룹 채팅 context를 통해 conversation flow control mechanism. 과 밀접하게 연관
두 가지 유형
Synchronous Task Allocation
그룹 채팅이 동기식 작업 할당 상태 S (syncro)에 들어가면, 작업이 특정 에이전트에게 할당되고 작업이 완료될 때까지 그룹 채팅이 일시 중지
Asynchronous Task Allocation
상태 sa에서는 진행 중인 토론을 중단하지 않고 작업이 할당됩니다. 이를 통해 작업의 병렬 실행이 가능합니다.
형식적으로, 우리는 작업 할당 함수 α : T × G → P(C)를 정의가능
이 함수는 작업과 그룹 채팅을 작업 실행을 담당하는 클라이언트의 부분집합에 매핑
Task Execution:
작업이 할당되면 담당 에이전트(들)가 실행을 시작합니다. 실행 과정은 작업의 성격과 에이전트의 능력에 따라 다릅니다. 통합된 제3자 에이전트의 경우, 작업 실행은 클라이언트의 기초 계층에 있는 에이전트 통합 블록을 통해 처리됩니다. 이 블록은 작업 실행을 위한 표준화된 인터페이스를 제공하며, 일반적으로 run : String → TaskID 형태입니다. 여기서 입력은 작업 설명이고 출력은 작업의 고유 식별자입니다. 실행 중단과 같은 고급 기능도 이 단계에서 구현될 수 있습니다.
작업이나 하위 작업이 완료되면 담당 에이전트(들)가 그룹 채팅에 보고합니다. 동기식 작업의 경우, 이는 그룹 채팅의 재개를 트리거합니다. 비동기식 작업의 경우, 완료가 기록되고 관련 정보가 그룹과 공유됩니다.
대화 흐름 제어 메커니즘의 일시 중지 & 트리거 상태 sp는 여러 비동기식 작업의 완료를 관리하는 데 중요한 역할을 합니다. 이를 통해 그룹 채팅은 지정된 비동기식 작업의 완료를 기다렸다가 진행할 수 있어, 협업의 후속 단계에 필요한 모든 정보가 확보되도록 합니다.
2.4 COMPREHENSIVE MESSAGE PROTOCOL DESIGN
이 프로토콜은 다양한 메커니즘이 제대로 작동하는 데 필요한 모든 정보를 캡슐화하여 에이전트 간의 원활한 의사소통과 협업을 가능하게 한다
Protocol Overview and Key Fields
에이전트 메시지 프로토콜은 확장성과 유연성을 위해 설계되어 효과적인 다중 에이전트 협업을 facilitate
프로토콜은 헤더와 페이로드의 두 가지 주요 구성 요소로
헤더에는 메시지에 대한 필수 메타데이터가 포함되어 있어 수신 에이전트가 올바르게 주소를 지정하고 처리할 수 있도록
헤더
- sender: 메시지를 보내는 에이전트의 고유 식별자.
- group_id: 메시지가 속한 그룹 채팅의 식별자.
페이로드는 메시지의 주요 내용, 유형에 따라 다르다.
페이로드
- message_type: 메시지의 목적을 나타낸다(예: 토론, 작업 할당, 일시 중지 & 트리거).
- next_speaker: 응답할 것으로 예상되는 에이전트(들)의 identifier
이 구조에는 IoA의 다양한 기능을 효과적으로 지원하기 위한 다른 필드도 포함되어 있습니다. 메시지 프로토콜에 대한 자세한 설명과 예시는 부록 A.1에서 찾을 수 있다.
원활한 통신과 조정을 보장하기 위해 IoA의 클라이언트와 모두 메시지 프로토콜을 구현
클라이언트가 메시지를 보낼 때, 프로토콜에 따라 인코딩하여 서버로 전송
서버는 메시지를 파싱하고 헤더에서 관련 정보를 추출한 다음 group_id를 기반으로 적절한 그룹 채팅으로 routing
클라이언트가 메시지를 받으면 이를 디코딩하고 적절히 처리
5. COMPREHENSIVE MESSAGE PROTOCOL DESIGN
OPEN-ENDED INSTRUCTION 벤치마크 생성방법
GAIA
실험을 위해 react agent
Web Browser, Code Executor, YouTube Transcript Downloader, and Wikidata Searcher 를 사용
난이도가 3단계로
react agent 액티브