study/ai prompt

✅ Swarm으로 나만의 Agent 정의하고 실행하기 (2편)

octo54 2025. 4. 9. 11:03
반응형

 

✅ 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를 정의해보고 싶으신가요? 😊