OpenAI가 최근 Agents SDK를 출시했습니다. 이는 기존 OpenAI Swarm 프레임워크를 리브랜딩하고 프로덕션 단계에 맞게 개선한 버전으로, 멀티 에이전트 애플리케이션 구축을 위한 강력한 도구입니다. 마케터로서 이러한 도구를 활용하면 고객 리서치, 콘텐츠 제작, 시장 분석 등 다양한 업무를 효율적으로 자동화할 수 있는 기회가 생깁니다.
이 글에서는 OpenAI의 Agents SDK를 활용하여 멀티 에이전트 리서치 어시스턴트를 구축하는 방법을 단계별로 알아보겠습니다. 이 시스템은 여러 전문 에이전트가 협력하여 주제를 연구하고, 정보를 수집하며, 종합적인 보고서를 생성하는 사용자 친화적 애플리케이션입니다.
마케팅에 주는 가치
이 멀티 에이전트 시스템은 마케팅 전문가에게 다음과 같은 혜택을 제공합니다:
- 시장 조사 자동화: 새로운 시장 진입이나 제품 출시 전 배경 조사를 자동화하여 시간과 비용 절감
- 경쟁사 분석: 경쟁사 전략, 제품, 가격 정책 등에 대한 상세 조사 보고서 생성
- 콘텐츠 마케팅 지원: 키워드 리서치부터 콘텐츠 구조 및 초안 작성까지 지원
- 타겟 고객 이해: 특정 고객층의 행동, 선호도, 트렌드에 대한 포괄적 분석
- 트렌드 모니터링: 업계 트렌드, 이벤트, 뉴스를 지속적으로 모니터링하고 인사이트 제공
특히 여러 에이전트가 협업하는 방식은 단일 AI 모델이 제공하는 것보다 더 풍부하고 균형 잡힌 정보를 제공하여 마케팅 의사결정의 질을 높이는 데 큰 도움이 됩니다.
구축하는 시스템 개요
이 애플리케이션은 OpenAI의 Agents SDK와 Streamlit을 사용하여 구축되며 다음과 같은 특징을 갖습니다:
주요 기능
- 멀티 에이전트 아키텍처:
- 분류 에이전트(Triage Agent): 연구 접근 방식을 계획하고 워크플로우 조정
- 연구 에이전트(Research Agent): 웹 검색을 통해 관련 정보 수집
- 편집 에이전트(Editor Agent): 수집된 사실을 종합적인 보고서로 편집
- 자동 정보 수집: 출처 정보와 함께 중요한 사실을 자동으로 포착
- 구조화된 보고서 생성: 제목, 개요, 출처 인용이 포함된 체계적인 보고서 생성
- 대화형 UI: Streamlit으로 구축된 사용자 친화적 인터페이스
- 추적 및 모니터링: 전체 연구 워크플로우에 대한 통합 추적 시스템
시스템 작동 원리
이 리서치 애플리케이션의 멀티 에이전트 워크플로우는 다음과 같이 작동합니다:
- 연구 계획 수립(분류 에이전트): 사용자의 질의를 받아 검색 쿼리와 주요 영역이 포함된 구조화된 연구 계획을 수립하고 전체 워크플로우 조정
- 정보 수집(연구 에이전트): 분류 에이전트로부터 전달받은 후, 웹 검색 도구를 사용해 관련 정보를 수집하고 중요한 사실과 출처를 저장
- 보고서 작성(편집 에이전트): 정보 수집이 완료되면 모든 수집된 사실을 취합하고 체계적으로 정리하여 적절한 인용이 포함된 종합 연구 보고서 생성
- 전체 프로세스는 모니터링과 디버깅을 위해 추적되며, Streamlit 인터페이스는 주제 입력과 결과 확인을 위한 사용자 친화적 방법 제공
구현 방법
환경 설정
먼저 개발 환경을 준비합니다:
- GitHub 저장소 클론:
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
- openai_research_agent 폴더로 이동:
cd ai_agent_tutorials/opeani_research_agent
- 필요한 종속성 설치:
pip install -r requirements.txt
- API 키 설정:
export OPENAI_API_KEY='your-api-key-here'
Streamlit 앱 생성
애플리케이션의 핵심 부분을 살펴보겠습니다:
1. 라이브러리 불러오기
import os
import uuid
import asyncio
import streamlit as st
from datetime import datetime
from dotenv import load_dotenv
from agents import (
Agent,
Runner,
WebSearchTool,
function_tool,
handoff,
trace,
)
from pydantic import BaseModel
2. 데이터 모델 정의
구조화된 입출력을 위한 데이터 모델을 정의합니다:
class ResearchPlan(BaseModel):
topic: str
search_queries: list[str]
focus_areas: list[str]
class ResearchReport(BaseModel):
title: str
outline: list[str]
report: str
sources: list[str]
word_count: int
3. 사실 저장을 위한 커스텀 도구 생성
@function_tool
def save_important_fact(fact: str, source: str = None) -> str:
"""연구 중 발견된 중요한 사실 저장
Args:
fact: 저장할 중요한 사실
source: 선택적 사실 출처
Returns:
확인 메시지
"""
if "collected_facts" not in st.session_state:
st.session_state.collected_facts = []
st.session_state.collected_facts.append({
"fact": fact,
"source": source or "Not specified",
"timestamp": datetime.now().strftime("%H:%M:%S")
})
return f"Fact saved: {fact}"
4. 각 에이전트 정의
연구 에이전트, 편집 에이전트, 분류 에이전트를 차례로 정의합니다:
# 연구 에이전트 정의
research_agent = Agent(
name="Research Agent",
instructions="웹 검색을 통해 정보를 수집하고 간결한 요약 제공...",
model="gpt-4o-mini",
tools=[
WebSearchTool(),
save_important_fact
],
)
# 편집 에이전트 정의
editor_agent = Agent(
name="Editor Agent",
handoff_description="종합 연구 보고서를 작성하는 선임 연구원",
instructions="마크다운 형식의 상세 보고서 작성...",
model="gpt-4o-mini",
output_type=ResearchReport,
)
# 분류 에이전트 정의
triage_agent = Agent(
name="Triage Agent",
instructions="연구 작업의 코디네이터로서 계획 수립 및 에이전트 간 전환 관리...",
handoffs=[
handoff(research_agent),
handoff(editor_agent)
],
model="gpt-4o-mini",
output_type=ResearchPlan,
)
5. Streamlit UI 생성
st.set_page_config(
page_title="OpenAI Researcher Agent",
page_icon="📰",
layout="wide",
initial_sidebar_state="expanded"
)
# 앱 제목 및 설명
st.title("📰 OpenAI Researcher Agent")
st.subheader("Powered by OpenAI Agents SDK")
# 입력 및 컨트롤용 사이드바 생성
with st.sidebar:
st.header("Research Topic")
user_topic = st.text_input(
"연구할 주제 입력:",
)
start_button = st.button("연구 시작", type="primary", disabled=not user_topic)
# 예제 주제
st.divider()
st.subheader("예제 주제")
example_topics = [
"처음 크루즈 여행을 가는 여행자를 위한 미국의 최고 크루즈 라인은?",
"프렌치 프레스에서 업그레이드하는 사용자를 위한 합리적인 에스프레소 머신은?",
"인도에서 첫 솔로 여행자를 위한 덜 알려진 최고의 여행지는?"
]
for topic in example_topics:
if st.button(topic):
user_topic = topic
start_button = True
6. 연구 프로세스 워크플로우 구현
async def run_research(topic):
# 새 연구를 위한 상태 초기화
st.session_state.collected_facts = []
st.session_state.research_done = False
st.session_state.report_result = None
with tab1:
message_container = st.container()
# 전체 워크플로우에 대한 추적 생성
with trace("News Research", group_id=st.session_state.conversation_id):
# 분류 에이전트로 시작
with message_container:
st.write("🔍 **분류 에이전트**: 연구 접근 방식 계획 중...")
triage_result = await Runner.run(
triage_agent,
f"이 주제를 철저히 연구하세요: {topic}. 이 연구는 종합적인 연구 보고서 작성에 사용될 것입니다."
)
# 연구 계획 표시
with message_container:
st.write("📋 **연구 계획**:")
st.json(plan_display)
# 수집된 사실 표시
fact_placeholder = message_container.empty()
# 편집 에이전트 단계
with message_container:
st.write("📝 **편집 에이전트**: 종합 연구 보고서 작성 중...")
report_result = await Runner.run(
editor_agent,
triage_result.to_input_list()
)
st.session_state.report_result = report_result.final_output
with message_container:
st.write("✅ **연구 완료! 보고서 생성됨.**")
마케팅 활용 인사이트
이 멀티 에이전트 리서치 시스템은 마케팅 전문가들에게 다음과 같은 구체적인 활용 방안을 제공합니다:
1. 콘텐츠 마케팅 강화
- 키워드 리서치 자동화: 특정 키워드에 대한 포괄적인 조사를 자동화하여 SEO 최적화된 콘텐츠 계획 수립
- 콘텐츠 아이디어 생성: 다양한 관점에서 주제를 조사하여 더 풍부한 콘텐츠 아이디어 도출
- 전문 지식 기반 콘텐츠: 연구 에이전트가 수집한 최신 데이터를 바탕으로 권위 있는 콘텐츠 제작
2. 경쟁사 분석 고도화
- 경쟁사 전략 분석: 경쟁사의 온라인 활동, 마케팅 메시지, 포지셔닝에 대한 체계적 분석
- 갭 분석(Gap Analysis): 시장에서 충족되지 않은 니즈 식별을 위한 종합적 조사
- 벤치마킹 보고서: 업계 리더들의 마케팅 전략 및 성공 사례에 대한 상세 보고서 자동 생성
3. 고객 인사이트 확보
- 고객 페르소나 개발: 다양한 데이터 소스에서 정보를 취합하여 세밀한 고객 페르소나 구축
- 소비자 트렌드 분석: 실시간으로 변화하는 소비자 행동과 선호도 추적
- VOC(Voice of Customer) 수집: 온라인 리뷰, 소셜 미디어 댓글 등을 분석하여 고객 의견 수집
4. 마케팅 전략 최적화
- 시장 기회 식별: 여러 데이터 소스를 교차 분석하여 새로운 시장 기회 발견
- 마케팅 캠페인 리서치: 특정 타겟 시장 또는 채널에 대한 깊이 있는 조사로 캠페인 효과 극대화
- ROI 분석: 다양한 마케팅 채널과 전략의 효과성에 대한 데이터 기반 분석
시스템 확장 방안
이 프로젝트를 더욱 향상시킬 수 있는 방법도 있습니다:
- 여러 소스에서 수집된 정보를 검증하고 각 사실에 대한 신뢰도 점수를 제공하는 전용 검증 에이전트 추가
- DALL-E 또는 다른 이미지 생성 도구를 통합하여 텍스트 보고서를 보완하는 관련 시각 자료, 다이어그램, 인포그래픽 자동 생성
- 연구 세션 간 컨텍스트를 개선하기 위한 메모리 시스템 구현
- 여러 사용자가 동시에 연구에 기여하고 안내할 수 있도록 하여, 에이전트가 다양한 사용자 입력과 선호도에 적응하는 기능 추가
결론
OpenAI의 새로운 Agents SDK로 구동되는 멀티 에이전트 리서치 시스템은 단계별 자습서를 통해 쉽게 구축할 수 있습니다. 이 시스템은 마케팅 전문가들에게 시장 조사, 콘텐츠 제작, 고객 인사이트 수집 등의 작업을 효율적으로 자동화할 수 있는 강력한 도구가 될 것입니다.
특히 여러 전문 에이전트가 협력하는 접근 방식은 단일 AI 모델로는 얻기 어려운 심층적이고 다각적인 분석을 가능하게 합니다. 이는 데이터 기반 마케팅 의사결정을 지원하고 궁극적으로 마케팅 전략의 효과성을 높이는 데 크게 기여할 것입니다.
다양한 에이전트 구성과 기능을 계속 실험하며 더욱 정교한 AI 애플리케이션을 구축해 보세요. 이러한 기술의 빠른 도입은 마케팅 분야에서 경쟁 우위를 확보하는 데 중요한 역할을 할 것입니다.
답글 남기기