2026년 6월 17일, OpenAI가 ChatGPT에 「정기 작업(Scheduled Tasks)」을 정식 도입했습니다. 리마인드나 정기 작업, Web 감시를 자동 스케줄 실행할 수 있는 기능입니다. Google도 Gemini Spark(개인 에이전트)나 Daily Brief를 전개하며, AI는 「지시 대기」에서 「자율 가동」으로 단숨에 시프트하고 있습니다.
이 기사에서는 그러한 "예약 실행형" AI의 내부를 이해하기 위해, 매일 아침 AI 뉴스를 자동 수집하여 요약하는 최소한의 자동화 에이전트를 Python으로 자작합니다. 멀티 LLM (OpenAI / Gemini / Claude)을 교체 가능한 구성으로 만들어, 모델이 퇴역해도 잘 망가지지 않는 설계로 만듭니다.
설계 방침: 모델을 추상화하기
자동화 스크립트에서 가장 피하고 싶은 것은 특정 모델에 로직을 밀결합(Tight Coupling)시키는 것입니다. Provider를 추상화하여 환경 변수로 모델명을 전환할 수 있도록 합니다.
import os
from abc import ABC, abstractmethod
class LLMProvider(ABC):
...
포인트는 model을 생성자 인자 + 환경 변수의 폴백(Fallback)으로 설정한 것입니다. GPT-5.2가 퇴역하더라도 OPENAI_MODEL=gpt-5.5를 설정하는 것만으로 계속 작동합니다.
스케줄러 부분: 정기 실행 구축하기
ChatGPT의 정기 작업의 "자체 버전"에 해당하는 부분입니다. schedule 라이브러리로 매일 아침 실행합니다.
import schedule
import time
import datetime
...
에러 핸들링: 멈추지 않는 설계로 만들기
자율 가동하는 에이전트는 멈추지 않는 것이 최우선입니다. 하나의 프로바이더가 다운되어도 다른 계통으로 계속되는 폴백(Fallback)을 넣습니다.
def summarize_with_fallback(text: str, providers) -> str:
last_err = None
for p in providers:
...
이로써 예를 들어 Claude Fable 5가 수출 규제로 정지되어 있더라도, OpenAI 측에서 처리가 계속됩니다 (그 반대도 마찬가지입니다). 실무에서는 지수 백오프(Exponential Backoff) 재시도(Retry)를 추가하면 더욱 견고해집니다.
요약
「정기 작업」, 「Gemini Spark」, 「Daily Brief」와 같은 매니지드(Managed) 자율 실행 기능은 편리하지만, 그 내부 구조는 이번에 만든 것과 같은 「취득 → LLM 처리 → 저장 → 스케줄 실행 → 폴백(Fallback)」의 루프입니다. 메커니즘을 이해해 두면 모델이 퇴역해도 설정 변경만으로 수명을 연장할 수 있고, 여러 프로바이더로 중복성을 확보할 수 있으며, 매니지드 기능과 자체 스크립트를 구분해서 사용할 수 있습니다. 모델은 몇 주 만에 바뀌지만, 이러한 자동화 설계 기술은 썩지 않습니다. 우선 하나, 매일 아침 작동하는 작은 에이전트부터 시작해 보세요.
Discussion