# 놈팽쓰(NomPangS) 기술 명세서 ## 1. 시스템 개요 ### 1.1 핵심 기능 - **성격 생성**: 4개 입력값(온기, 능력, 외향성, 시간) → 151개 세부 성격 변수 자동 생성 - **유머 매트릭스**: 3차원 좌표계 기반 유머 스타일 정의 및 실시간 조정 - **매력적 결함**: AI 기반 오브젝트 분석 + 성격 조합으로 개성적 단점 생성 - **대화 추적**: 키워드 자동 추출, 관계 발전 단계 계산, 맥락 유지 ### 1.2 실제 테스트 데이터 성능 ``` test1 (뭉이씨): 3회 대화, 8.67자 평균, "첫_만남" 단계, 키워드 5개 test0 (커피포트): 30회 대화, 37.03자 평균, "친밀한_관계" 단계, 키워드 207개 ``` ### 1.3 구현 구조 ``` nompang_test/ ├── app.py # 메인 애플리케이션 ├── modules/ │ ├── persona_generator.py # 성격 생성 + 유머 매트릭스 │ ├── image_analyzer.py # 이미지 분석 │ └── conversation_manager.py # 대화 관리 ├── 뭉이씨_20250528_053729.json # 생성된 페르소나 데이터 └── conversation_history_*.json # 대화 기록 및 분석 ``` ### 1.4 데이터 플로우 1. **입력**: 사용자 설정(온기75, 능력68, 외향성82) + 이미지 업로드 + 시간선택 2. **처리**: 151개 변수 계산 + 3D 유머좌표 + 매력적결함 AI생성 3. **출력**: JSON 페르소나 + 실시간 대화 + 관계발전 추적 4. **학습**: 대화패턴 분석 → 유머스타일 조정 → 성격 미세조정 --- ## 2. 주요 기능 상세 ### 2.1 성격 생성 시스템 #### A. 사용자 입력 (4개 조정값) ``` 온기: 0-100 (따뜻함 ↔ 차가움) 능력: 0-100 (유능함 ↔ 순수함) 외향성: 0-100 (활발함 ↔ 내성적) 함께한 시간: 새것/몇 개월/1년 이상 ``` #### B. 시스템 자동 생성 (151개 세부 변수) ```python # 예시: 온기 80 설정 시 자동 계산 "W01_친절함": 82, # 온기 기반 계산 "W02_친근함": 78, # 온기 + 개성 변동 "C15_배려심": 65, # 연관 효과 "E01_사교성": 88, # 외향성 연동 # 151개 변수 카테고리 분포: # - 기본 온기-능력 차원: 26개 (W10+C16) # - 빅5 성격 특성: 30개 (E6+A6+N6+O6+성실성6) # - 매력적 결함: 15개 (F01~F15) # - 모순적 특성: 16개 (P01~P16) # - 소통 스타일: 20개 (S10+H10) # - 관계 형성: 20개 (R10+D10) # - 사물 특성: 24개 (OBJ8+FORM8+INT8) ``` ### 2.2 유머 매트릭스 #### 3차원 좌표계 ``` warmth_vs_wit: 따뜻한 유머 ↔ 지적 위트 self_vs_observational: 자기참조 ↔ 관찰형 subtle_vs_expressive: 미묘함 ↔ 과장됨 ``` #### 파생 속성 자동 계산 ``` 풍자 수준 = (100 - 자기참조) × 0.7 + (100 - 따뜻함) × 0.3 부조리 수준 = 과장됨 × 0.8 말장난 빈도 = 지적위트 × 0.6 + 과장됨 × 0.4 ``` ### 2.3 매력적 결함 생성 #### 생성 과정 1. **이미지 분석**: 재질, 형태, 용도 파악 2. **성격 연계**: 151개 변수와 사물 특성 조합 3. **AI 생성**: Gemini API로 4개 결함 생성 4. **모순 추가**: 물리적 특성과 성격의 대조 #### 실제 예시 (전기 주전자 "뭉이씨") ``` 매력적 결함: - "물을 너무 빨리 끓여서 가끔 '벌컥'대는 모습이 창피해" - "석회질 자국은 어쩔 수 없나 봐. 내 늙어감의 증거 같아" 모순적 특성: - "차가운 금속 몸체로 뜨거운 물을 끓이는 아이러니" ``` ### 2.4 대화 분석 시스템 #### 자동 추출 정보 ```python keywords = { "word": { "category": "음식/관계/취미/감정/기타", "frequency": 언급 횟수, "last_mentioned": "날짜" } } user_profile = { "message_count": 총 대화 횟수, "avg_message_length": 평균 문자수, "relationship_level": "첫_만남/알아가는_중/친숙함/친밀함", "emotional_tendency": "중립적/긍정적/부정적" } ``` --- ## 3. 샘플 대화 분석 ### 3.1 test1 - 뭉이씨 (초기 단계) #### 대화 내용 ``` 사용자: "ㄴ" 뭉이씨: "ㄴ? ㅋㅋㅋ 무슨 'ㄴ'이야! 혹시 나 지금 글씨 연습시키는 거야?" 사용자: "에휴 너 좀 시끄럽구나?" 뭉이씨: "에헤이! 😅 시끄럽다니, 섭섭한걸?", 사용자: "너는 뭐야 소개해줘" 뭉이씨: "와! 😄 내가 누군지 궁금해? 뭉이라고 해! 전기 주전자인데, 좀 특별한 영혼이 깃든?" ``` #### 자동 생성된 분석 결과 ```json { "message_count": 3, "avg_message_length": 8.67, "relationship_level": "첫_만남", "keywords": ["에휴", "시끄럽구나", "너는", "뭐야", "소개해줘"], "emotional_tendency": "중립적" } ``` ### 3.2 test0 - 커피포트 (발전된 단계) #### 30회 대화 후 결과 ```json { "message_count": 30, "avg_message_length": 37.03, "relationship_level": "친밀한_관계", "keywords_count": 207개, "주요_키워드": { "커피": 5회, "차": 3회, "친구": 2회, "사회화": 2회 } } ``` #### 관계 발전 과정 ``` 1-10회: 기본 기능 중심 ("커피 타왔음", "청소꿀팁") 11-20회: 개인 가치관 공유 ("사회화되기 싫어서 노력했는데") 21-30회: 깊은 고민 토로 ("밍밍하게 사려고 노력하는데 영 재미가 없네") ``` ### 3.3 유머 스타일 적응 사례 #### 실시간 조정 과정 ``` 대화 7회차: 사용자: "쿨시크를 좋아하지" → 시스템: 과장된 유머 → 쿨한 스타일로 즉시 조정 대화 9회차: 사용자: "솔직한게 좋아" → 시스템: 필터링된 표현 → 직설적 스타일로 전환 ``` --- ## 4. JSON 데이터 확인 방법 ### 4.1 페르소나 정보 확인 ```json // 뭉이씨_20250528_053729.json { "성격특성": { "온기": 75, // 사용자 설정값 "능력": 68, "외향성": 82 }, "성격변수151": { "W01_친절함": 78, // 자동 계산된 세부 성격 "H01_유머감각": 75, // ... 총 151개 }, "유머매트릭스": { "warmth_vs_wit": 45.925, // 유머 스타일 좌표 "sarcasm_level": 45.9725 // 풍자 수준 } } ``` ### 4.2 대화 기록 확인 ```json // conversation_history_20250528_053814.json { "conversations": [ { "user_message": "에휴 너 좀 시끄럽구나?", "ai_response": "에헤이! 😅 시끄럽다니, 섭섭한걸?", "keywords": ["에휴", "시끄럽구나"], "sentiment": "중립적" } ], "user_profile": { "relationship_level": "첫_만남", // 자동 계산된 관계 단계 "message_count": 3 } } ``` --- ## 5. 추후 활용 방향 ### 5.1 현재 시스템의 한계 ``` 단순 지표: - 대화 횟수만으로 관계 판단 - 키워드 단순 매칭 - 고정된 성격 변수 기능 한계: - 유머 매트릭스 값이 실시간 변경되지 않음 - 시간 요소가 151개 변수에 직접 반영되지 않음 ``` ### 5.2 발전 방향 #### A. 다차원 관계 점수 시스템 ```python 관계_점수 = { "물리적_상호작용": { "QR_스캔_횟수": 0, "앱_사용_시간": 0, "연속_접속_일수": 0 }, "대화_품질": { "깊은_대화_점수": AI_분석_기반, "감정_공유_빈도": 감정_키워드_빈도, "개인정보_공유": 사적_정보_수준 }, "지속성": { "주간_접속_빈도": 0, "월간_활동_점수": 0 } } ``` #### B. 키워드 분석 고도화 ```python # 현재: 단순 매칭 "커피" → "음식" 카테고리 # 목표: 의미 단위 분석 "스트레스 받을 때 커피 마셔" → { "상황": "스트레스", "행동": "커피", "의미": "스트레스_해소_방법", "감정": "부정적_상황_대처" } ``` #### C. 게이미피케이션 확장 ```python 관계_레벨링 = { 1: "첫_만남" (0-100점), 5: "친근한_사이" (500점), 10: "절친" (2000점), 20: "가족_같은_사이" (10000점) } 점수_획득_방법 = { "QR_스캔": 50점, "깊은_대화": 100점, "연속_접속": 20점/일, "감정_공유": 80점 } ``` ### 5.3 실제 서비스 확장 #### IoT 연동 ``` 스마트홈: 조명 + AI 페르소나 자동차: 운전 패턴 + 대화 동반자 웨어러블: 생체 신호 + 감정 상태 반영 ``` #### B2B 활용 ``` 의료: 복약 관리 + 정서적 지지 교육: 학습 동기 + 개인화 교육 마케팅: 브랜드 스토리텔링 ``` --- ## 6. 구현 우선순위 ### 단기 (3개월) 1. **시간 변수 통합**: 함께한 시간을 151개 변수에 직접 반영 2. **실시간 유머 조정**: 대화 피드백으로 매트릭스 값 업데이트 3. **키워드 significance**: 빈도+카테고리+맥락 종합 점수 ### 중기 (6개월) 1. **다차원 관계 시스템**: 물리적+대화+지속성 종합 점수 2. **AI 의미 분석**: 문장 임베딩 기반 키워드 추출 3. **동적 성격 진화**: 대화 패턴 기반 성격 미세 조정 ### 장기 (12개월) 1. **IoT 연동**: 실제 기기와 페르소나 융합 2. **멀티모달**: 음성, 이미지 입력 처리 3. **B2B 확장**: 의료, 교육, 마케팅 솔루션 --- **현재 허깅페이스 앱**: [nompang_test](https://huggingface.co/spaces/username/nompang_test) **테스트 데이터**: test0 (30회 대화), test1 (3회 대화) **핵심 파일**: app.py, modules/persona_generator.py