본문 바로가기
데이터&AI/LLM

OpenAI의 멀티에이전트 framework SWARM 알아보기

by 일등박사 2024. 10. 20.
728x90

현존하는 최고의 LLM API인 OpenAI의 llm API들!!

이들은 함수를 호출하는 function calling 기능을 제공해서

agent로서의 가능성을 보여주었었는데요!!

2024.01.24 - [데이터&AI/LLM] - GPT API 의 Function Calling 기능 알아보기!! (feat. Python)

 

GPT API 의 Function Calling 기능 알아보기!! (feat. Python)

GPT를 활용한 스토어도 나오고!! API 의 기술이 많이 발전했는데요!! 오늘은 Function Calling 기능에 대하여 알아보겠습니다~! Function Calling - 함수 호출!! 이 기능을 간단히 소개하자면!!! GPT를 통해 내

drfirst.tistory.com

 

이런 function calling 기능을 기반으로!! 

multi-agent의 새로운 방향을 제시하는

multi-agent framework "Swarm" 을 제시했습니다!

https://the-decoder.com/openai-introduces-experimental-multi-agent-framework-swarm/

 

OpenAI introduces experimental multi-agent framework "Swarm"

OpenAI has released a new open-source framework called "Swarm" on GitHub. The company describes it as an experimental tool for creating, orchestrating, and deploying multi-agent systems.

the-decoder.com

그리고 git을 통해 코드를 모두 공개했는데요~!

오늘은 이 swarm 코드를 간단한 예시를 통해 알아보겠습니다!!

https://github.com/openai/swarm

 

GitHub - openai/swarm: Educational framework exploring ergonomic, lightweight multi-agent orchestration. Managed by OpenAI Solut

Educational framework exploring ergonomic, lightweight multi-agent orchestration. Managed by OpenAI Solution team. - openai/swarm

github.com

 


 

1. 코드 설치

아직. pip 패키지와 되어있지 않기에, git으로부터 pip install을 진행합니다!

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

 

 

 

2. OpenAI Key 설정 

 > swarm은 openAI기반으로 이루어지기에, api 키가 필요합니다!

  키를 등록하는것엔 2가지 방법이있습니다.

방법1) 파이썬내에서 입력해두기

import os
os.environ['OPENAI_API_KEY'] = '{내 키 입력}'

방법2)  서버 내에 박아두기!! : 우분투 서버의 환경변수로 입력해 둡니다!!

export OPENAI_API_KEY='your_openai_api_key_here'

 

3. 본격 swam 시작!!

from swarm import Swarm, Agent

client = Swarm()

def transfer_to_drfirst():
    return agent_drfirst


# 에이전트 A 설정
agent_a = Agent(
    name="Agent A",
    instructions="당신은 친절한 에이전트입니다.",  # "도움이 되는 에이전트가 되세요."
    functions=[transfer_to_drfirst],  # 에이전트 B로 전달하는 함수 포함
)

# 에이전트 B 설정
agent_drfirst = Agent(
    name="일등박사",
    instructions="'일등박사 등장' 라고만 이야기하세요.",  # "하이쿠로만 말하세요."
)

 

위 코드를 간단히 소개해보겠습니다!

swarm 내에는 2개의 agent로 구성되어있습니다!

 > agent_a : 친절한 에이전트. 사용자에게 잘 답변한다!! 필요한 경우 transfer_to_drfirst 함수를 호출한다!

 <agent_drfirst : 일등박사 에이전트로 무조건 "일등박사 등장" 이라고만 말한다!

 

이제 한번 에이젠트를 테스트해볼까요!?

 

질문 : 미국의 초대대통령은?

# 에이전트 A를 사용하여 대화 실행
response = client.run(
    agent=agent_a,
    messages=[{"role": "user", "content": "미국의 초대 대통령은 누구야?!"}],  # "에이전트 B와 대화하고 싶습니다."
)
response

 

이미 gpt에서 잘 답변하듯!!

 

agent_a는 친절한 에이전트로서 잘 답변해줍니다!!

이제다음 질문을 해볼까요!?

질문 : 일등박사랑 대화하고싶어!!

# 에이전트 A를 사용하여 대화 실행
response = client.run(
    agent=agent_a,
    messages=[{"role": "user", "content":  "일등박사랑 대화하고싶어!!"}],  # "에이전트 B와 대화하고 싶습니다."
)
# 마지막 메시지의 내용을 출력
print(response.messages[-1]["content"])  # 마지막 대화 내용 출력
response

 

그럼 어떻게되어야할까요!?

우리는 agent_a에 일등박사랑 대화하고싶다고했으니!!

agent_a가 일등박사에게 연결해주고 일등박사의 답변을 듣게되어야하는데!?

 

잘 동작합니다!!

 

구조를 이해해 본다면!? 아래와 같겠죠!?^^

 

지금까지 swarm의 간단한 예시를 알아보았습니다.


+ tip. GPT 모델정하기!!

아래와 같은 방법으로 agent을 선언했었느데요!!

# 에이전트 A 설정
agent_a = Agent(
    name="Agent A",
    instructions="당신은 친절한 에이전트입니다.",  # "도움이 되는 에이전트가 되세요."
    functions=[transfer_to_drfirst],  # 에이전트 B로 전달하는 함수 포함
)

이렇게하면 모델은 기본 모델인 gpt-4o로 정해집니다!

모델을 바꾸고싶다면?

# 에이전트 A 설정
agent_a = Agent(
    name="Agent A",
    model='gpt-4o-mini'
    instructions="당신은 친절한 에이전트입니다.",  # "도움이 되는 에이전트가 되세요."
    functions=[transfer_to_drfirst],  # 에이전트 B로 전달하는 함수 포함
)

이렇게! 해서 4o 보다 저렴한 4o-mini로 agent_a를 운영할 수 있겟지요!?

 

728x90

댓글