오픈소스 Week 6 과제 — deepagents 기반 개인 맞춤형 멀티에이전트 일일 브리핑 시스템 https://github.com/ukwak/week6-deepagents
매일 아침 서울 날씨 · 국제 뉴스 · 한국 뉴스 · Notion 오늘 할 일을 자동 수집하여
- 브라우저 대시보드(Dark UI)로 한눈에 표시
- Gmail로 이메일 브리핑 전송
뉴스는 GPT-4o-mini가 "친구한테 카톡 보내듯" 쉬운 한국어로 변환하여 전달합니다.
사용자 입력
│
▼
메인 에이전트 (GPT-4o, deepagents)
├─► 서브에이전트 1: get_weather() → wttr.in JSON API
├─► 서브에이전트 2: get_top_news() → BBC RSS
└─► 서브에이전트 3: get_korea_news() → 연합뉴스TV RSS
│
▼
GPT-4o-mini 뉴스 말투 변환
│
┌────┴────┐
▼ ▼
브라우저 대시보드 이메일 전송 (Gmail SMTP)
create_deep_agent()는 LangGraph ReAct 패턴으로 도구를 순차 호출합니다.
각 @tool 데코레이터 함수가 독립적인 서브에이전트 역할을 담당합니다.
@tool
def get_weather(city: str = "Seoul") -> str:
"""지정한 도시의 현재 날씨와 24시간 시간대별 변화를 가져옵니다."""https://wttr.in/Seoul?format=j1JSON API 파싱- 현재 온도·체감·날씨 설명·최고/최저·습도·풍속
- 24시간 시간별 온도 + 강수확률 테이블
@tool
def get_top_news(count: int = 6) -> str:
"""BBC RSS에서 오늘의 주요 뉴스 헤드라인을 가져옵니다."""- BBC RSS (
feeds.bbci.co.uk/news/rss.xml) BeautifulSoup XML 파싱
@tool
def get_korea_news(count: int = 6) -> str:
"""연합뉴스TV RSS에서 한국 주요 뉴스를 가져옵니다."""- 연합뉴스TV RSS (
yonhapnewstv.co.kr/browse/feed/) - 실패 시 Hacker News RSS 폴백
Step 1: 메인 에이전트가 시스템 프롬프트 분석
Step 2: get_weather 호출 → 날씨 데이터 확보
Step 3: get_top_news 호출 → 국제 뉴스 확보
Step 4: get_korea_news 호출 → 한국 뉴스 확보
Step 5: 모든 도구 완료 확인 후 결과 통합
Step 6: GPT-4o-mini로 뉴스 친구 말투 변환 (별도 추론)
Step 7: Notion API로 오늘 할 일 필터링 (Done=false, Date=오늘)
Step 8: HTML 대시보드 생성 + 브라우저 오픈
Step 9: Gmail SMTP로 이메일 전송
- Python 3.11+
- pyenv 권장 (Mac 기본 Python 3.9는 deepagents 미지원)
# pyenv 설치
curl https://pyenv.run | bash
# ~/.zshrc 추가
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Python 3.11.9 설치
pyenv install 3.11.9
pyenv global 3.11.9pip install deepagents requests beautifulsoup4 lxml openaiexport OPENAI_API_KEY="sk-proj-..."
export GMAIL_USER="your@gmail.com"
export GMAIL_APP_PASSWORD="xxxx xxxx xxxx xxxx" # Gmail 앱 비밀번호
export NOTION_TOKEN="ntn_..." # Notion 인테그레이션 토큰Gmail 앱 비밀번호: Google 계정 → 보안 → 2단계 인증 → 앱 비밀번호
Notion: 인테그레이션 생성 후 대상 데이터베이스 페이지에 연결 필요
cd week6
OPENAI_API_KEY="sk-proj-..." \
GMAIL_USER="your@gmail.com" \
GMAIL_APP_PASSWORD="xxxx xxxx xxxx xxxx" \
NOTION_TOKEN="ntn_..." \
python agent.py실행 시 자동으로 브라우저가 열리며 아래 레이아웃으로 표시됩니다:
┌─────────────────────────────────────────────┐
│ 2026년 4월 9일 📍 서울 │
├──────────────────────────────┬──────────────┤
│ 🌤 날씨 │ ✅ 오늘 할 일│
│ ☀️ 18°C 맑음 │ [과제 제출] │
│ 체감 16°C | 최고22/최저11 │ [운동] │
│ ┌00 01 02 ... 23시간별 테이블┤ │
│ └─온도 + 강수확률────────────┘ │
├──────────────────┬───────────────────────────┤
│ 🌍 국제 뉴스 │ 🇰🇷 한국 뉴스 │
│ 1. 뉴스 제목 │ 1. 뉴스 제목 │
│ 2. ... │ 2. ... │
└──────────────────┴───────────────────────────┘
- Catppuccin Mocha 다크 테마
- 뉴스 클릭 시 원문 링크 이동
📅 2026-04-09 오늘의 브리핑
🌤 날씨: 18°C 맑음
최고 22°C / 최저 11°C | 습도 45% | 바람 12km/h
00:00 11°C 03:00 10°C ... 21:00 16°C
✅ 오늘 할 일:
☐ 과제 제출
☐ 운동
🌍 국제 뉴스:
1. 미국이 또 뭔가 했대... 관세 전쟁 얘기임 ㅎ
2. ...
🇰🇷 한국 뉴스:
1. 오늘 서울 날씨 진짜 맑다더라!
2. ...
week6/
└── agent.py # 전체 로직 통합 (430줄)
| 기술 | 용도 |
|---|---|
| deepagents | 멀티에이전트 프레임워크 |
| LangGraph / LangChain | 에이전트 ReAct 패턴 |
| GPT-4o | 메인 에이전트 추론 |
| GPT-4o-mini | 뉴스 말투 변환 |
| wttr.in JSON API | 날씨 데이터 |
| BBC RSS / 연합뉴스TV RSS | 뉴스 데이터 |
| Notion API | 오늘 할 일 조회 |
| Gmail SMTP SSL | 이메일 전송 |
| Python webbrowser + HTML | 브라우저 대시보드 |
| 오류 | 원인 | 해결 |
|---|---|---|
| deepagents 설치 실패 | Python 3.9 (3.11+ 필요) | pyenv로 3.11.9 설치 |
No module named lxml |
lxml 미설치 | pip install lxml |
No module named _tkinter |
pyenv Python에 Tk 미포함 | webbrowser + HTML로 교체 |
| Notion 404 오류 | 인테그레이션 미연결 | 페이지에서 ··· → Connections → 인테그레이션 추가 |
| 뉴스 날짜 오류 | AI가 날짜 생성 | wttr.in API에서 실제 날짜 파싱으로 수정 |