[DIY] Mac Mini M1을 활용한 프라이빗 AI 비서 개발기
: Ollama(Llama 3.1) + Docker + Telegram을 활용한 프라이빗 에이전트 구축
개인 데이터를 클라우드 AI에 보내는 것이 불안하신가요? 맥미니 M1의 강력한 성능을 활용해 100% 로컬에서 작동하는 지능형 비서 ‘조세핀’을 구축하는 방법을 공유합니다. 이 가이드는 실제 구동 가능한 코드를 포함하고 있습니다.
1. 필수 준비물 및 환경 설정
① 텔레그램 API 키 받기
비서와 대화할 채널이 필요합니다. 텔레그램의 ‘BotFather’를 통해 단 1분 만에 키를 생성할 수 있습니다.
- 텔레그램에서
@BotFather를 검색해 대화를 시작합니다. /newbot명령어를 입력하고 비서의 이름을 정합니다.- 생성된 HTTP API 토큰을 복사해둡니다 (예:
123456:ABC-DEF...). @userinfobot을 통해 본인의 ID(숫자)도 확인해둡니다.
② Ollama 설치 및 모델 다운로드
조세핀의 ‘뇌’ 역할을 할 LLM 엔진입니다.
- Ollama 공식 사이트에서 맥용 설치 파일을 다운로드합니다.
- 터미널을 열고 Llama 3.1 (8B) 모델을 설치합니다 (M1에서 가장 쾌적합니다).
-
ollama run llama3.1
2. 시스템 아키텍처 및 핵심 코드
유지보수와 확장을 위해 코드를 5개의 파일로 모듈화하여 관리하는 것이 핵심입니다.
[파일 1] config.py – 중앙 설정 관리
모든 환경 변수와 설정값을 한곳에 모아 관리합니다.
# config.py
TOKEN = "여기에_텔레그램_토큰_입력"
ALLOWED_ID = 12345678 # 본인의 텔레그램 ID
EXTERNAL_PATH = "/path/to/your/storage"
SANDBOX_IMG = "opencode-sandbox:v3"
WATCH_KEYWORDS = ["삼성전자", "맥미니", "AI"]
[파일 2] utils.py – 공통 도구함
시스템 상태를 점검하고 매너 모드 여부를 판단하는 유틸리티입니다.
import psutil
from datetime import datetime
def get_system_status():
cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
return f"📊 CPU: {cpu}% / RAM: {mem}%"
def is_silent_time():
now = datetime.now()
# 밤 9시 반부터 아침 9시 반까지 매너모드
return now.hour >= 21 or now.hour < 9
[파일 3] opencode_engine.py - Docker 기반 분석 엔진
보안을 위해 모든 외부 코드 실행 및 주가 분석은 Docker 샌드박스 내부에서 처리합니다.
import subprocess
import yfinance as yf
def run_stock_analysis(ticker):
# yfinance로 데이터를 가져오고 차트를 그리는 파이썬 코드를
# Docker 컨테이너 내에서 실행하도록 subprocess 명령을 생성합니다.
# (세부 로직은 GitHub 소스 참조)
pass
[파일 4] scheduler_bot.py - 일정 관리자
알림 예약과 뉴스 브리핑을 담당하는 비서의 수첩입니다.
import schedule
import threading
def run_scheduler(bot):
# 1시간마다 시스템 상태 보고 예약
schedule.every(1).hours.do(lambda: bot.send_message(ID, get_system_status()))
while True:
schedule.run_pending()
time.sleep(1)
[파일 5] main.py - 실행 지휘 본부
모든 모듈을 연결하고 텔레그램 메시지를 처리하는 메인 파일입니다.
import telebot
from config import TOKEN
import scheduler_bot
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(func=lambda m: True)
def handle_msg(message):
# LLM(Ollama)에게 메시지를 전달하고 답변을 받음
# "/주가" 또는 "/예약" 등 특수 명령어 분기 처리
pass
if __name__ == "__main__":
threading.Thread(target=scheduler_bot.run_scheduler, args=(bot,)).start()
bot.infinity_polling()
3. 조세핀 가동하기
모든 파일이 준비되었다면 터미널에서 아래 명령어로 비서를 깨웁니다.
python3 main.py
이제 텔레그램에서 조세핀에게 말을 걸어보세요. "안녕 조세핀, 삼성전자 주가 분석해줘"라고 하면 실시간 차트와 전망 보고서를 보내줄 것입니다.
4. 마치며
맥미니 M1은 단순한 컴퓨터가 아니라, 훌륭한 로컬 AI 서버입니다. 클라우드 비용 걱정 없이 나만의 데이터를 안전하게 학습시키고 활용하는 개인용 비서 시스템을 꼭 직접 구축해 보시길 권장합니다. 🐾