Home
Login

OpenAI에서 개발한 경량 멀티 에이전트 오케스트레이션 교육 프레임워크로, 에이전트 조정 및 실행에 중점을 둡니다.

MITPython 20.0kopenaiswarm Last Updated: 2025-03-11

OpenAI Swarm - 다중 에이전트 오케스트레이션 프레임워크 상세 소개

프로젝트 개요

OpenAI Swarm은 인체 공학적인 경량 다중 에이전트 오케스트레이션을 탐구하기 위한 교육용 프레임워크입니다. 이 프로젝트는 OpenAI 솔루션 팀에서 관리하며, 개발자에게 간단하고 유연하며 제어 가능한 다중 에이전트 시스템 구축 도구를 제공하는 것을 목표로 합니다.

중요 업데이트: Swarm은 현재 Swarm의 프로덕션 준비 버전인 OpenAI Agents SDK로 대체되었습니다. OpenAI 팀은 모든 프로덕션 사용 사례를 Agents SDK로 마이그레이션할 것을 권장합니다.

핵심 기능

1. 디자인 철학

  • 경량: 단순성과 사용 편의성에 집중
  • 높은 제어 가능성: 정확한 에이전트 제어 메커니즘 제공
  • 쉬운 테스트: 간단한 테스트 및 디버깅 프로세스 지원
  • 교육 지향: 다중 에이전트 오케스트레이션 학습을 위한 교육 자료

2. 핵심 추상 개념

Swarm은 두 가지 핵심 추상 개념을 통해 에이전트 조정을 구현합니다.

Agent (에이전트)

  • 명령어(instructions)와 도구(tools)를 포함
  • 언제든지 대화를 다른 에이전트에게 넘길 수 있음
  • 동적 명령어 및 컨텍스트 변수 지원

Handoffs (인계)

  • 에이전트 간의 원활한 전환 메커니즘
  • 복잡한 에이전트 네트워크 및 워크플로우 지원
  • 대화 연속성 유지

설치 및 기본 사용법

시스템 요구 사항

  • Python 3.10+

설치 방법

pip install git+ssh://git@github.com/openai/swarm.git
# 또는
pip install git+https://github.com/openai/swarm.git

기본 예제

from swarm import Swarm, Agent

client = Swarm()

def transfer_to_agent_b():
    return agent_b

