agent/multi - agent

agentscope 논문리뷰 (A Flexible yet Robust Multi-Agent Platform)

jinuklee 2024. 8. 7. 22:38

가장 중요한점

https://arxiv.org/pdf/2402.14034

https://github.com/modelscope/agentscope

 

GitHub - modelscope/agentscope: Start building LLM-empowered multi-agent applications in an easier way.

Start building LLM-empowered multi-agent applications in an easier way. - modelscope/agentscope

github.com

 

following aspects feature the challenge

1) Agents involved in a multi-agent application can specialize at different functions via different initial configurations;

다중 에이전트 응용 프로그램에서 에이전트들은 서로 다른 초기 구성 설정을 통해 다양한 기능을 전문화할 수 있습니다

 

2) A multi-agent application may require agents to be executed in a standardized operating procedure (SOP) or a more dynamic workflow;

다중 에이전트 응용 프로그램은 에이전트들이 표준화된 운영 절차(SOP) 또는 더 동적인 워크플로우에서 실행될 것을 요구할 수 있습니다.

 

3)The communication pattern between agents can be varying from one-to-one or broadcasting (e.g., a discussion group of agents)

에이전트 간의 대화 패턴은 일대일 대화부터 브로드캐스팅(예: 에이전트 토론 그룹)까지 다양할 수 있습니다.

As a result, developers expect a handy platform that can provide concise and clear programming patterns when taking care of all the aspects above, accelerating and facilitating the development cycle.

그 결과, 개발자들은 위의 모든 측면을 처리하면서 명료하고 간결한 프로그래밍 패턴을 제공할 수 있는 편리한 플랫폼을 기대하며, 이를 통해 개발 주기를 가속화하고 용이하게 만들기를 원합니다.

 
 

2. Overview

[Message]

구성요소

mandatory fields (name 어떤 에이젼트가 메시지를 생성하는가 and content 에이젼트에 의해 생성된 메시지)

optional field (url 이미지와 비디오 같은 멀티모달 데이터와 연결됨)

[Agent]

인터페이스

reply function - input을 받아 response 생성

observe function - reply 생성없이 incoming 메시지 처리

[Workflow]

ordered sequences of agent executions and message exchanges between agents

에이젼트간의 execution, 메시지 교환의 정렬된 시퀸스

 

[Service Functions and Tools]

Service functions = functional APIs that return a formatted output ServiceResponse

tools = processed services functions with functionality descriptions and necessary input parameters prepared

아키텍쳐

3개의 계층적 레이어

 

Utility Layer: AgentScope의 플랫폼 기초로서 유틸리티 계층은 에이전트의 핵심 기능을 지원하기 위해 필수 서비스를 제공합니다. 이 계층은 모델 API 호출 및 코드 실행과 데이터베이스 작업과 같은 서비스 기능을 포함하여 기본 작업의 복잡성을 추상화하여 에이전트가 주요 작업에 집중할 수 있게 합니다. AgentScope의 유틸리티 계층은 사용의 용이성과 강력함을 최우선으로 설계되어 있으며, 다중 에이전트 시스템에서 다양한 작업을 지원하고 예기치 않은 중단에 대비해 내장된 자율 재시도 메커니즘을 제공합니다.

 

Manager and Wrapper Layer: 중간 계층인 관리자 및 래퍼 추상화 계층은 자원을 관리하고 API 서비스를 조율하여 자원의 높은 가용성을 보장하며 LLM의 원치 않는 응답에 저항력을 제공합니다. 유틸리티 계층이 기본 핸들러를 제공하는 반면, 관리자 및 래퍼 계층은 개발자의 필요와 애플리케이션의 특정 요구 사항에 따라 맞춤형 인터페이스를 제공하며, 오류 허용 제어를 담당합니다. 이 계층은 에이전트의 운영 무결성을 유지하는 책임이 있으며, 이는 LLM이 다양한 조건에서 일관되게 성능을 발휘하는 데 중요한 요소입니다. 오류 허용 메커니즘에 대한 자세한 설명은 섹션 4에서 제공됩니다.

 

