티스토리 뷰
Swarm Note Github
https://github.com/lee-lou2/swarm
안녕하세요! 오늘은 OpenAI의 Swarm을 사용하여 기본적인 멀티 에이전트 오케스트레이션을 설정하는 방법을 소개합니다. Swarm은 여러 에이전트가 서로의 역할을 바꿔가며 작업을 수행하도록 돕는 가벼운 프레임워크입니다. 이번 포스팅에서는 Swarm의 기본적인 사용법과 함께, 몇 가지 간단한 예시를 통해 각 기능을 자세히 살펴보겠습니다.
Swarm 설치 및 기본 설정
Swarm을 설치하려면 Python 3.10 이상이 필요합니다. 설치는 아래 명령어를 통해 진행할 수 있습니다:
pip install git+https://github.com/openai/swarm.git
설치가 완료되면 Swarm
과 Agent
클래스를 사용해 간단한 에이전트 기반 시스템을 구성할 수 있습니다.
기본 사용 예시
예시 1: 에이전트 간의 대화 이관 (Agent Handoff)
설명:
이 예시는 Swarm의 에이전트 이관 기능을 보여줍니다. english_agent
는 영어로만 대화할 수 있는 에이전트이고, spanish_agent
는 스페인어로만 대화할 수 있습니다. 만약 사용자가 스페인어로 말을 걸면, english_agent
는 대화를 spanish_agent
로 넘깁니다. 이처럼, 각 언어에 맞는 에이전트로 이관하는 방법을 통해 사용자 경험을 향상시킬 수 있습니다.
코드:
from swarm import Swarm, Agent
client = Swarm()
english_agent = Agent(
name="English Agent",
instructions="You only speak English.",
)
spanish_agent = Agent(
name="Spanish Agent",
instructions="You only speak Spanish.",
)
def transfer_to_spanish_agent():
"""Transfer Spanish-speaking users immediately."""
return spanish_agent
english_agent.functions.append(transfer_to_spanish_agent)
messages = [{"role": "user", "content": "Hola. ¿Como estás?"}]
response = client.run(agent=english_agent, messages=messages)
print(response.messages[-1]["content"])
상세 설명:
english_agent
와spanish_agent
를 각각 생성합니다. 이들은 각기 다른 언어로만 응답할 수 있도록 설정되어 있습니다.transfer_to_spanish_agent
함수는 사용자가 스페인어로 대화할 경우, 대화를spanish_agent
로 넘깁니다.messages
에는 사용자가 스페인어로 "Hola. ¿Como estás?"라고 말한 메시지가 담겨 있습니다.client.run()
이 실행되면english_agent
는 스페인어 메시지를 감지하고, 이를spanish_agent
로 이관하여 스페인어로 응답하게 합니다.
예시 2: 최소한의 에이전트 설정 (Bare Minimum)
설명:
이 예시는 Swarm에서 에이전트를 설정하고, 가장 간단한 형태의 사용자-에이전트 대화를 수행하는 방법을 보여줍니다. 에이전트는 사용자의 인사에 대한 기본 응답을 제공합니다. 이 예제는 Swarm을 처음 사용하는 사용자에게 적합합니다.
코드:
from swarm import Swarm, Agent
client = Swarm()
agent = Agent(
name="Agent",
instructions="You are a helpful agent.",
)
messages = [{"role": "user", "content": "Hi!"}]
response = client.run(agent=agent, messages=messages)
print(response.messages[-1]["content"])
상세 설명:
agent
라는 이름의 에이전트를 생성하고, "You are a helpful agent."라는 지시 사항을 부여합니다.- 사용자가 "Hi!"라고 인사하면, 에이전트는
client.run()
을 통해 이 메시지를 처리하고 응답을 생성합니다. response.messages[-1]["content"]
를 통해 에이전트의 응답을 출력할 수 있습니다.
예시 3: 컨텍스트 변수 사용 (Context Variables)
설명:
Swarm의 강력한 기능 중 하나는 컨텍스트 변수를 사용해 에이전트의 응답을 사용자 맞춤형으로 만드는 것입니다. 이 예시에서는 사용자의 이름과 ID를 참조하여 에이전트가 사용자에게 개인화된 인사와 계정 정보를 제공합니다.
코드:
from swarm import Swarm, Agent
client = Swarm()
def instructions(context_variables):
name = context_variables.get("name", "User")
return f"You are a helpful agent. Greet the user by name ({name})."
def print_account_details(context_variables: dict):
user_id = context_variables.get("user_id", None)
name = context_variables.get("name", None)
print(f"Account Details: {name} {user_id}")
return "Success"
agent = Agent(
name="Agent",
instructions=instructions,
functions=[print_account_details],
)
context_variables = {"name": "James", "user_id": 123}
response = client.run(
messages=[{"role": "user", "content": "Hi!"}],
agent=agent,
context_variables=context_variables,
)
print(response.messages[-1]["content"])
response = client.run(
messages=[{"role": "user", "content": "Print my account details!"}],
agent=agent,
context_variables=context_variables,
)
print(response.messages[-1]["content"])
상세 설명:
instructions
함수는context_variables
에서 사용자의 이름을 받아 사용자 맞춤형 인사말을 생성합니다.print_account_details
함수는 사용자의 이름과 ID를 출력하는 기능을 합니다.context_variables
에 사용자 정보가 담겨 있고, 이를 에이전트가 사용하여 인사말과 계정 정보를 제공합니다.
예시 4: 함수 호출 (Function Calling)
설명:
Swarm의 에이전트는 Python 함수를 호출하여 특정 작업을 수행할 수 있습니다. 이 예시는 사용자가 특정 위치의 날씨 정보를 요청할 때, 에이전트가 get_weather
함수를 호출하여 해당 정보를 반환하는 방법을 보여줍니다.
코드:
from swarm import Swarm, Agent
client = Swarm()
def get_weather(location) -> str:
return "{'temp':67, 'unit':'F'}"
agent = Agent(
name="Agent",
instructions="You are a helpful agent.",
functions=[get_weather],
)
messages = [{"role": "user", "content": "What's the weather in NYC?"}]
response = client.run(agent=agent, messages=messages)
print(response.messages[-1]["content"])
상세 설명:
get_weather
함수는 특정 위치의 날씨 정보를 문자열로 반환합니다.agent
는 이 함수를 호출할 수 있도록 설정되어 있으며, 사용자가 날씨를 물어보면 해당 정보를 반환합니다.- 이 예시는 에이전트가 외부 함수 호출을 통해 데이터를 제공하는 방법을 보여줍니다.
예시 5: 반복 인터랙션 루프 (Simple Loop without Helpers)
설명:
이 예시는 사용자가 에이전트와 지속적으로 대화할 수 있는 루프 구조를 설정합니다. 사용자가 메시지를 입력하면, 에이전트는 응답을 생성하고 이를 출력합니다. 이 방법은 Swarm을 통해 실시간 대화를 구현하는 데 유용합니다.
코드:
from swarm import Swarm, Agent
client = Swarm()
my_agent = Agent(
name="Agent",
instructions="You are a helpful agent.",
)
def pretty_print_messages(messages):
for message in messages:
if message["content"] is None:
continue
print(f"{message['sender']}: {message['content']}")
messages = []
agent = my_agent
while True:
user_input = input("> ")
messages.append({"role": "user", "content": user_input})
response = client.run(agent=agent, messages=messages)
messages = response.messages
agent = response.agent
pretty_print_messages(messages)
상세 설명:
- 사용자가 입력한 메시지를
messages
리스트에 추가하고, 이를client.run()
에 전달합니다. - 에이전트의 응답은
response.messages
에 저장되며, 이를pretty_print_messages
함수를 통해 출력합니다. - 이 구조는 사용자가 입력할 때마다 에이전트가 실시간으로 응답하도록 설정되어 있어 인터랙티브한 환경을 제공합니다.
예제 실행 방법
위의 예제를 실행하려면 다음 명령어를 사용하면 됩니다:
python3 <example_name>.py
이 명령어를 사용하면 해당 예시 파일이 실행되며, Swarm의 기본 기능을 체험할 수 있습니다.
마무리
Swarm은 다수의 에이전트를 이용해 복잡한 대화 흐름을 쉽게 관리할 수 있도록 도와주는 강력한 도구입니다. 이 포스팅에서 소개한 기본적인 예제를 통해 Swarm의 구조와 사용법을 이해하는 데 도움이 되었기를 바랍니다. 앞으로 다양한 시나리오에서 Swarm을 활용해보세요!
'AI > OpenAI Swarm' 카테고리의 다른 글
[OpenAI Swarm] 도구를 사용하는 다른 방법과의 비교 (4) | 2024.10.28 |
---|---|
[OpenAI Swarm] OpenAI 모델만 사용할 수 있나요? NO! (2) | 2024.10.26 |
OpenAI Swarm 이란? 왜 다들 열광하는걸까? Multi AI Agent System (2) | 2024.10.26 |
- Total
- Today
- Yesterday
- AI개발
- swarm
- 컨텍스트 변수
- ai 오케스트레이션
- 멀티에이전트
- AI모델
- AI 통합
- structured outputs
- 인공지능 개발
- json schema
- openai
- 외부모델연동
- 도구 호출
- 챗봇
- ai 자동화
- groq
- python 개발
- 에이전트 관리
- 에이전트 시스템
- ai 프레임워크
- ai프레임워크
- 다중 에이전트 시스템
- ai 챗봇
- 에이전트 오케스트레이션
- 함수 호출
- 대화형 에이전트
- function calling
- Ollama
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |