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://[email protected]/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() 함수는 다음 루프를 구현합니다.
- 현재 에이전트에서 완료 응답 가져오기
- 도구 호출 실행 및 결과 추가
- 필요한 경우 에이전트 전환
- 컨텍스트 변수 업데이트
- 새로운 함수 호출이 없으면 결과 반환
파라미터 설정
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
| 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로 대체되었지만, 그 디자인 철학과 교육적 가치는 여전히 중요합니다.