Agent Layer: AgentScope의 핵심은 에이전트 추상화 계층으로, 이는 다중 에이전트 워크플로우의 중추를 이루며 상호 작용과 커뮤니케이션의 주요 엔티티입니다. 이 계층은 복잡한 워크플로우의 구축을 용이하게 하고 사용성을 향상시키며, 개발자의 프로그래밍 부담을 줄입니다. AgentScope는 간소화된 문법과 도구를 통합하여 개발자들이 LLM의 기능을 활용한 에이전트 기반 애플리케이션의 구현 및 최적화에 집중할 수 있도록 지원합니다. 프로그래밍 기능과 문법 sugar에 대한 자세한 내용은 섹션 3에서 소개됩니다.

 

User interaction: 계층화된 아키텍처 외에도 AgentScope는 기본 정보를 제공하는 주석이 달린 터미널, 시스템을 모니터링하는 웹 UI, 명령줄 애플리케이션을 그래픽 인터페이스로 변환할 수 있는 Gradio 기반 인터페이스(Abid et al., 2019), 그리고 drag-and-drop zero-code 프로그래밍 workstation (그림 4)과 같은 다중 에이전트 지향 인터페이스를 제공합니다. 이러한 인터페이스를 통해 개발자는 에이전트 커뮤니케이션, 실행 타이밍, 재무 비용 등을 포함한 애플리케이션의 상태와 지표를 손쉽게 모니터링할 수 있습니다.

3.1 Syntactic Sugar for Multi-Agent Workflows

복잡성을 추상화하고 반복을 최소화하기 위함 == 개발자들 편하라고 하는거

Pipeline Abstraction

메시지 전송 패턴(순차적, 조건부, 반복적 교환 등)을 캡슐화하여 반복적인 코딩을 줄여주는 방식

이를 통해 개발자는 에이전트 상호작용의 로직에 집중할 수 있으며, boilerplate 코드는 줄일 수 있다.

예제 4는 파이프라인을 함수형과 객체지향 스타일 모두에서 어떻게 사용할 수 있는지 보여주며, 명확하고 간결한 에이전트 워크플로우를 생성하는 방법을 설명

순차적 파이프라인 외에도, AgentScope는 if-else, switch, while-loop, for-loop 파이프라인을 제공하여 다중 에이전트 상호작용 프로그래밍을 용이하게 한다

Message Hub for Agent Communication

에이젼트 그룹의 상호작용을 간단하게하는 broadcast 메커니즘을 message hub(참여할 agent를 결정하믕로 initiate)가 제공

에이젼트에 의해 메시지가 생성되면, 자동으로 그 메시지가 다른 agent들에게 disseminated

This abstraction is particularly useful for multi-agent scenarios involving LLMs, where dynamic and contextually rich conversations are commonly observed

 

3.2 Resource-Rich Environment for Agent Development

Agentscope는 rich set of built-in resources, including services, dedicated agents, and pre-configured examples를 구비하고 있다. 이는 초기 세팅이나 배포,빠른 prototyping을 쉽게 만든다

 

Comprehensive Service Integration

에이젼트의 tool 활용 능력을 키우기 위해 web search, database querying,  code execution과 같은 서비스 function를 통합

외부 지식 소스나 LLM의 internal knowledge 외의 정보를 draw해야 하는 경우가 많은 agent에게 필수적

 

Example 6 showcases the seamless conversion of a service into an OpenAI-Compatible JSON format, simplifying the integration process for developers.

 

pre-built 에이젼트 템플릿

3.3 Multi-Agent Oriented Demonstration Interfaces

Agent Differentiation in User Interfaces

 

 

 

각 agent에 특별한 색상과 아이콘을 부여

시스템에서의 nuanced interactions을 mirror

 

Monitoring and Cost Management

모델과 API 사용량을 추적할수 있는 모듈을 통해 cost를 계산하고 특정 threshold를 넘기면 automatic alert

 

AgentScope Gradio Interface

인터페이스는 그라디오 사용

 

3.4 Towards Graphical Application Development

Expressing Multi-agent application with nodes in directed acyclic graph (DAG)

 

3.5 Automatic Prompt Tuning

Example 7: Initialize a programmer agent with automatic system prompt generation.
Example 8: Enable in-context learning when creating an agent. demonstration 로드

4 Fault-Tolerant Mechanisms

 

 Accessibility errors

네트워크 상태나 모델의 instability등에 의한 에러

ex) 모델api가 timeout 에러(트래픽 때문에), remote machine의 데이터베이스가 일시적인 네트워크 장애로 인해 접근 불가

 

