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

OpenAI의 멀티에이전트 framework SWARM 활용! (example. 페스트푸트 매장 상황)

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

안녕하세요!!

2024.10.17 - [데이터&AI/LLM] - Gpt realtime Python으로 구현하기!!

 

Gpt realtime Python으로 구현하기!!

앞 포스팅에서!!!2024.10.15 - [데이터&AI/기타개발] - [realtime GPT를 쓰기위한 사전학습] threading의 이해 (python의 멀티태스킹!) [realtime GPT를 쓰기위한 사전학습] threading의 이해 (python의 멀티태스킹!)최

drfirst.tistory.com

 

지난 포스팅에서 swam 이 무엇인지 간단히 알아보았습니다!!

그런데, 프로그래밍 공부할떄는 언제나 그렇듯, 실제 상황을 코드로 바꿔보면서 해보아야 더 빠르게 이해가 되더라구요!

그래서 오늘은!! 대표적인 상황을 기준으로 swarm에 대하여 학습해보겠습니다!!

 


 

 

 

오늘의 상황을 쉽게 설명하면 다음과 같습니다!!

페스트 푸드 매장인데, 매장에는 보스 / 점원 / 청소부가 있습니다!

 

점원은 고객으로 부터 주문을 받고!

청소부는 매장의 자리를 청소하고!!

보스는 뒷자리에 않아있다가 고객이 사장불러와! 하면 보스가 나타납니다!!

 

이제! 이 환경을 swarm 기반으로  구축해봅니다!!

 

from swarm import Swarm, Agent

client = Swarm()

def call_boss():
    return boss

def call_cleaner():
    return   cleaner  

def cleaning():
    print("cleansing 함수 작동!! 열심히 청소를 진행중 입니다!!")


alba  = Agent(
    name="알바생",
    instructions="당신은 친절한, 한국말을 사용하는 agent입니다.  매장 알바생으로 단순 업무를 해요. 빅맥 햄버거 가격은 5천원이야",
    functions=[call_boss, call_cleaner],
)

boss = Agent(
    name="가게사장",
    model='gpt-4',   
    instructions="너는 무슨질문이 들어오든 한국어로 '안녕하세요!! 일등박사 페스트푸드점 보스입니다' 라고해.",
)


cleaner = Agent(
    name="청소원",
    model='gpt-4o-mini',
    instructions="고객님이 더러워하고 있어 '네! 지금 바로 청소하겠습니다!!' 라고 바로 대답해!!'",
    functions=[cleaning],
)

 

코드를 쉽게 이해하면 아래 그립과 같습니다!!

 

점원은 빅맥가격은 5천원이며!  고객이 사장을 부르면 연결해줍니다!!

청소부는 가장 빠르고 가격이 저렴한 gpt-4o-mini를 사용, 필요시 자리를 청소합니다

보스는 가장 비싸고 정확한 gpt-4모델을 사용하고 고객으 호출하면 나타납니다!!

 

이제, 잘 작동하는지 보아요!!

 

고객이 빅맥 햄버거 가격을 물어보면!?

response = client.run(
    agent=alba,
    messages=[{"role": "user", "content": "빅맥 햄버거 얼마야?"}],
)

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

 

잘 대답하죠!?

 

비슷하게!!

고객이 무슨 햄버거 있어? 라고 물으면?

response = client.run(
    agent=alba,
    messages=[{"role": "user", "content": "무슨 햄버거있어?"}],
)

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

 

 

아주 좋아요!!

 

이번엔 자리가 지저분해요!!

고객이 다름과 같이 말합니다!!

"여기 자리가 너무 더러워요ㅠ 청소해주세요"

response = client.run(
    agent=alba,
    messages=[{"role": "user", "content": "여기 자리가 너무 더러워요ㅠ 청소해주세요"}],
)
print(response.messages[-1]["content"])
response.messages

 

그 결과!!

cleaner가 호출되고 cleansing 함수가 잘 작동함을 볼수 있습니다!!!!

 

마지막으로!!

긴급상황!!!!

진상고객이 나타나서 "서비스가 이게 뭐야! 사장 불러!!" 라고합니다!!

response = client.run(
    agent=alba,
    messages=[{"role": "user", "content": "서비스가 이게 뭐야! 사장 불러!!"}],
)
print(response.messages[-1]["content"])
response.messages

 

과련 어떻게될까요!?

 

 

call_boss 함수가 가동, 듬직하게 보스가 나타나서 답변하게됩니다!!

 

어떄요!! 이를 통해서 swarm의 활용 예시를 알아보았는데!!

이해가 되는데 도움이 되었으면 좋겠어요!^^

 

728x90

댓글