나는 파이썬으로 Knowledge Graphs, BERT Emotion Detection, Face Recognition, NASA API를 활용해 실제 JARVIS를 구축했습니다
Source: Dev.to
소개
아이언맨을 보면서 “나도 실제로 만들 수 있을까?”라고 생각한 적 있나요? 저는 만들었고, 몇 달간 작업한 결과가 여기 있습니다.
GitHub 저장소
이렇게 만들게 된 이유
JARVIS가 세션을 넘어 나에 대한 정보를 기억하도록 하고 싶었고, 그 결과 프로젝트를 차별화하는 세 가지 핵심 아키텍처 결정을 내리게 되었습니다.
개인 지식 그래프 (NetworkX)
import networkx as nx
pythonG = nx.DiGraph()
pythonG.add_node(
"User",
type="Person",
name="YOUR_NAME",
age="YOUR_AGE"
)
“내가 가장 좋아하는 영화가 뭐야?”라고 물으면 JARVIS는 하드코딩된 변수를 찾는 대신 그래프를 탐색해 답을 찾아냅니다. 새로운 사실과 관계를 추가하는 것이 매우 간단해집니다—노드와 엣지만 추가하면 됩니다.
감정 및 의도 감지를 위한 BERT
시스템은 HuggingFace Transformers의 BERT 모델을 사용해 사용자 의도와 감정 톤을 감지합니다.
얼굴 및 제스처 인식 (OpenCV)
OpenCV가 얼굴 감지와 제스처 인식을 담당해 보다 자연스러운 상호작용을 가능하게 합니다.
할 수 있는 일
- 🧠 개인 지식 그래프 — 선호도, 생일, 관계 등을 기억
- Google Speech Recognition을 통한 음성 입력
pyttsx3를 이용한 음성 출력- NLTK VADER를 활용한 감정 분석
- NASA API를 통한 우주 데이터 조회
- Ollama를 통한 선택적 로컬 LLM 지원
기술 스택
| 구성 요소 | 기술 |
|---|---|
| 언어 | Python 3.8+ |
| NLP / 의도 | BERT (HuggingFace Transformers) |
| 감정 분석 | NLTK VADER |
| 지식 그래프 | NetworkX |
| 컴퓨터 비전 | OpenCV |
| 음성 입력 | Google Speech Recognition |
| 음성 출력 | pyttsx3 |
| 우주 데이터 | NASA API |
| 로컬 LLM (선택) | Ollama |
현재 제한 사항
- Windows 전용:
os.startfile와taskkill을 사용하기 때문에 Windows에만 동작합니다. 크로스 플랫폼 지원이 다음 큰 목표입니다.
앞으로의 계획
- Linux 및 macOS용 크로스 플랫폼 지원 추가
- 지식 그래프 아키텍처 개선
직접 사용해 보기
피드백
피드백을 환영합니다—특히 지식 그래프 아키텍처에 관한 의견을 주세요. 이 사용 사례에 NetworkX가 적절한 선택일까요? 다른 방식을 선택하셨다면 알려주세요. 아래에 댓글을 남겨 주세요.