Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

날씨 & 뉴스 에이전트 팀

오픈소스 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 데코레이터 함수가 독립적인 서브에이전트 역할을 담당합니다.


동작 원리

1. 서브에이전트 1 — 날씨 수집

@tool
def get_weather(city: str = "Seoul") -> str:
    """지정한 도시의 현재 날씨와 24시간 시간대별 변화를 가져옵니다."""
  • https://wttr.in/Seoul?format=j1 JSON API 파싱
  • 현재 온도·체감·날씨 설명·최고/최저·습도·풍속
  • 24시간 시간별 온도 + 강수확률 테이블

2. 서브에이전트 2 — 국제 뉴스 수집

@tool
def get_top_news(count: int = 6) -> str:
    """BBC RSS에서 오늘의 주요 뉴스 헤드라인을 가져옵니다."""
  • BBC RSS (feeds.bbci.co.uk/news/rss.xml) BeautifulSoup XML 파싱

3. 서브에이전트 3 — 한국 뉴스 수집

@tool
def get_korea_news(count: int = 6) -> str:
    """연합뉴스TV RSS에서 한국 주요 뉴스를 가져옵니다."""
  • 연합뉴스TV RSS (yonhapnewstv.co.kr/browse/feed/)
  • 실패 시 Hacker News RSS 폴백

4. 다단계 논리적 추론 흐름

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.9

패키지 설치

pip install deepagents requests beautifulsoup4 lxml openai

환경 변수

export 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에서 실제 날짜 파싱으로 수정

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages