nps_test / info.md
haepada's picture
docs: 성격 변수 개수 127개→151개로 수정 (README.md, info.md)
114e351

A newer version of the Gradio SDK is available: 6.6.0

Upgrade

놈팽쓰(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개 세부 변수)

# 예시: 온기 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 대화 분석 시스템

자동 추출 정보

keywords = {
    "word": {
        "category": "음식/관계/취미/감정/기타",
        "frequency": 언급 횟수,
        "last_mentioned": "날짜"
    }
}

user_profile = {
    "message_count": 총 대화 횟수,
    "avg_message_length": 평균 문자수,
    "relationship_level": "첫_만남/알아가는_중/친숙함/친밀함",
    "emotional_tendency": "중립적/긍정적/부정적"
}

3. 샘플 대화 분석

3.1 test1 - 뭉이씨 (초기 단계)

대화 내용

사용자: "ㄴ"
뭉이씨: "ㄴ? ㅋㅋㅋ 무슨 'ㄴ'이야! 혹시 나 지금 글씨 연습시키는 거야?"

사용자: "에휴 너 좀 시끄럽구나?"
뭉이씨: "에헤이! 😅 시끄럽다니, 섭섭한걸?",

사용자: "너는 뭐야 소개해줘"
뭉이씨: "와! 😄 내가 누군지 궁금해? 뭉이라고 해! 전기 주전자인데, 좀 특별한 영혼이 깃든?"

자동 생성된 분석 결과

{
  "message_count": 3,
  "avg_message_length": 8.67,
  "relationship_level": "첫_만남",
  "keywords": ["에휴", "시끄럽구나", "너는", "뭐야", "소개해줘"],
  "emotional_tendency": "중립적"
}

3.2 test0 - 커피포트 (발전된 단계)

30회 대화 후 결과

{
  "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 페르소나 정보 확인

// 뭉이씨_20250528_053729.json
{
  "성격특성": {
    "온기": 75,      // 사용자 설정값
    "능력": 68,
    "외향성": 82
  },
  "성격변수151": {
    "W01_친절함": 78,  // 자동 계산된 세부 성격
    "H01_유머감각": 75,
    // ... 총 151개
  },
  "유머매트릭스": {
    "warmth_vs_wit": 45.925,    // 유머 스타일 좌표
    "sarcasm_level": 45.9725    // 풍자 수준
  }
}

4.2 대화 기록 확인

// 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. 다차원 관계 점수 시스템

관계_점수 = {
    "물리적_상호작용": {
        "QR_스캔_횟수": 0,
        "앱_사용_시간": 0,
        "연속_접속_일수": 0
    },
    "대화_품질": {
        "깊은_대화_점수": AI_분석_기반,
        "감정_공유_빈도": 감정_키워드_빈도,
        "개인정보_공유": 사적_정보_수준
    },
    "지속성": {
        "주간_접속_빈도": 0,
        "월간_활동_점수": 0
    }
}

B. 키워드 분석 고도화

# 현재: 단순 매칭
"커피""음식" 카테고리

# 목표: 의미 단위 분석
"스트레스 받을 때 커피 마셔" → {
    "상황": "스트레스",
    "행동": "커피",
    "의미": "스트레스_해소_방법",
    "감정": "부정적_상황_대처"
}

C. 게이미피케이션 확장

관계_레벨링 = {
    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
테스트 데이터: test0 (30회 대화), test1 (3회 대화)
핵심 파일: app.py, modules/persona_generator.py