llama-agents 소개
llama-agents
는 멀티 에이전트 시스템(MAS, Multi-Agents System)을 구축, 개발 및 배포를 위한 비동기 프레임워크입니다. llama-agents
프레임워크를 사용하여 복잡한 에이전트 기반 시스템을 간단하게 구축할 수 있으며, 멀티 에이전트들 간의 통신, 분산 도구 실행, 인간 개입 등을 포함한 다양한 기능을 제공하여 개발자들이 보다 효율적으로 작업을 수행할 수 있도록 돕습니다.
llama-agents
는 각 에이전트를 끝없이 들어오는 작업을 처리하는 각각의 서비스(service)
로 간주합니다. 각 에이전트는 메시지 큐(message queue)
에서 처리할 메시지를 가져오거나 집어넣습니다. 이러한 시스템의 최상단에는 컨트롤 플레인(control plane)
이 있습니다. 컨트롤 플레인
은 진행 중인 작업을 추적하고, 네트워크에 있는 서비스를 관리하며, 오케스트레이터(orchestrator)
를 사용하여 다음 작업을 처리할 서비스를 결정합니다.
llama-agents
와 비슷한 다른 프레임워크로는 Ray
와 Celery
가 있습니다. 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 디렉토리에는 아래와 같은 다양한 예제들이 포함되어 있습니다:
- Agentic RAG + Tool Service
- Agentic Orchestrator w/ Local Launcher
- Agentic Orchestrator w/ Server Launcher
- Agentic Orchestrator w/ Human in the Loop
- Agentic Orchestrator w/ Tool Service
- Pipeline Orchestrator w/ Local Launcher
- Pipeline Orchestrator w/ Human in the Loop
- Pipeline Orchestrator w/ Agent Server As Tool
- Pipeline Orchestrator w/ Query Rewrite RAG
라이선스
이 프로젝트는 MIT License로 공개 및 배포되고 있습니다.
llama-agents GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~