agent_a = Agent(
    name="Agent A",
    instructions="You are a helpful agent.",
    functions=[transfer_to_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"])

출력 예시:

Hope glimmers brightly,
New paths converge gracefully,
What can I assist?

기술 아키텍처

클라이언트 실행 메커니즘

Swarm의 client.run() 함수는 다음 루프를 구현합니다.

  1. 현재 에이전트에서 완료 응답 가져오기
  2. 도구 호출 실행 및 결과 추가
  3. 필요한 경우 에이전트 전환
  4. 컨텍스트 변수 업데이트
  5. 새로운 함수 호출이 없으면 결과 반환

파라미터 설정

파라미터 타입 설명 기본값
agent Agent 호출할 (초기) 에이전트 (필수)
messages List 메시지 객체 목록 (필수)
context_variables dict 컨텍스트 변수 {}
max_turns int 최대 턴 수 float("inf")
model_override str 모델 오버라이드 None
execute_tools bool 도구 실행 여부 True
stream bool 스트리밍 응답 활성화 여부 False
debug bool 디버그 로그 활성화 여부 False

에이전트 설정

Agent 클래스 필드

필드 타입 설명 기본값
name str 에이전트 이름 "Agent"
model str 사용할 모델 "gpt-4o"
instructions str 또는 함수 에이전트 명령어 "You are a helpful agent."
functions List 호출 가능한 함수 목록 []
tool_choice str 도구 선택 전략 None

동적 명령어 예제

def instructions(context_variables):
    user_name = context_variables["user_name"]
    return f"Help the user, {user_name}, do whatever they want."

agent = Agent(instructions=instructions)

response = client.run(
    agent=agent,
    messages=[{"role":"user", "content": "Hi!"}],
    context_variables={"user_name":"John"}
)

함수 호출 메커니즘

기본 함수 호출

def greet(context_variables, language):
    user_name = context_variables["user_name"]
    greeting = "Hola" if language.lower() == "spanish" else "Hello"
    print(f"{greeting}, {user_name}!")
    return "Done"

agent = Agent(functions=[greet])

에이전트 인계

sales_agent = Agent(name="Sales Agent")

def transfer_to_sales():
    return sales_agent

agent = Agent(functions=[transfer_to_sales])

복잡한 결과 반환

def talk_to_sales():
    print("Hello, World!")
    return Result(
        value="Done",
        agent=sales_agent,
        context_variables={"department": "sales"}
    )

예제 프로젝트

Swarm은 다양한 응용 시나리오를 보여주는 여러 예제 프로젝트를 제공합니다.

1. basic - 기본 예제

설정, 함수 호출, 인계 및 컨텍스트 변수의 기본 사용법을 보여줍니다.

2. triage_agent - 분류 에이전트

요청을 적절한 에이전트에게 전달하는 간단한 분류 설정

3. weather_agent - 날씨 에이전트

함수 호출의 간단한 예시를 보여줍니다.

4. airline - 항공 고객 서비스

항공사의 다양한 유형의 고객 서비스 요청을 처리하는 다중 에이전트 설정

5. support_bot - 지원 봇

사용자 인터페이스 에이전트와 다양한 도구를 갖춘 도움말 센터 에이전트 포함

6. personal_shopper - 개인 쇼핑 도우미

판매 및 환불 주문 처리를 돕는 개인 쇼핑 에이전트

스트리밍 처리

Swarm은 Chat Completions API와 동일한 이벤트를 사용하여 스트리밍 응답을 지원합니다.

stream = client.run(agent, messages, stream=True)
for chunk in stream:
    print(chunk)

새로운 이벤트 타입:

  • {"delim":"start"}{"delim":"end"} - 에이전트가 단일 메시지 처리를 시작하고 종료함을 표시
  • {"response": Response} - 스트림 종료 시 전체 Response 객체 반환

테스트 및 평가

개발 테스트

run_demo_loop를 사용하여 명령줄 테스트를 수행합니다.

from swarm.repl import run_demo_loop

run_demo_loop(agent, stream=True)

평가 권장 사항

  • 프로젝트는 개발자가 자체 평가 도구를 가져오는 것을 권장합니다.
  • airline, weather_agent 및 triage_agent 예제에서 평가 참조를 제공합니다.
  • 사용자 정의 성능 테스트 지표 지원

다른 OpenAI 제품과의 차이점

Assistants API와의 비교

  • Assistants API: 완전히 관리되는 스레드 및 내장 메모리 관리 제공
  • Swarm: 완전히 클라이언트 측에서 실행되며, 상태 비저장 설계로 학습 및 실험에 더 적합

기술적 특징

  • Chat Completions API 기반으로 구축
  • 호출 간에 상태를 저장하지 않음
  • 경량 클라이언트 구현
  • 교육 및 학습 목적에 집중

적용 가능한 시나리오

Swarm은 특히 다음과 같은 경우에 적합합니다.

  • 많은 독립적인 기능과 명령어를 처리해야 하는 시나리오
  • 단일 프롬프트로 코딩하기 어려운 복잡한 작업
  • 다중 에이전트 오케스트레이션 개념 학습
  • 빠른 프로토타입 개발 및 실험

프로젝트 상태

주의: Swarm은 OpenAI Agents SDK로 대체되었지만, 여전히 다중 에이전트 시스템의 기본 개념과 구현 방법을 이해하는 데 도움이 되는 훌륭한 교육 자료입니다. 프로덕션 환경에서는 공식 Agents SDK로 마이그레이션하는 것이 좋습니다.

요약

OpenAI Swarm은 다중 에이전트 시스템의 학습 및 개발을 위한 간결하고 강력한 프레임워크를 제공합니다. 에이전트와 인계라는 두 가지 핵심 개념을 통해 개발자는 코드의 가독성과 유지 관리성을 유지하면서 복잡한 AI 워크플로우를 구축할 수 있습니다. 새로운 SDK로 대체되었지만, 그 디자인 철학과 교육적 가치는 여전히 중요합니다.

Star History Chart