study/ai prompt

✅ Swarm에서 Tool 사용이 가능한 Agent 만들기 (3편)

octo54 2025. 4. 10. 10:58
반응형

 

✅ Swarm에서 Tool 사용이 가능한 Agent 만들기 (3편)

– 검색하고, 계산하고, 코드를 실행하는 능동적 AI Agent 구성하기

지금까지는 단순히 프롬프트에 반응하는 Agent를 만들었지만,
이제부터는 GPT Agent가 능동적으로 외부 도구를 호출하고,
코드를 실행하거나 정보를 검색하는 등의 행동 기반 처리가 가능해집니다.

Swarm 프로젝트에서는 이를 위해 Tool 시스템을 제공합니다.


🧠 Swarm의 Tool 시스템이란?

Swarm의 Tool 시스템은 다음과 같은 역할을 합니다:

“Agent가 혼자서 해결할 수 없는 문제를 만나면, 외부 도구에 도움을 요청하고 결과를 받아 사용한다.”

예시:

  • 코드를 실행하기 위한 Python Interpreter Tool
  • 웹 검색을 위한 Browser Tool
  • 계산을 위한 Calculator Tool
  • API 호출을 위한 HTTP Tool

즉, 단순 텍스트 생성 → 행동(Action)을 수행할 수 있는 Agent를 만드는 핵심입니다.


📦 Swarm Tool 시스템 구조

반응형

Swarm의 Tool은 다음 구조로 되어 있습니다:

class Tool(ABC):
    @abstractmethod
    def name(self) -> str:
        ...

    @abstractmethod
    def call(self, input: str) -> str:
        ...

→ 간단히 말해: 이름 + 입력을 받아서 출력하는 구조


🔧 1. 기본 제공 Tool 살펴보기

Swarm에는 아래 Tool이 내장되어 있습니다 (swarm/tools/ 디렉토리 참조):

Tool 이름 설명

PythonTool 코드를 실행하고 결과 반환
BrowserTool Web 검색을 수행하고 결과 요약
CalculatorTool 숫자 계산 수행
ShellTool 로컬 셸 명령어 실행 (주의 필요!)

🛠️ 2. Tool을 사용하는 Agent 만들기

예: 수식을 받아 계산하는 Agent

from swarm.agents.base import ToolAgent
from swarm.tools.calculator import CalculatorTool

class CalculatorAgent(ToolAgent):
    def system_message(self):
        return "넌 수학 계산 전문가야. 사용자 질문을 계산기로 해결해야 해."

    def tools(self):
        return [CalculatorTool()]

    def is_done(self, messages):
        return any("계산 완료" in m["content"] for m in messages if m["role"] == "assistant")

🧪 3. 실행 Task 구성하기

# tasks/calculate_math.py
from agents.calculator_agent import CalculatorAgent
from swarm.runtime import run_task

run_task(
    name="계산 요청 Task",
    agents=[CalculatorAgent("계산가")],
    messages=[
        {"role": "user", "name": "user", "content": "45823 * (32 + 15)를 계산해줘"}
    ]
)

실행:

python tasks/calculate_math.py

출력 예:

[계산가] 계산기를 사용해볼게요.
→ Tool 호출: CalculatorTool("45823 * (32 + 15)")
→ 결과: 2103739
→ 계산 완료 ✅

🌐 4. 검색 Tool 사용 Agent 만들기

from swarm.agents.base import ToolAgent
from swarm.tools.browser import BrowserTool

class ResearchAgent(ToolAgent):
    def system_message(self):
        return "넌 리서처야. 사용자가 물어보는 정보를 인터넷에서 검색해서 찾아야 해."

    def tools(self):
        return [BrowserTool()]

    def is_done(self, messages):
        return any("조사 완료" in m["content"] for m in messages if m["role"] == "assistant")

Task 구성 시 사용자 질문 예:

"OpenAI Swarm 프로젝트가 뭔지 요약해줘."

BrowserTool은 기본적으로 DuckDuckGo 검색 엔진을 사용하여 요약된 결과를 제공합니다.


➕ 5. 나만의 Tool 만들기 (예: HTTP 호출기)

from swarm.tools.base import Tool
import requests

class HttpTool(Tool):
    def name(self):
        return "HttpTool"

    def call(self, input: str):
        res = requests.get(input)
        return res.text[:500]  # 결과 일부만 반환

→ 외부 API 호출, 웹훅 처리, REST 서비스 연동도 가능해집니다.


💡 실전 팁

  • ToolAgent는 tool_response_prefix = "도구 호출:" 같은 규칙 기반으로 Tool 호출을 인식함
  • Tool의 call() 메서드는 항상 str input/output으로 처리 → 전처리/후처리 필요
  • Tool 사용 로그를 기록하면 디버깅이 쉬움 (print(f"Tool 호출: {input}"))
  • Tool은 다수 연결 가능 → 계산 + 검색 + 코드 실행 모두 가능

✅ 마무리

Swarm에서 Tool을 사용하는 순간,
Agent는 단순한 “답변 생성기”를 넘어 진짜 문제 해결자로 진화합니다.

✔ 코드 실행, 웹 검색, API 호출 등 다양한 외부 도구 연동
✔ GPT Agent가 도구를 능동적으로 호출하고 응답 사용
✔ 실전적인 AI 오퍼레이션 구축 가능


 

SwarmTool, OpenAI Swarm, AI에이전트, 도구연동, GPT도구사용, PythonAI, 검색에이전트, 코드실행에이전트, Swarm확장, 멀티에이전트시스템


👉 다음 편에서는
**4편: 여러 Agent가 협업하는 실전 시나리오 구성하기 (문제 분석 → 코드 생성 → 리뷰 → 보고서)**를 다룹니다.
Swarm에서 역할 분담 기반의 팀워크 시나리오를 직접 만들어보고 싶으신가요? 😊