파이썬으로 멀티에이전트 시스템 구축
그들은 요즘 화제다. 우리는 어디서든, 심지어 휴대폰에서 가장 간단한 작업까지도 그들을 사용하고 있다. 편리하고 빠르며 거의 신뢰할 수 있어 일상 생활을 헤쳐 나가는 데 큰 도움이 된다. 과학 개념을 쉽게 설명받고 싶다면 ChatGPT에 물어본다. 까다로운 아이의 식단 계획이 필요하면 AI에 질문한다. 여행 전체 일정을 짜는 일조차 AI에게 맡길 수 있다. 그리고 바로 이 튜토리얼에서 우리가 할 일이다(계속 지켜보라!).
AI 에이전트에 대해 알고 있지만, 더 큰 프로젝트에서 서로 다른 역할을 수행하는 여러 AI 에이전트를 구축하고 활용할 수 있다면 어떨까? 여기서 멀티‑에이전트 시스템 개념이 등장한다. AI 애플리케이션이 점점 고도화됨에 따라, 단순 질문에 답하고 직관적인 작업을 수행하는 단일 AI 모델에서 복잡한 문제를 해결하기 위해 여러 AI 에이전트가 협업하는 시스템으로 이동하고 있다. 멀티‑에이전트 시스템(MAS) 은 여러 AI 에이전트가 서로 협력해 더 큰 목표를 달성하는 개념이다. 각각은 특정 역할을 맡아 궁극적인 목표를 향해 상호 협력한다.
멀티 에이전트 여행 계획 시스템
이번 프로젝트에서는 멀티 에이전트 여행 계획 시스템을 구축한다. 즉, 여행을 계획해 주는 단일 AI 에이전트 대신, 각각 하나의 구체적인 역할을 담당하는 여러 AI 에이전트가 서로 협력해 완벽한 여행 일정을 만들어 주는 팀을 구성한다!
멀티 에이전트 여행 계획 시스템을 실제 여행사에 비유해 보자. 한 사람이 모든 일을 담당하는 것이 아니라, 각 분야 전문가가 자신의 전문성을 살려 작업을 수행하고 함께 협업한다. 우리 AI 여행 플래너에는 다음과 같은 에이전트가 있다:
프로젝트 내 AI 에이전트 (Image by Author)
- 여행 조사 에이전트: 목적지에 대한 조사 작업을 수행한다. 고객이 가고자 하는 지역의 명소, 숨은 장소, 현지 체험, 여행 팁 등을 탐색하고, 여행 계획에 필요한 기본 정보를 수집한다.
- 활동 계획 에이전트: 조사 에이전트가 제공한 정보를 바탕으로 활동을 설계한다. 어느 장소를 언제 방문하고, 어떤 활동을 할지, 전체 여행을 어떻게 구성할지 결정한다.
- 예산 에이전트: 예산 관리를 담당한다. 활동 계획 에이전트가 만든 일정에 대해 예상 비용, 합리적인 옵션, 절약 팁 등을 분석하고, 고객의 예산에 맞게 맞춤형 여행을 제안한다.
- 최종 여행 어시스턴트: 앞선 세 에이전트(조사, 활동, 예산)의 결과물을 종합해 개인 맞춤형 여행 일정표를 만든다.
전체 프로젝트 흐름은 다음과 같다:
프로젝트 워크플로우 (Image by Author)
우리는 이 프로젝트를 Python과 PyCharm IDE를 사용해 구현한다. 이 프로젝트는 AI 에이전트에 대한 기본 이해와 객체 지향 프로그래밍(OOP) 기초가 필요하다. Python과 Agentic AI에 익숙하지 않다면, 아래 초보자 친화적인 튜토리얼을 참고하라:
Python OOP를 배우고 싶다면, 내가 만든 커피 머신 예제를 살펴보라. 다음 튜토리얼에서는 OOP 개념을 활용해 코드를 최적화한다:
객체 지향 프로그래밍을 활용한 파이썬 커피 머신 프로젝트 구현
위 기사들을 통해 Python 코드를 기본적으로 이해하게 되고, 이번 흥미로운 프로젝트의 코드를 파악하는 데 도움이 될 것이다. 이제 코딩을 시작하자!
프로젝트 생성
먼저 PyCharm(또는 선호하는 IDE)에서 프로젝트 폴더를 만들고, 프로젝트 이름을 “Multi Agent System”(또는 원하는 이름)으로 지정한다.
프로젝트 생성 (Image by Author)
파이썬 패키지 설치 및 임포트
프로젝트 폴더를 만든 뒤, main.py 파일을 생성한다. 터미널에서 OpenAI 패키지를 설치하고, 코드 파일에 임포트한다.
pip install openai
폴더·Python 파일 생성·OpenAI 설치 및 임포트 (Image by Author)
from openai import OpenAI
파이썬을 AI 모델에 연결하기
우리 프로그램이 OpenAI와 통신하고 코드를 처리하려면 AI 플랫폼에 연결해야 한다. 여기서는 OpenRouter.ai를 사용하고, 해당 URL을 지정한다. 또한 API 키를 api_key 변수에 저장한다. 이 키는 프로그램이 AI 모델을 사용할 수 있는 권한을 부여한다. 아래와 같이 API 키를 이용해 클라이언트를 생성한다:
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="YOUR API KEY"
)
OpenRouter.ai에서 API 키를 생성한 뒤, 절대 다른 사람과 공유하지 말고 “YOUR API KEY” 부분에 붙여넣는다.
에이전트 클래스 만들기
이제 AI 에이전트를 코딩할 차례다. 에이전트가 하나 혹은 두 개만 있는 것이 아니라 여러 개를 만들 것이므로, 직접 코딩하기보다는 OOP 개념을 활용한다. 에이전트 카테고리의 청사진(클래스)을 만든 뒤, 이를 기반으로 각각의 에이전트를 생성한다. 에이전트는 이름(에이전트를 식별)과 역할(에이전트가 어떻게 행동해야 하는지)을 저장한다. 또한 run 메서드를 만들어 AI 모델에 작업을 전달하도록 한다.
class Agent:
def __init__(self, name, role):
self.name = name
self.role = role
def run(self, task):
print(f"{self.name} is working...")
response = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[
{
"role": "system",
"content": self.role
},
{
"role": "user",
"content": task
}
],
max_tokens=1200
)
return response.choices[0].message.content
위 코드는 AI 모델에 두 가지 정보를 보낸다.
- 해당 에이전트의 역할(시스템 프롬프트)
- 사용자가 입력한 작업 내용(사용자 메시지)
return response.choices[0].message.content 구문