카테고리 없음

Internet of Agents 논문 리뷰 - 2024 / 7 / 9

jinuklee 2024. 7. 12. 00:46

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) 사이에서 동적으로 전환한다.

클라이언트- 서버 아키텍쳐형태의 프레임워크

app.py

서버( 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 - 인증, 권한 등 시스템 보안 실행

serve_config yaml


클라이언트( wrapper, communication functionalities)

 

client/main.py

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 처리

클라이언트 defaullt config yaml

 

메커니즘 

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는 모든 그룹 채팅의 공간)

Nested team 구조 예시

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

그림 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단계로

gaia 벤치마크 데이터셋에 대한 답변 생성

 

 

react agent 액티브