팀/개인 작업 프로젝트 모음

[ GTRPGM ] — [ AI 게임 마스터 시스템 ]

"서사·상태 일관성을 보장하는 AI 게임 마스터 시스템 — PostgreSQL + Apache AGE 이중 저장소 설계, FastAPI 기반 마이크로서비스 아키텍처, NVIDIA AI Academy 최우수상 수상”

1) 목표: 서사 일관성과 상태 일관성을 보장할 수 있는 AI 게임 마스터를 만들자

구분 기술
Runtime Python 3.11+
Framework FastAPI + Uvicorn
DB (관계형) PostgreSQL + asyncpg
DB (그래프) Apache AGE (Cypher)
Validation Pydantic v2
AI Integration LangGraph, LangChain Core
Test pytest-asyncio, testcontainers
Package Manager uv

2) 담당 역할: State Manager

: State Manager는 GTRPGM(Generative TRPG Manager) 엔진의 중앙 상태 저장소 서비스입니다. 게임 내에서 일어나는 모든 변화—플레이어의 HP 감소, NPC와의 호감도 변화, 아이템 획득, 장소 이동—를 일관성 있게 저장하고 제공하는 역할을 담당했습니다.

3) 아키텍쳐/구현 요약

전체 시스템 아키텍쳐

Gemini_Generated_Image_qe831gqe831gqe83.png

전체 서비스의 관계를 보면 알 수 있듯, 제가 이 서비스를 설계할 때 가장 먼저 정한 원칙은 판정(Judgment)과 상태(State)의 분리였습니다.

TRPG에서 주사위를 굴리고 대미지를 계산하는 행위는 게임 규칙에 대한 판단이고, 그 결과를 기록하는 행위는 상태 관리입니다. 이 두 가지를 하나의 서비스가 모두 책임지면 규칙이 바뀔 때마다 상태 저장 로직까지 함께 수정해야 하는 문제가 생깁니다.

때문에 State Manager는 Rule Engine이 계산한 결과를 수동적으로 받아 저장하는 데만 집중합니다. 무엇을 어떻게 계산할지는 알지 못하고, 알 필요도 없습니다. 이 분리 덕분에 게임 규칙이 바뀌어도 State Manager는 변경이 필요 없으며, 반대로 상태 저장 방식이 바뀌어도 Rule Engine은 영향을 받지 않습니다.

State Manager

4) 진행중 발생한 트러블 이슈

5) 결과

설계 단계에서 정한 판정과 상태의 분리 원칙이 실제로 유효했음을 프로젝트 후반에 직접 확인했습니다. Rule Engine 쪽 게임 규칙이 변경됐을 때 State Manager 코드는 한 줄도 수정하지 않았고, 반대로 상태 저장 방식이 바뀌었을 때도 Rule Engine은 영향을 받지 않았습니다. 마스터 세션(Session 0) 딥 카피 구조 덕분에 세션 간 데이터 간섭이 발생하지 않았고, DB 트리거 기반 자동 동기화로 두 DB 간 불일치 문제를 애플리케이션 레벨에서 신경 쓸 필요가 없었습니다. 프로젝트 완성도를 인정받아 최우수상을 수상했습니다.



[ Discoverex ] — [ 숨은그림 찾기 ]

"사람-AI 시야 간극 해소를 위한 숨은그림 찾기 데이터 검증 파이프라인 — MobileSAM·OpenCV·YOLOv8·CLIP 4개 모델 어댑터 기반 자동 품질 검증, NVIDIA AI Academy 우수상 수상”

1) 목표: 사람과 AI의 시야 간극 해소

모델 / 라이브러리 역할
MobileSAM (HuggingFace) 객체 세그멘테이션 → Z-깊이, 군집, 겹침 정보 추출
OpenCV LAB 색차, Sobel 엣지, Hu Moments 계산
Moondream2 (VLM) + NetworkX Scene Graph 구축 → 노드 차수(degree), 홉(hop) 수, 그래프 지름(diameter) 산출
YOLOv8 + CLIP 블러 레벨별 객체 탐지율 및 이미지-텍스트 유사도 곡선 측정
Python (ScoringWeights) 가중합 기반 점수 계산, Hidden Object 판정, scene_difficulty 산출
Pydantic v2 전 Phase 도메인 모델 직렬화 (VerificationBundle 등)
MLflow 검증 점수, 신호(signal), 모델 버전 추적 및 기록

2) 담당 역할: Data Verifier

: AI가 생성한 숨은 그림의 품질을 체크하고, 통과시 메타 데이터를 부착해 학습용 데이터로 수집하는 역할

3) 아키텍쳐/구현요약

전체 시스템 아키텍쳐

Gemini_Generated_Image_fnxukcfnxukcfnxu.png

Data Verifier는 파이프라인에서 생성된 Scene이 퍼즐로서 유효한지 판정하는 컴포넌트입니다. Application Layer의 ValidatorOrchestrator를 중심으로 4개 모델 어댑터(MobileSAM · OpenCV · Moondream2 · YOLOv8+CLIP)를 순차 호출해 신호를 추출하고, 커스텀 로직으로 객체별 숨김 판정과 장면 난이도를 산출해 Approved / Failed 콜렉션으로 분기합니다.

설계 중점

Data Verifier

4) 진행중 발생한 트러블 이슈

5) 결과

검증 척도 설계에서 가장 고민했던 부분은 단일 지표로는 커버할 수 없는 혼동 유형의 다양성이었습니다. Perception과 Logical을 독립 산출한 뒤 가중합으로 통합하는 방식으로 이 문제를 해결했고, 실제로 한 축만 낮아도 다른 축이 보정하지 못하던 v1의 문제를 v2에서 해소할 수 있었습니다. 헥사고널 아키텍처를 적용한 덕분에 DETR에서 MobileSAM으로 모델을 교체할 때 ValidatorOrchestrator를 수정할 필요 없이 어댑터만 교체하면 됐고, 이후 추가 모델 실험도 구조 변경 없이 진행할 수 있었습니다. 기술적 창의성과 실용성을 인정받아 우수상을 수상했습니다.

[Achat] — [ rule base Agentic chatbot ]

"8GB VRAM 제약 환경에서 파인튜닝부터 Windows 배포까지 전 과정을 혼자 완성한 경량 로컬 AI 캐릭터 챗봇 — LoRA·RAG·CI/CD 포함”

1) 목표: RuleBase로 편의를 위한 일부 기능 + 자유로운 대화가 가능한 경량 챗봇 개발

| --- | --- | --- |

2) 아키텍처/구현 요약

3) 과정중 발생한 주요 BUG

4) 목표 대비 성과


GTRPGM Portfolio

Discoverex Portfolio

Achat Portfolio

Candy Portfolio