✅ Swarm으로 나만의 Agent 정의하고 실행하기 (2편)
✅ Swarm으로 나만의 Agent 정의하고 실행하기 (2편)
– 직접 만드는 LLM Agent, 그리고 분산 Task 실행의 첫 걸음
지난 1편에서는 Swarm 시스템의 개요와 구조를 살펴봤습니다.
이번 글에서는 직접 나만의 Agent를 만들고, 이를 Task에 연결하여 실행하는 과정을 따라갑니다.
Swarm은 구성만 이해하고 있으면 아주 직관적으로 나만의 Agent를 확장할 수 있습니다.
📦 프로젝트 준비하기
먼저 Swarm 공식 레포를 클론합니다.
git clone https://github.com/openai/swarm.git
cd swarm
환경 구성:
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
API 키 설정 (.env 또는 환경변수):
OPENAI_API_KEY=your-key-here
🧠 1. Agent 클래스 기본 구조 이해하기
Swarm의 Agent는 다음 클래스를 상속받아 정의합니다:
from swarm.agents.base import Agent
class MyAgent(Agent):
def __init__(self, name: str):
super().__init__(name)
def system_message(self) -> str:
return "너는 요약 전문가야. 사용자가 제공한 글을 핵심만 요약해줘."
def is_done(self, messages: list) -> bool:
return any("요약 완료" in m["content"] for m in messages if m["role"] == "assistant")
📌 주요 메서드 설명
메서드 설명
system_message() | Agent의 역할 정의 (프롬프트) |
is_done() | Agent의 작업 종료 조건 (메시지 기반) |
🛠️ 2. 나만의 Agent 만들어 보기
예시: “요약가 Agent”
# agents/summarizer.py
from swarm.agents.base import Agent
class SummarizerAgent(Agent):
def system_message(self) -> str:
return (
"너는 전문 요약가야. 사용자 입력을 핵심 내용으로 3줄 이내 요약해줘. "
"불필요한 문장은 제거하고 핵심만 남겨."
)
def is_done(self, messages: list) -> bool:
return any("요약 완료" in m["content"] for m in messages if m["role"] == "assistant")
📄 3. Task에 Agent를 연결해보기
Task 파일은 Python이나 YAML로 작성할 수 있습니다.
간단한 Python Task 예시:
# tasks/summarize_text.py
from swarm.runtime import run_task
from agents.summarizer import SummarizerAgent
run_task(
name="텍스트 요약 요청",
agents=[SummarizerAgent("요약가")],
messages=[
{"role": "user", "name": "user", "content": "다음 글을 요약해줘: ..." }
]
)
🚀 4. 실행하기
python tasks/summarize_text.py
터미널에 Agent가 응답을 주고받으며 “요약 완료” 메시지가 나타나면 종료됩니다.
예시 출력:
[요약가] 다음 내용을 요약해줄게.
→ 핵심은 다음과 같다:
1. ...
2. ...
요약 완료 ✅
🔁 5. 여러 Agent 협업 Task로 확장해보기
# tasks/multi_agent_summary.py
from agents.summarizer import SummarizerAgent
from swarm.agents.code_browser import ResearcherAgent
from swarm.runtime import run_task
run_task(
name="요약 + 검토 Task",
agents=[
ResearcherAgent("리서처"), # 문서 검색 Agent (기본 제공)
SummarizerAgent("요약가")
],
messages=[
{"role": "user", "name": "user", "content": "해당 기사 내용 요약해줘"}
]
)
→ 이렇게 여러 Agent를 나열하면 Swarm이 자동으로 토론 구조를 생성합니다.
💡 실전 팁
- is_done() 로직에 "요약 완료" 같은 트리거 문구를 명확히 지정해야 무한 루프 방지
- system_message()는 구체적이고 직관적으로 작성해야 결과 품질 상승
- 에이전트 역할이 겹치지 않도록 Agent 간 시스템 메시지를 명확히 나누기
- run_task()는 async도 지원하므로 대규모 Task 병렬 실행 가능
✅ 마무리
이번 글에서는 Swarm에서
✅ 나만의 Agent를 정의하고
✅ Task에 연결하며
✅ 실제로 실행하는 과정을 따라봤습니다.
이제 우리는
단일 프롬프트 기반 시스템에서 벗어나
구체적인 역할을 가진 AI들이 협력하는 구조를 직접 구성할 수 있습니다.
OpenAI Swarm, LLM에이전트, Agent정의, GPT협업, 멀티에이전트시스템, AI프레임워크, Task자동화, PythonAI, Swarm실습, AI협업시스템
👉 다음 편에서는
3편: Tool 사용이 가능한 Agent 만들기 – 코드 실행, 검색, API 호출까지
를 다룹니다. Swarm에서 외부 도구와 상호작용하는 Agent를 정의해보고 싶으신가요? 😊