llama-agents, 멀티 에이전트 시스템 구축을 위한 비동기 프레임워크(async framework)

llama-agents 소개

llama-agents는 멀티 에이전트 시스템(MAS, Multi-Agents System)을 구축, 개발 및 배포를 위한 비동기 프레임워크입니다. llama-agents 프레임워크를 사용하여 복잡한 에이전트 기반 시스템을 간단하게 구축할 수 있으며, 멀티 에이전트들 간의 통신, 분산 도구 실행, 인간 개입 등을 포함한 다양한 기능을 제공하여 개발자들이 보다 효율적으로 작업을 수행할 수 있도록 돕습니다.

llama-agents는 각 에이전트를 끝없이 들어오는 작업을 처리하는 각각의 서비스(service)로 간주합니다. 각 에이전트는 메시지 큐(message queue)에서 처리할 메시지를 가져오거나 집어넣습니다. 이러한 시스템의 최상단에는 컨트롤 플레인(control plane)이 있습니다. 컨트롤 플레인은 진행 중인 작업을 추적하고, 네트워크에 있는 서비스를 관리하며, 오케스트레이터(orchestrator)를 사용하여 다음 작업을 처리할 서비스를 결정합니다.

llama-agents와 비슷한 다른 프레임워크로는 RayCelery가 있습니다. Ray는 분산 컴퓨팅을 위한 파이썬 기반 프레임워크로, 대규모 병렬 및 분산 애플리케이션을 쉽게 구축할 수 있습니다. Celery는 비동기 작업 큐를 지원하는 분산 시스템으로, 주로 백그라운드 작업 처리에 사용됩니다. llama-agents는 이들과 달리 멀티 에이전트 시스템에 특화되어 있으며, 에이전트 간의 통신과 분산 도구 실행에 중점을 둡니다.

주요 기능

  • 비동기 처리: llama-agents는 비동기 우선 프레임워크로, 높은 처리량과 확장성을 제공합니다.

  • 멀티 에이전트 시스템: 각 에이전트를 서비스로 간주하며, 메시지 큐를 통해 에이전트 간의 통신을 지원합니다.

  • 제어 평면(control plane): 진행 중인 작업을 추적하고, 작업의 다음 단계를 처리할 서비스를 결정합니다.

  • 오케스트레이터(orchestrator): 작업을 처리할 서비스를 결정하고, 서비스로부터 결과를 받아 처리합니다.

llama-agents 설치 및 사용법

설치

llama-agents 프레임워크는 llama-index-core를 주로 사용하며, 설치는 간단합니다. 다음 명령어를 통해 설치할 수 있습니다:

pip install llama-agents

또한, llama-index-agent-openai 패키지도 필요합니다:

pip install llama-index-agent-openai

사용 방법

llama-agents는 Python 기반으로 동작합니다. 다음은 간단한 멀티 에이전트 시스템을 설정하는 예제입니다. 각 에이전트는 메시지 큐를 통해 통신하며, 제어 평면(control plane)이 작업을 관리합니다:

from llama_agents import (
    AgentService,
    AgentOrchestrator,
    ControlPlaneServer,
    SimpleMessageQueue,
)
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool
from llama_index.llms.openai import OpenAI

def get_the_secret_fact() -> str:
    """Returns the secret fact."""
    return "The secret fact is: A baby llama is called a 'Cria'."

tool = FunctionTool.from_defaults(fn=get_the_secret_fact)
agent1 = ReActAgent.from_tools([tool], llm=OpenAI())
agent2 = ReActAgent.from_tools([], llm=OpenAI())

message_queue = SimpleMessageQueue(port=8000)
control_plane = ControlPlaneServer(
    message_queue=message_queue,
    orchestrator=AgentOrchestrator(llm=OpenAI(model="gpt-4-turbo")),
    port=8001,
)
agent_server_1 = AgentService(
    agent=agent1,
    message_queue=message_queue,
    description="Useful for getting the secret fact.",
    service_name="secret_fact_agent",
    port=8002,
)
agent_server_2 = AgentService(
    agent=agent2,
    message_queue=message_queue,
    description="Useful for getting random dumb facts.",
    service_name="dumb_fact_agent",
    port=8003,
)

예제 코드

GitHub 저장소의 examples 디렉토리에는 아래와 같은 다양한 예제들이 포함되어 있습니다:

라이선스

이 프로젝트는 MIT License로 공개 및 배포되고 있습니다.

:github: llama-agents GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: