반응형
날씨 알림 서비스는 python3을 활용하여 기상 데이터를 수집하고, openai ai 통해 날씨 정보를 간단히 요약하여 사용자에게 전달하는 자동화 시스템입니다.
이 서비스는 특히 카카오톡 메시지 전송을 통해 사용자에게 매일 간편하게 날씨 정보를 제공하는 것을 목표로 하고 있습니다.
openai ai와 python3를 사용해보고는 싶은데... 어떻게 써봐야할까 고민을 많이 하였고, 가장 내가 필요하다고 생각했던 서비스에서 가장먼저 적용해보자! 라는 생각이 들어 시작된 서비스개발입니다.
Git 주소 : https://github.com/curiousKidd/sendWeather
주요 기능
날씨 데이터 수집
- 기상청의 단기예보 API를 사용하여 한국의 상세하고 신뢰할 수 있는 날씨 데이터를 가져옵니다.
- 사용자는 지역, 시간, 날짜를 기준으로 맞춤형 데이터를 조회할 수 있습니다.
openai ai를 활용한 요약
- 수집된 날씨 데이터를 OpenAI API를 활용하여 간결하고 유용한 텍스트로 변환합니다.
- 예시:
- 오늘의 날씨는 맑음이며, 최고온도는 10도, 최저온도는 2도입니다. 강수확률은 20%입니다.
- 상황에 맞는 추가 멘트:
- 날씨가 다소 쌀쌀하니 따뜻한 옷차림을 추천드립니다.
- 예시:
카카오톡 알림 전송
- 요약된 날씨 정보는 카카오톡 API를 통해 사용자에게 전송됩니다.
- 실제로 카카오톡 전송 방식을 결정할 때, 비즈니스 카톡 사용을 고심했으나 최종적으로 사용하지 않았습니다.
- 실시간으로 알림을 받을 수 있어 편리합니다.
프로젝트 구조
이 프로젝트는 다음과 같은 파일 및 디렉토리 구조로 구성되어 있습니다
기본적으로 python3를 사용하고 있습니다.
- kakao.py
- main.py
- weather.py
- Dockerfile
- docker-compose
- requirements.txt
- tokens.json
- crontab
- playbook
사용 기술 및 라이브러리
- Backend: Python 3.9
- 데이터 처리 및 API 통신을 위한 코어 언어.
- API 통신: requests
- 기상청 및 OpenAI API 호출을 위한 HTTP 클라이언트 라이브러리.
- 데이터 처리: JSON
- API 응답 데이터를 파싱하고 구조화된 데이터로 처리.
- AI 요약: OpenAI API
- GPT 모델을 사용하여 날씨 정보를 간결하게 요약.
- 카카오톡 전송: Kakao API
- 카카오톡 메시지 전송 기능을 제공하여 사용자와 연결.
코드 구조
1. 날씨 데이터 수집
기상청 API를 호출하여 날씨 데이터를 JSON 형식으로 받아옵니다.
import requests
def get_weather_data(location):
base_url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst"
api_key = "YOUR_KMA_API_KEY" # 대체 텍스트
nx, ny = location["nx"], location["ny"]
params = {
"serviceKey": api_key,
"numOfRows": 100,
"pageNo": 1,
"dataType": "JSON",
"base_date": "20250101",
"base_time": "0500",
"nx": nx,
"ny": ny,
}
response = requests.get(base_url, params=params)
return response.json()
2. OpenAI API로 요약
수집된 데이터를 OpenAI GPT 모델을 통해 요약합니다.
import openai
def summarize_weather(summary):
openai.api_key = "YOUR_OPENAI_API_KEY" # 대체 텍스트
messages = [
{"role": "system", "content": (
"너는 날씨 정보를 간단히 요약하고, 옷차림에 대한 팁을 제공하는 어시스턴트야."
)},
{"role": "user", "content": f"다음 날씨 데이터를 요약해줘: {summary}"}
]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=100,
temperature=0.7
)
return response.choices[0].message["content"]
3. 카카오톡 메시지 전송
요약된 날씨 정보를 카카오톡 API를 통해 전송합니다.
def send_kakao_message(message, user_id):
kakao_api_url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {"Authorization": f"Bearer YOUR_KAKAO_ACCESS_TOKEN"} # 대체 텍스트
data = {
"template_object": {
"object_type": "text",
"text": message,
"link": {"web_url": "https://your-website.com"}
}
}
response = requests.post(kakao_api_url, headers=headers, json=data)
return response.status_code
활용 사례
- 출근 전 날씨 확인
- 매일 아침 출근 전에 카카오톡으로 날씨 정보를 간단히 확인할 수 있습니다.
- 주말 여행 계획
- 특정 지역의 날씨를 미리 파악하여 여행 준비를 효율적으로 진행.
- 옷차림 추천
- 기온 변화에 따라 적절한 옷차림을 추천받아 더욱 편안한 하루를 보낼 수 있습니다.
향후 확장 아이디어
- 위치 기반 서비스
- GPS 데이터를 활용하여 현재 위치를 자동으로 감지하고 날씨 정보를 제공.
- 일정 통합
- Google Calendar와 연동하여 특정 일정에 따른 날씨 알림 제공.
- 추가 데이터 시각화
- 강수량, 풍속, 체감 온도 등을 차트로 제공.
회고
python3를 사용해보고 싶어서 시작된 프로젝트입니다. 그래서 프로젝트 자체는 어렵지 않고 단순하게 사용되었어요
openai ai 또한 사용해보고 싶어서 사용해 보았고, 여러모로 새로운 학습을 많이 하게된 프로젝트입니다.
다만 프로젝트가 너무 쉬운 나머지... 다른 사람들이 봤을 때, 이게 뭐다냐... 할수도 있겠다는 걱정이 앞서지만 배운게 많이 있다는 점만 생각하고 앞으로도 새로운 지식을 습득하려고 노력하겠습니다.
반응형
'개인 플젝 뚜따 > 날씨 알림이 서비스' 카테고리의 다른 글
날씨 알림 서비스 프로젝트 소개 2탄 - docker-compose , ansible 활용 서버 배포 (0) | 2025.01.19 |
---|---|
파이썬 스케쥴링: 외부 도구 크론탭 vs. 파이썬 내부 스케줄링 (1) | 2025.01.03 |