티스토리 뷰

openai swarm

Swarm Note Github
https://github.com/lee-lou2/swarm

 

최근 OpenAI는 멀티 에이전트 오케스트레이션을 탐구하기 위한 실험적인 프레임워크인 Swarm을 공개했습니다. Swarm은 다수의 에이전트를 조정하고 협력하게 하는 데 중점을 둔 교육용 프레임워크로, 개발자들이 보다 가벼운 방식으로 에이전트를 제어하고 테스트할 수 있도록 돕습니다. 이 글에서는 Swarm의 주요 개념과 설치 방법, 그리고 활용 예제를 소개합니다.

 

Swarm이란 무엇인가?

Swarm은 멀티 에이전트 오케스트레이션의 패턴을 탐구하기 위해 만들어진 프레임워크입니다. OpenAI는 이 프로젝트를 통해 에이전트 간의 handoff(전달)routines(루틴) 패턴을 실험하고자 했으며, 이는 Orchestrating Agents: Handoffs & Routines이라는 자료를 바탕으로 설계되었습니다. Swarm은 상업적 또는 대규모 운영을 위한 것이 아닌 교육용 도구로, 공식적인 지원은 제공되지 않습니다.

 

왜 Swarm을 사용할까?

Swarm은 독립적인 기능과 명령을 가진 다수의 에이전트를 다루는 복잡한 상황에 적합합니다. 예를 들어, 모든 기능을 하나의 프롬프트에 통합하기 어려운 경우, Swarm의 가벼운 구조와 확장 가능한 설계가 큰 도움이 될 수 있습니다. Swarm은 상태를 저장하지 않는 클라이언트 기반 모델로, 매 호출마다 새로운 상태로 시작합니다. 이 점에서 OpenAI의 Chat Completions API와 유사하지만, 더 많은 기능을 제공하고 에이전트 간의 상호작용을 쉽게 테스트할 수 있습니다.

 

설치 방법

Swarm을 사용하려면 Python 3.10 이상의 버전이 필요합니다. 다음 명령어를 사용해 Swarm을 설치할 수 있습니다:

pip install git+https://github.com/openai/swarm.git

또는 SSH를 사용할 경우:

pip install git+ssh://git@github.com/openai/swarm.git

 

Swarm의 주요 개념

Swarm의 설계는 두 가지 주요 개념을 중심으로 이루어집니다:

  1. 에이전트(Agent): 에이전트는 각자의 명령(instructions)과 도구(toolset)를 가진 독립적인 개체입니다. 사용자 요청에 응답하거나, Python 함수를 호출하고, 다른 에이전트로 작업을 넘길 수 있습니다.
  2. Handoff(전달): 에이전트가 다른 에이전트에게 작업을 넘기는 방식입니다. 이를 통해 여러 에이전트가 협력하여 하나의 복잡한 작업을 수행할 수 있습니다. 예를 들어, 사용자 질문에 대한 초기 응답을 처리하는 에이전트가 특정 질문을 전문적으로 처리할 수 있는 에이전트에게 작업을 넘길 수 있습니다.

 

Swarm 사용 예제

다음은 Swarm의 간단한 사용 예제입니다. 이 코드에서는 두 개의 에이전트 agent_aagent_b가 서로 상호작용하며, agent_aagent_b에게 작업을 넘깁니다:

from swarm import Swarm, Agent

client = Swarm()

# 에이전트 정의
agent_a = Agent(
    name="Agent A",
    instructions="You are a helpful agent.",
    functions=[lambda: agent_b]  # agent_b로 작업을 넘기는 함수
)

agent_b = Agent(
    name="Agent B",
    instructions="Only speak in Haikus.",
)

# 에이전트 실행
response = client.run(
    agent=agent_a,
    messages=[{"role": "user", "content": "I want to talk to agent B."}],
)

print(response.messages[-1]["content"])

위 예제에서 agent_a는 사용자의 요청을 받고 agent_b에게 전달합니다. agent_b는 하이쿠 형태로 응답을 제공합니다. 이와 같은 구조는 Swarm의 handoff 기능을 활용하여 에이전트 간의 유연한 상호작용을 보여줍니다.

 

Swarm의 고급 기능

Swarm은 다음과 같은 다양한 고급 기능들을 제공합니다:

  • 커스텀 함수 호출: 에이전트는 Python 함수를 직접 호출할 수 있어, 동적인 응답과 복잡한 데이터 처리에 활용할 수 있습니다.
  • 컨텍스트 변수: 에이전트가 사용자 이름과 같은 추가적인 정보를 활용하여 더 개인화된 상호작용을 제공할 수 있습니다.
  • 스트리밍 지원: Swarm은 실시간 응답을 스트리밍 방식으로 제공할 수 있어, 실시간 애플리케이션에 적합합니다.
  • 디버깅 및 평가: 내장된 디버깅 기능과 평가 도구를 통해 에이전트의 동작을 쉽게 테스트하고 개선할 수 있습니다.

 

활용 사례

Swarm을 사용하여 다양한 예제를 구현할 수 있습니다. Swarm의 GitHub 저장소의 /examples 디렉토리에는 다음과 같은 예제가 포함되어 있습니다:

  • 기본 설정: 에이전트 생성, 함수 호출, 컨텍스트 변수 설정 등 Swarm의 기본 개념을 다루는 예제.
  • Triage Agent: 초기 단계에서 적절한 에이전트로 작업을 넘기는 기본적인 triage 설정.
  • Weather Agent: 날씨 정보를 가져오는 간단한 예제.
  • Airline Customer Service: 항공사 고객 서비스를 처리하는 복잡한 에이전트 구조.
  • Support Bot: 사용자 인터페이스 에이전트와 여러 도구를 사용하는 헬프 센터 에이전트로 구성된 고객 서비스 봇.
  • Personal Shopper: 구매 및 환불을 돕는 개인 쇼핑 에이전트.

 

Swarm의 한계

Swarm은 실험적 프레임워크로, 아직 상업적 또는 대규모 프로젝트에 사용하기에는 적합하지 않습니다. OpenAI는 Swarm에 대한 이슈나 PR을 공식적으로 지원하지 않으며, 개발자들이 학습 목적으로 Swarm을 사용하길 권장합니다. 따라서 Swarm을 사용할 때는 이를 학습 도구로 생각하고, 실제 프로젝트에는 사용하지 않는 것이 좋습니다.

 

마무리

Swarm은 멀티 에이전트 시스템에 대해 직접적인 학습을 원하는 개발자에게 매우 유용한 도구입니다. 가벼우면서도 유연한 구조를 통해 복잡한 에이전트 간의 상호작용을 쉽게 테스트할 수 있습니다. Swarm을 설치하고 다양한 예제를 통해 자신의 멀티 에이전트 시스템을 구축해보세요. 이 과정에서 에이전트 오케스트레이션의 새로운 가능성을 발견할 수 있을 것입니다!

Swarm은 그 자체로 완성된 솔루션은 아니지만, 멀티 에이전트 시스템의 개념을 이해하고 적용하는 데 좋은 출발점이 될 수 있습니다.

 

OpenAI Swarm 공식 Github
https://github.com/openai/swarm