– 이메일 요약부터 회신까지, AI 에이전트에게 맡기기
안녕하세요.
이번 글에서는 OpenAI Agents SDK를 활용해 현실 업무를 자동화하는 실전 시나리오를 소개합니다.
특히 누구나 공감할 수 있는 ‘이메일 처리 업무’를 예제로 삼아, 멀티 에이전트 구성을 통해 어떻게 요약, 회신, 구독 해지 같은 반복 작업을 GPT가 대신 수행하게 만들 수 있는지 단계적으로 설명드리겠습니다.
💼 1. 이런 업무, 직접 하고 계신가요?
업무 현장에서 자주 마주치는 이메일 작업 예시:
- 하루 수십 건의 메일을 읽고 분류
- 반복적인 회신 작성 (ex. "문의 감사합니다. 안내드리겠습니다.")
- 불필요한 뉴스레터 구독 해지
- 긴 메일의 핵심만 요약해서 보고
이런 작업은 대부분 반복적이고 규칙적이며, GPT의 언어 처리 능력 + Tool 조합으로 쉽게 자동화할 수 있습니다.
🎯 2. 시나리오 설계: 에이전트에게 업무 위임하기
✅ 전체 구조
사용자 → ManagerAgent → AutomationAgent → 도구 호출 (회신, 구독해지 등)
🧩 구성 요소
구성 | 역할 |
ManagerAgent | 이메일을 읽고 어떤 처리가 필요한지 판단. 자동화 가능하면 다른 에이전트에게 위임 |
AutomationAgent | 회신, 구독 해지, 무시 등 적절한 조치를 판단하고 실행 |
Tools | 실제 액션을 수행하는 함수들 (reply_to_email, unsubscribe, ignore_email) |
🛠 3. 도구 정의: 기능을 함수로 만들기
from agents import function_tool
@function_tool
def reply_to_email(email_id: str, content: str) -> str:
"""이메일 ID와 회신 내용을 받아 회신을 전송합니다."""
return f"이메일 {email_id}에 회신 완료: {content}"
@function_tool
def unsubscribe_from_email(email_id: str) -> str:
"""이메일 발신자로부터 구독 해지 요청을 수행합니다."""
return f"이메일 {email_id}에 대한 구독 해지 완료"
@function_tool
def ignore_email(email_id: str) -> str:
"""처리가 불필요한 이메일을 무시 처리합니다."""
return f"이메일 {email_id}은 무시됨"
이 함수들은 실제 이메일 시스템에 연결되어 있다면 API 연동이 필요하지만, 지금은 데모용으로 결과만 반환합니다.
🧠 4. 에이전트 구성
✅ Automation Agent (자동 처리 담당)
from agents import Agent
automation_agent = Agent(
name="AutomationAgent",
instructions="""
너는 이메일 자동 처리 에이전트야.
각 이메일을 검토한 뒤 아래 중 하나를 수행해:
- reply_to_email
- unsubscribe_from_email
- ignore_email
도구를 적절히 사용해 이메일을 처리한 뒤, 그 결과를 리턴해.
""",
tools=[reply_to_email, unsubscribe_from_email, ignore_email]
)
✅ Manager Agent (조율자)
manager_agent = Agent(
name="ManagerAgent",
instructions="""
너는 이메일 매니저야.
자동 처리 가능한 이메일이면 AutomationAgent에게 핸드오프해.
사람이 직접 확인해야 할 메일이면 '수동 확인 필요'라고 답해.
""",
handoffs=[automation_agent]
)
핸드오프(handoffs)는 특정 작업을 다른 에이전트에게 위임할 수 있게 해주는 기능입니다.
이 구조 덕분에 각 에이전트는 역할에 집중하고, 협업형 워크플로우가 가능해집니다.
🚀 5. 실행 예시
from agents import Runner
email_text = """
제목: 뉴스레터 구독 해지 요청
내용: 안녕하세요, 귀사 뉴스레터 잘 보고 있습니다만, 이제 그만 받고 싶습니다.
"""
result = Runner.run_sync(manager_agent, email_text)
print(result.final_output)
예상 결과:
이메일 12345에 대한 구독 해지 완료
※ 실제로는 이메일 ID 등 메타 정보도 함께 넘겨야 하며, input에는 전체 이메일 객체(dict 또는 텍스트 포맷)를 넣어줄 수 있습니다.
🧭 6. FastAPI와 연동하기
위 시스템을 FastAPI로 API화하면, 다음과 같은 API를 만들 수 있습니다:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Email(BaseModel):
id: str
subject: str
content: str
@app.post("/process-email")
async def process_email(email: Email):
email_input = f"이메일 {email.id}: {email.subject}\n{email.content}"
result = await Runner.run(manager_agent, email_input)
return {"result": result.final_output}
이제 사용자는 이메일을 API로 넘기기만 하면, 에이전트가 대신 읽고, 판단하고, 조치까지 해주는 구조가 됩니다.
📈 7. 실무 적용 시 장점
효과 | 설명 |
⏱ 업무 시간 절감 | 이메일 분류와 회신에 드는 반복 작업 자동화 |
🔁 일관된 응답 | 매번 같은 질문에 동일하고 정중한 답변 제공 |
🧠 지능적 분기 | 자동 응답/무시/구독 해지를 상황에 따라 판단 |
🔧 확장성 | 새 도구 추가로 기능 확장 가능 (예: 일정 등록, 파일 첨부 등) |
✅ 마무리하며
이메일 업무는 자주 반복되지만 자동화되기 쉽고, 효과도 명확합니다.
이번 글에서는 도구 기반 에이전트 구성, 핸드오프 구조, 그리고 FastAPI 연동까지 실제 구현 사례로 다뤄봤습니다.
이제 여러분도 GPT를 단순한 챗봇이 아니라, 액션을 수행하는 AI로 진화시킬 수 있습니다.
다음 편에서는 여러분이 하루 일정을 정리하거나, 문서를 요약해주는 AI 개인 비서를 만드는 실습을 이어가겠습니다.
이메일 자동화와 유사하지만, 사용자 중심의 다양한 요청을 처리할 수 있는 멀티 툴 기반 에이전트 구조를 다룰 예정입니다.
'인공지능 (AI) > OpenAI Agents SDK' 카테고리의 다른 글
7 - Agents SDK 운영 팁과 확장 전략 (1) | 2025.04.08 |
---|---|
6 - 나만의 AI 비서 만들기 (1) | 2025.04.08 |
4 - 간단한 에이전트부터 FastAPI 연동까지 실습하기 (1) | 2025.04.08 |
3 - Agents SDK의 핵심 개념 (0) | 2025.04.08 |
2 - Python 환경에서 Agents SDK 설치 및 기본 설정하기 (4) | 2025.04.08 |