본문 바로가기
AI 도구

🤖Swarm 설치 및 활용 가이드: OpenAI의 혁신적 멀티 에이전트 프레임워크

by James AI Explorer 2024. 10. 17.
    728x90

    안녕하세요! 오늘은 OpenAI가 최근 공개한 멀티 에이전트 시스템을 위한 실험적 프레임워크, Swarm에 대해 알아보겠습니다. Swarm은 루틴(Routines), 핸드오프(Handoffs)라는 핵심 개념을 통해 에이전트 간의 조정과 실행을 간소화함으로써, 시스템을 더 쉽게 제어하고 테스트할 수 있게 해 주며, 여러 에이전트가 지침과 도구를 주고받으면서 대화를 통해 작업을 처리할 수 있고, 특히 많은 독립적인 기능이나 다중 프롬프트 명령을 다루는 데 적합합니다. 이 블로그에서는 Swarm의 개요, 주요 기능, 설치 방법, 그리고 활용예제 테스트까지 함께 살펴보겠습니다.

    🤖Swarm 설치 및 활용 가이드: OpenAI의 혁신적 멀티 에이전트 프레임워크

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    Swarm 개요

    Swarm은 여러 에이전트의 조정 및 실행을 쉽고, 제어 가능하며, 테스트하기 쉽게 만드는 것을 목표로 하는 프레임워크로,  OpenAI 챗 완성 API를 기반으로 작동합니다. 에이전트(Agent)란 특정 작업을 수행하기 위한 지침(instructions)과 도구(tools)를 갖춘 독립적인 주체로서, 마치 영화 "아이언맨"의 자비스처럼, 사용자의 요청이나 상황에 따라 스스로 판단하고 행동하는 개별적인 인공지능 시스템 또는 특정 워크플로우나 단계를 의미합니다. 

     

    예를 들어, 고객 서비스 봇을 구축할 때 "판매 에이전트", "환불 에이전트", "문의 에이전트"와 같이 각각 특정 역할을 담당하는 에이전트를 만들 수 있습니다. "판매 에이전트"는 제품 정보를 제공하고 주문을 처리하는 함수를 가지고 있을 수 있으며, 환불과 문의를 담당하는 각 에이전트는 해당 분야에 특화된 정보를 처리합니다. 

    Swarm 에이전트 프로세스

    위 그림은 Swarm에서 어떻게 여러 에이전트가 협력하여 사용자 요청을 처리하는지 보여줍니다. Triage Assistant는 고객의 요청을 분류하고, Weather Assistant는 실제 날씨 정보를 제공하는 역할을 합니다. transfer_to_weather_assistant() 와 get_weather() 함수는 에이전트 간의 핸드오프와 외부 도구와의 상호 작용을 나타냅니다.

     

    Swarm 프레임워크에서 Agent는 스스로 작업을 처리할 뿐만 아니라, 필요에 따라 다른 Agent에게 작업을 위임하거나 협력하여 더욱 복잡한 문제를 해결할 수 있습니다. Agent는 다음과 같은 세 가지 주요 구성 요소로 정의됩니다.

    • Instructions (지침): Agent가 어떤 역할을 수행해야 하는지, 어떤 방식으로 문제를 해결해야 하는지를 정의하는 명령어입니다. Agent는 이 지침을 기반으로 사용자의 요청을 이해하고 적절한 액션을 취합니다. 예를 들어, "고객에게 친절하게 응대하고, 문제 해결을 위해 최선을 다해야 한다"는 지침은 "고객 서비스 Agent"에게 적용될 수 있습니다.
    • Functions (함수): Agent가 실제로 작업을 수행하기 위해 사용하는 도구입니다. Python 프로그래밍 언어로 작성된 함수를 통해 Agent는 외부 시스템과의 연동, 데이터 처리, API 호출 등 다양한 기능을 실행할 수 있습니다. 예를 들어, 항공권 예약 Agent는 항공사 API를 호출하여 항공편을 검색하고 예약하는 함수를 사용할 수 있습니다.
    • Handoff (작업 위임): Agent는 특정 상황에서 다른 Agent에게 작업을 넘겨줄 수 있습니다. 이를 통해 전문화된 Agent들이 서로 협력하여 더욱 효율적으로 문제를 해결할 수 있습니다. 예를 들어, 고객이 항공권 환불을 요청하는 경우, 초기 응대 Agent는 환불 전문 Agent에게 작업을 위임하여 신속하고 정확한 처리를 가능하게 할 수 있습니다.

    에이전트의 지침은 시스템 프롬프트로 변환되어 언어 모델에 제공되며, 함수는 언어 모델이 호출할 수 있는 도구로 제공됩니다. 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

    728x90

    Swarm 주요 기능

    Swarm은 대규모 언어 모델(LLM)을 사용하여 여러 에이전트를 조정하고 실행할수 있으며, 루틴(Routines) 핸드오프(Handoffs) 기능을 통해 복잡한 작업 흐름을 효과적으로 처리합니다. Swarm의 핵심 기능은 다음과 같습니다:

    • 루틴 (Routines): 루틴은 특정 작업을 수행하기 위한 일련의 단계를 의미하며, 자연어로 작성된 지침과 이를 실행하는 데 필요한 도구들로 구성됩니다. 예를 들면 고객 서비스 에이전트의 루틴은 사용자 문제 분류, 해결 방안 제시, 환불 처리 등의 단계로 구성될 수 있고, 각 단계는 Python 함수로 구현될 수 있으며, 이 함수들은 루틴 정의에 포함됩니다. LLM은 루틴의 조건문을 처리하여 대화를 자연스럽게 이끌어갈 수 있습니다.
    • 핸드오프 (Handoffs): 핸드오프는 한 Agent가 다른 Agent에게 대화를 넘겨주는 것을 말합니다. 이는 전화 통화 중 다른 사람에게 연결되는 것과 유사하지만, Agent들은 이전 대화 내용을 모두 알고 있다는 점이 다릅니다. 핸드오프 기능을 통해 여러 Agent들이 서로 협력하여 복잡한 작업을 처리할 수 있습니다.
    • 함수 호출: Swarm Agent는 Python 함수를 직접 호출할 수 있습니다. 함수는 일반적으로 문자열을 반환하며, Agent를 반환할 경우 해당 Agent로 실행이 전환됩니다. 
    • 컨텍스트 변수: Agent의 지침과 함수는 컨텍스트 변수를 사용하여 정보를 공유하고 활용할 수 있습니다. context_variables를 통해 Agent들은 대화의 맥락과 일관성을 유지할 수 있습니다.
    • 스트리밍: Swarm은 Chat Completions API의 스트리밍 기능을 지원하여 사용자에게 실시간으로 응답을 제공할 수 있도록 합니다. 

    Swarm은 다양한 예제를 통해 루틴과 핸드오프를 활용하여 멀티 에이전트 시스템을 구축하는 방법을 배울 수 있는 샘플 라이브러리입니다. 실험적이고 교육적인 목적으로 만들어졌으며, 프로덕션 환경에서의 사용은 권장되지 않습니다. 

    https://cookbook.openai.com/examples/orchestrating_agents

     

    Orchestrating Agents: Routines and Handoffs | OpenAI Cookbook

    Open-source examples and guides for building with the OpenAI API. Browse a collection of snippets, advanced techniques and walkthroughs. Share your own examples and guides.

    cookbook.openai.com

    Swarm 설치방법

    다음은 Swarm의 설치방법에 대해 알아보겠습니다. Swarm은 Python 3.10 이상 버전이 필요하며, 이 블로그의 설치 환경은 Windows 11 Pro(23H2), WSL2, 파이썬 버전 3.11, Visul Studio Code 1.93.1(이하 VSC)이며, "WSL 연결"을 통해 Linux 환경에서 실행하였습니다.

     

    1. 가상 환경 생성 및 활성화: 먼저 VSC에서 파이썬 가상환경을 생성하고 활성화합니다 

    python -m venv .venv
    source .venv/bin/activate

     

    2. Swarm 패키지 설치: 가상환경이 활성환된 상태에서 Swarm 실행에 필요한 라이브러리들을 설치합니다. 

    pip install git+https://github.com/openai/swarm.git

    가상환경 생성 및 활성화, 패키지 설치

    3. API Key 설정: VSC 터미널에서 OpenAI에서 발급받은 API Key를 설정합니다. 

    export OPENAI_API_KEY=발급받은 API Key

     

    Swarm 예제 테스트

    다음은 Swarm 프레임워크를 사용하여 간단한 멀티 에이전트 시스템을 구현하는 예제 코드를 테스트해 보겠습니다. 이 예제는 항공사와 관련된 다양한 고객 서비스 요청을 처리하는 멀티 에이전트 설정을 보여줍니다. 항공사 고객 서비스 요청 유형을 판단하기 위해 분류 에이전트(Triage Agent), 항공편 수정 에이전트(Flight Modification Agent), 분실 수화물 에이전트(Lost Baggage Agent 등)를 사용합니다. Triage Agent는 요청 유형을 판단하여 적절한 에이전트에게 핸드오프 합니다.

     

    이 블로그의 테스트 환경은 Windows 11 Pro, WSL2, 파이썬 3.11, 비주얼 스튜디오 코드(이하 VSC) 1.94.0이며, "WSL 연결"을 통해 Linux환경에서 진행하였습니다. 테스트 작업 순서는 다음과 같습니다.

     

    1. 예제 코드 다운로드: Swarm 패키지 설치 후, 아래 압축파일을 다운로드하고 작업 디렉토리 밑에 압축을 풉니다.

    swarm-examples-airline.zip
    0.05MB

    unzip swarm-examples-airline.zip -d ./airline

    예제 코드 압축 해제

    2. 언어 모델 설정: 예제 코드의 기본 언어 모델은 gpt-4o로 설정되어 있습니다. 언어 모델을 수정하려면  메인 디렉토리 밑에 /myenv/lib/python3.11/site-packages/swarm/types.py 파일에서 모델명을 수정하시면 됩니다. 저는 아래 화면과 같이 API 가격이 저렴한 gpt-4o-mini로 변경하였습니다. 

    언어 모델 설정 변경

    3. 코드 실행: 가상환경이 활성화된 상태에서 airline 디렉토리로 이동 후, main.py를 실행합니다. 

    cd airline
    python main.py

    main.py 코드 실행

    4. 비행기 편 취소 요청: 아래 화면과 같이 비행기 편 취소를 요청합니다. 

    비행기편 취소 요청

    • 분류 에이전트(Triage Agent)가 요청 유형을 결정하고 항공편 수정 에이전트(Flight Modification Agent)로 전달합니다. 

    항공편 수정 에이전트로 전달

    • 항공편 취소 에이전트(Flight cancel traversal)로 전달하여 항공편 취소 요청을 관리합니다. 

    항공편 취소 에이전트로 전달

    5. 수하물 분실 신고: 사용자가 수하물 분실을 신고하면 분류 에이전트가 다시 문의를 처리합니다.

    사용자 수하물 분실 신고

    • 분류 에이전트(Triage Agent)가 수하물 분실신고를 전달받아 세부정보를 요청합니다. 

    분류 에이전트로 전달

    • 분실 수하물 에이전트(Lost Baggage traversal)가 세부정보를 전달받아 탐색하고 사용자에게 결과를 전달합니다. 

    분실 수하물 에이전트

    테스트 결과, Swarm 프레임워크는 루틴과 핸드오프 기능을 통해 사용자의 요청에 따라 여러 에이전트를 적절하게 조정하고 실행하였으며, 비행기표 취소, 분실 수화물 신고 등 복잡한 작업 흐름을 효과적으로 처리하였습니다. 

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    마치며

    오늘은 멀티 에이전트 시스템을 구축하기 위한 OpenAI의 강력하고 유연한 프레임워크, Swarm에 대해 알아보았습니다. Swarm은 아직 실험 단계이지만, 여러 에이전트를 조정하고 협력시키는 과정을 통해 복잡한 문제를 효율적으로 해결할 수 있는 멀티 에이전트 시스템의 잠재력을 보여주는 도구입니다.

     

    Swarm을 사용해본 후기는 다음과 같습니다. 

    • Autogen이나 CrewAI 보다 사용이 간편하다
    • 실험적인 교육용 프로젝트로 에이전트의 동작이 완전하지 않다
    • 이전 대화에서의 정보를 기억하지 않습니다.

     

    이 블로그가 여러분이 에이전트의 개념을 이해하고, Swarm 프레임워크를 활용하시는데 도움이 되기를 바라면서 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다. 

     

    https://fornewchallenge.tistory.com/

     

     

    2024.02.13 - [AI 도구] - AutoGen: 토큰 과금 없는 100% 무료 대규모 언어 모델 협업 자동화

     

    AutoGen: 토큰 과금 없는 100% 무료 대규모 언어 모델 협업 자동화

    안녕하세요! 오늘은 AutoGen을 이용해서 다중 에이전트를 생성하고, 오픈소스 대규모 언어모델 도구인 Litellm과 Ollama를 활용해서 Mistral과 Codellama를 통해 에이전트들이 서로 협업하며 자동화된 작

    fornewchallenge.tistory.com

     

     

    728x90