Rule-resolvable errors

많은 multi agent application이 서비스나 에이전트 간의 정보 교환을 요구하므로, 이러한 통신을 위한 프로토콜을 준수하는 것이 필수적이다. 예를 들어 JSON 형식으로 응답을 요구할 때, LLM의 응답이 예상된 형식을 따르지 않을 수 있다.

ex) LLM의 응답에 끝에 오른쪽 괄호가 빠져 있어 parsing failure가 발생할 수 있다

 

Model-resolvable errors

LLM의 응답이 예상된 형식에 맞지만, 내용에 문제(예: s argument errors, semantic errors, or programming mistakes )가 있을 수 있다. 이러한 오류는 LLM과의 추가 상호작용을 통해 탐지가능하고 recover가능하다

 

Unresolvable errors

탐지가 불가능하고 해결도 가능하지 않은 오류

ex) API key of an LLM is expired or unauthorized

이는 사람의 개입 없이 resolve할 수 없다

 

Basic auto-retry mechanisms:

accesibility 문제를 해결하기 위해 AgentScope’s API services and model wrappers는 retry 로직이 존재하는데 최대 맥시멈 try 횟수를 정하면 에이젼트는 sporadic 때떄로 일어나는 distruption에서 회복가능하다

 

Rule-based correction tools:

LLM의 응답에서 생기는 easy-to-fix format errors를 효율적으로 다룬다

ex) AgentScope에서 일치하지 않는(닫히지 않은 complete unmatchable brace) 괄호를 완성하고 문자열에서 JSON 데이터를 추출할 수 있는 default rule 세트를 설정한다. 이러한 규칙 기반 수정 도구는 LLM API를 다시 호출하지 않고도 일반적인 rule-resolvable errors 를 수정할 수 있으며, 이는 처리 시간을 단축시키고 LLM API 호출 비용을 절감할 수 있다

 

Customizable fault handlers:

AgentScope는 개발자들이 LLM의 응답을 분석하고 예기치 않은 출력을 처리하는 방식을 정의할 수 있는 유연한 오류 처리 가능한 인터페이스를 model wrapper에 통합하고 있다.

 

애플리케이션 개발자는 LLM을 호출(invoke)할 때 구문 분석 함수, 오류 처리 함수, 그리고 LLM에 주어진 chance를 설정하는 configure 가능한 매개변수(parse_func, fault_handler, max_retries)를 제공

a parsing function, fault handling function, and the number of chances given to LLMs through configurable parameters (i.e., parse_func and fault_handler and max_retries)  하여 자신의 오류 처리 메커니즘을 구성할 수 있다. 이러한 개발자 친화적인 설계를 통해, AgentScope는 rule 오류 (when the build-in rules fail to handle) 와 단일 에이전트가 감지하고 처리할 수 있는 일부 모델 해결 오류(예: 쓸데없는 verbose summary을 더 간결한 형태로 축약)에도 적절히 대응할 수 있다

 

Agent-level fault handling:

더 좋은 LLM, 에이젼트 레벨의 interaction을 필요로하는 오류

factual inaccuracy, logical inconsistency, contextual incoherence, unreasonable inference, and inappropriate vocabulary usage와 같은 LLM의 syntatic 오류는 시스템의 기존 검증 과정에서 즉각적인 경고 신호를 유발하지 않을 수 있다. 개발자는 AgentScope의 에이전트 기능(예: 메모리 모듈 및 메시지 허브)을 활용하여 self-critique, pairwise critique, human-augmented critique 과 같은 의미적 오류 검사를 수행가능하다

 

Logging system:

unresolvable error는 시스템에서 처리하기 어렵지만, AgentScope는 개발자들이 다중 에이전트 애플리케이션에서 문제를 신속하게 모니터링하고 식별할 수 있도록 개선된 로깅 시스템을 제공한다. AgentScope의 로깅 시스템은 에이전트 간의 대화를 기록하는 CHAT이라는 로깅 level 추가, 다양한 실행 정보를 포함한 형식화된 로그 제공, 모니터링을 용이하게 하는 WebUI 사용자 인터페이스와 같은 다중 에이전트 애플리케이션 시나리오에 맞춘 맞춤형 기능을 갖추고 있다.

5 Multi-Modal Applications

 

 

6 Tool Usage