persona_create / info.md
haepada's picture
Upload 12 files
5581923 verified

A newer version of the Gradio SDK is available: 6.6.0

Upgrade

사물 페르소나 생성기 (物魂 Creator)

1. 프로젝트 개요

사물 페르소나 생성기는 일상 사물에 고유한 성격과 개성을 부여하고 테스트할 수 있는 실험적 도구입니다. 본 도구는 "일상 사물 인격화를 통한 관계형성 AI 시스템 연구"를 뒷받침하기 위한 페르소나 생성, 테스트 및 데이터 수집을 목적으로 합니다. 사물의 물리적 특성으로부터 성격을 추론하고, 이를 다양한 설정을 통해 조정하며, 생성된 페르소나와의 대화를 통해 관계 발전 양상을 연구합니다.

2. 코드 구현 및 기능 모듈

2.1 이미지 기반 성격 추론 모듈 (image_analyzer.py)

  • 이미지 분석 시스템

    • PIL/Pillow 라이브러리 활용 이미지 로드 및 처리
    • 물리적 특성(형태, 색상, 재질) 추출 함수 구현
    • 특성별 성격 매핑 로직: analyze_image() 함수로 구현
  • 물리적 특성-성격 매핑 엔진

    • JSON 기반 매핑 데이터 관리: load_trait_mappings() 함수
    • 형태 매핑: 곡선형/직선형/대칭형/비대칭형/단순형/복잡형
    • 색상 매핑: 밝은/어두운/따뜻한/차가운/화려한/단색
    • 재질 매핑: 나무/금속/유리/가죽/플라스틱/천/종이
    • 매핑 데이터 자동 생성 및 로드 기능

2.2 질문 생성 및 페르소나 강화 모듈 (question_generator.py, persona_generator.py)

  • AI 기반 맞춤형 질문 생성기

    • 사물 유형별 특화 질문 템플릿 (8개 카테고리)
    • 성격 특성별 맞춤형 질문 생성 로직
    • Google Gemini API 활용 동적 질문 생성: generate_llm_questions() 함수
  • 페르소나 강화 시스템

    • generate_persona(): 전체 페르소나 생성 파이프라인 함수
    • get_persona_enhancement(): Google Gemini API 호출로 페르소나 풍부화
    • 성격 특성 요약 자동 생성: get_trait_summary() 함수
    • 배경 이야기, 경험 자동 생성: generate_experiences() 함수

2.3 대화 처리 모듈 (chat_engine.py, gemini_handler.py)

  • 실시간 채팅 시스템

    • 대화 초기화: start_conversation() 함수
    • 메시지 처리: process_message() 함수
    • 대화 내용 관리 및 통계 트래킹 구현
  • 응답 생성 엔진

    • Google Gemini API 연동: generate_response() 함수
    • 프롬프트 엔지니어링: 페르소나 특성에 맞는 응답 유도
    • 초기 인사말 생성: generate_initial_greeting() 함수

2.4 데이터 관리 모듈 (data_manager.py)

  • 파일 시스템 기반 데이터 관리

    • 페르소나 저장: save_persona() 함수
    • 페르소나 로드: load_persona() 함수
    • 대화 기록 저장: save_conversation() 함수
    • 페르소나 및 대화 목록화: list_personas(), list_conversations() 함수
  • 데이터 분석 기능

    • 페르소나 특성 분포 분석: analyze_persona_trait_distribution() 함수
    • 대화 통계 분석: get_conversation_statistics() 함수

2.5 프롬프트 관리 시스템 (prompt_templates.py)

  • 템플릿 기반 프롬프트 관리

    • 페르소나 강화용 프롬프트: PERSONA_ENHANCEMENT_TEMPLATE
    • 이미지 분석용 프롬프트: IMAGE_ANALYSIS_TEMPLATE
    • 대화 응답용 프롬프트: CONVERSATION_RESPONSE_TEMPLATE
    • 질문 생성용 프롬프트: QUESTION_GENERATION_TEMPLATE
  • 프롬프트 포맷 함수

    • format_persona_enhancement_prompt(): 페르소나 강화 프롬프트 포맷
    • format_conversation_prompt(): 대화 응답 프롬프트 포맷
    • format_question_generation_prompt(): 질문 생성 프롬프트 포맷

2.6 웹 인터페이스 (app.py)

  • Gradio 기반 UI 구현

    • 3개 탭 구성: 페르소나 생성, 대화 테스트, 페르소나 라이브러리
    • 이벤트 핸들러 연결: 버튼 클릭, 입력 제출 등
    • 상태 관리: gr.State()를 활용한 페르소나 및 대화 상태 관리
  • 요소별 UI 컴포넌트

    • 이미지 업로드 및 분석: gr.Image, image_analysis_btn
    • 성격 특성 슬라이더: gr.Slider 컴포넌트 6개 활용
    • 채팅 인터페이스: gr.Chatbot, gr.Textbox 조합

3. 기술 스택 및 의존성

3.1 핵심 라이브러리

  • Gradio: 웹 인터페이스 구현 (v3.50.2 이상)
  • Python-dotenv: 환경 변수 관리
  • Requests: API 통신
  • Pillow: 이미지 처리
  • NumPy: 수치 연산
  • Matplotlib: 데이터 시각화 (향후 구현 예정)

3.2 API 통합

  • Google Gemini API: LLM 기반 텍스트 생성
    • gemini_query(): API 요청 함수
    • JSON 파싱: extract_json() 함수

3.3 파일 시스템 구조

persona_creator/
├── app.py                     # 메인 그라디오 애플리케이션
├── requirements.txt           # 의존성 패키지
├── packages.txt               # 시스템 패키지
├── README.md                  # 사용 설명서
├── modules/
│   ├── image_analyzer.py      # 이미지 분석 및 특성 추출
│   ├── question_generator.py  # 동적 질문 생성 엔진
│   ├── persona_generator.py   # 페르소나 생성 엔진
│   ├── chat_engine.py         # 대화 처리 및 기록
│   ├── gemini_handler.py      # 제미나이 API 연동
│   ├── prompt_templates.py    # LLM 프롬프트 템플릿
│   └── data_manager.py        # 데이터 저장 및 분석
├── data/
│   ├── trait_mappings/        # 물리적-성격 특성 매핑 데이터
│   │   ├── shape_traits.json  # 형태-성격 매핑 규칙
│   │   ├── color_traits.json  # 색상-성격 매핑 규칙
│   │   └── material_traits.json # 재질-성격 매핑 규칙
│   ├── user_personas/         # 사용자 생성 페르소나
│   └── conversation_logs/     # 대화 기록 저장소
├── styles/
│   └── custom.css             # UI 커스텀 스타일
└── assets/
    ├── examples/              # 예시 이미지
    └── icons/                 # UI 아이콘

4. 데이터 구조 및 스키마

4.1 페르소나 JSON 스키마

{
  "기본정보": {
    "이름": "String",
    "유형": "String",
    "나이": "String",
    "설명": "String",
    "생성일시": "String (YYYY-MM-DD HH:MM:SS)"
  },
  "성격특성": {
    "온기": "Integer (0-100)",
    "능력": "Integer (0-100)",
    "신뢰성": "Integer (0-100)",
    "친화성": "Integer (0-100)",
    "창의성": "Integer (0-100)",
    "유머감각": "Integer (0-100)"
  },
  "성격요약": "String",
  "매력적결함": ["String", "String"],
  "소통방식": "String",
  "유머스타일": "String",
  "말투패턴": "String",
  "관심사": ["String", "String", "String", ...],
  "배경이야기": "String",
  "경험": ["String", "String", "String", ...],
  "관계성향": {
    "애착스타일": "String",
    "관계깊이선호도": "String",
    "초기태도": "String"
  },
  "filepath": "String (저장 경로)"
}

4.2 대화 기록 JSON 스키마

{
  "persona_name": "String",
  "persona_type": "String",
  "start_time": "String (YYYY-MM-DD HH:MM:SS)",
  "current_time": "String (YYYY-MM-DD HH:MM:SS)",
  "duration_seconds": "Integer",
  "messages": [
    {
      "role": "String (system|user|assistant)",
      "content": "String",
      "timestamp": "String (YYYY-MM-DD HH:MM:SS)"
    },
    ...
  ]
}

4.3 매핑 데이터 스키마

{
  "특성유형": {
    "특성값": {
      "성격특성": [최소값, 최대값]
    }
  }
}

5. 사용자 플로우 시퀀스

5.1 페르소나 생성 시퀀스

  1. 이미지 업로드 → image_analyzer.py → 특성 추출
  2. 성격 특성 조정 → 슬라이더 UI → 특성 값 설정
  3. 매력적 결함, 소통 방식 선택 → 선택형 UI
  4. 생성 버튼 클릭 → persona_generator.py → 페르소나 생성
  5. Google Gemini API 호출 → 페르소나 강화 → JSON 결과 표시
  6. 자동 저장 → data_manager.py → 파일시스템 저장

5.2 대화 테스트 시퀀스

  1. 페르소나 선택 → load_persona() → 메모리에 로드
  2. 대화 시작 → start_conversation() → 인사말 생성
  3. 사용자 입력 → process_message() → 메시지 기록
  4. Gemini API 호출 → generate_response() → 응답 생성
  5. 응답 표시 → Chatbot UI 업데이트 → 통계 업데이트
  6. 대화 저장 → save_conversation() → JSON 저장

6. 프롬프트 시스템 상세

6.1 페르소나 강화 프롬프트 구성

  • 기본 정보 섹션: 이름, 유형, 설명
  • 성격 특성 섹션: 6개 주요 특성 및 값
  • 소통 방식 섹션: 대화/유머 스타일, 말투 패턴
  • 관계 성향 섹션: 애착 스타일, 관계 깊이, 초기 태도
  • 강화 지시사항: 배경 확장, 관심사 추가, 말투 구체화, 성격 특성 독특화

6.2 대화 응답 프롬프트 구성

  • 페르소나 정보 섹션: 기본 정보, 성격 특성, 배경 이야기
  • 표현 방식 섹션: 소통 방식, 유머 스타일, 매력적 결함
  • 대화 맥락 섹션: 최근 대화 기록 포함
  • 응답 지시사항: 페르소나 역할 유지, 성격 특성 반영, 한국어 응답

7. 핵심 함수 및 로직

7.1 이미지 분석 파이프라인

# 이미지 업로드 → 분석 → 특성 매핑 → UI 업데이트
image_analysis_btn.click(
    fn=analyze_image,
    inputs=[object_image],
    outputs=[image_analysis_result, warmth, competence, trustworthiness, 
             friendliness, creativity, humor, object_type, object_description]
)

7.2 페르소나 생성 파이프라인

# 모든 입력 데이터 → 페르소나 생성 → JSON 결과
create_btn.click(
    fn=generate_persona,
    inputs=[
        object_name, object_type, object_age, object_description,
        warmth, competence, trustworthiness, friendliness, creativity, humor,
        flaws, communication_style, humor_style, speech_pattern, interests,
        attachment_style, relationship_depth, initial_attitude, backstory,
        image_analysis_result
    ],
    outputs=[generated_persona, current_persona]
)

7.3 대화 처리 파이프라인

# 사용자 메시지 → 대화 처리 → 응답 생성 → UI 업데이트
send_btn.click(
    fn=process_message,
    inputs=[user_message, conversation_history, current_persona, session_start_time],
    outputs=[chat_display, conversation_history, user_message, chat_stats]
)

8. 향후 개발 계획

8.1 이미지 분석 고도화

  • 컴퓨터 비전 API 통합

    • Google Cloud Vision API 또는 Azure Computer Vision API 연동
    • image_analyzer.py 확장: 실제 객체 인식 및 속성 추출 구현
    • 이미지 감정 분석 알고리즘 추가
  • 물리적-성격 매핑 확장

    • 머신러닝 기반 매핑 시스템: 사용자 피드백으로 학습
    • 더 세분화된 물리적 특성 카테고리 추가
    • 동적 매핑 규칙 업데이트 메커니즘

8.2 페르소나 시스템 확장

  • 모순적 특성 구현

    • persona_generator.py 확장: 모순 특성 정의 및 처리 모듈
    • 상황 인식 모순 표현 로직: 특정 대화 맥락에서 발현
    • 심층 성격 모델 도입: 5요인 모델 또는 MBTI 기반
  • 관계 발전 단계 시스템

    • 새로운 모듈 추가: relationship_tracker.py
    • 6단계 관계 발전 모델: 친숙도, 신뢰도, 친밀도 지표
    • 대화 분석 기반 관계 단계 자동 진단

8.3 연구 도구 및 분석 기능

  • 데이터 분석 도구

    • 새로운 모듈 추가: analytics_engine.py
    • 통계 분석 라이브러리 통합: pandas, scipy
    • 대시보드 UI 개발: plotly 또는 dash 통합
  • A/B 테스트 시스템

    • 실험 설계 모듈: experiment_manager.py
    • 동일 사물의 다른 성격 버전 생성 및 비교
    • 사용자 반응 자동 측정 및 분석

9. 개발자 참고 사항

9.1 API 키 설정

  • .env 파일에 GEMINI_API_KEY=your_api_key 추가
  • Google AI Studio에서 API 키 발급 필요
  • API 비용 추적: 페르소나 생성당 약 0.0002-0.0005 USD

9.2 개발 환경 설정

# 가상환경 생성
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows

# 의존성 설치
pip install -r requirements.txt

# 애플리케이션 실행
python app.py

9.3 Flutter 앱 개발 환경 설정

# Flutter SDK 설치
flutter doctor

# Flutter 프로젝트 생성
flutter create memory_tag_app
cd memory_tag_app

# 필요한 패키지 추가
flutter pub add google_generative_ai
flutter pub add qr_flutter
flutter pub add qr_code_scanner
flutter pub add speech_to_text
flutter pub add flutter_tts
flutter pub add shared_preferences
flutter pub add camera
flutter pub add path_provider

9.4 Flutter 애플리케이션 구조

memory_tag_app/
├── lib/
│   ├── main.dart                # 앱 진입점
│   ├── screens/
│   │   ├── home_screen.dart     # 홈 화면
│   │   ├── scan_screen.dart     # QR 스캔 화면
│   │   ├── chat_screen.dart     # 대화 화면
│   │   ├── create_screen.dart   # 페르소나 생성 화면
│   │   └── settings_screen.dart # 설정 화면
│   ├── models/
│   │   ├── persona.dart         # 페르소나 모델
│   │   └── message.dart         # 대화 메시지 모델
│   ├── services/
│   │   ├── gemini_service.dart   # Google Gemini API 연동
│   │   ├── storage_service.dart  # 로컬 스토리지 관리
│   │   ├── stt_service.dart      # 음성-텍스트 변환
│   │   └── tts_service.dart      # 텍스트-음성 변환
│   ├── widgets/
│   │   ├── chat_bubble.dart     # 채팅 버블 UI
│   │   ├── voice_input_button.dart # 음성 입력 버튼
│   │   └── persona_card.dart    # 페르소나 카드 UI
│   └── utils/
│       ├── constants.dart       # 상수 정의
│       └── prompt_templates.dart # 프롬프트 템플릿
├── assets/
│   ├── images/                  # 이미지 리소스
│   └── sounds/                  # 사운드 리소스
└── pubspec.yaml                 # 의존성 관리

9.5 Google Gemini API 활용

  • 멀티모달 기능 구현

    • 카메라로 캡처한 사물 이미지를 Gemini Pro Vision API에 전송
    • 텍스트와 이미지를 동시에 처리하는 멀티모달 프롬프트 설계
    • 이미지 인식 결과를 바탕으로 사물 성격 자동 추론
  • 제미나이 모델 활용 전략

    • Gemini 1.5 Pro: 복잡한 페르소나 생성 및 긴 컨텍스트 대화용
    • Gemini 1.5 Flash: 빠른 응답이 필요한 일상 대화용
    • 적절한 모델 선택을 통한 비용 최적화 구현
  • 대화 메모리 관리

    • 벡터 임베딩을 활용한 대화 메모리 구현
    • 중요 대화를 요약하여 장기 메모리에 저장
    • 상황에 따른 관련 기억 검색 알고리즘 구현

9.6 QR 코드 기반 연결 시스템

  • QR 코드 생성 및 관리

    • 페르소나 ID와 메타데이터를 포함한 QR 코드 생성
    • 위치 정보를 QR 코드에 포함하여 공간 인식 기능 구현
    • 보안을 위한 QR 코드 암호화 옵션 제공
  • 스캔 및 상호작용 흐름

    • 카메라를 통한 QR 코드 인식 → 페르소나 정보 로드
    • 이전 대화 이력 검색 → 대화 컨텍스트 구성
    • 위치 기반 맞춤형 인사말 및 화제 제안

9.7 음성 인터페이스

  • STT(음성-텍스트) 파이프라인

    • speech_to_text 패키지를 활용한 실시간 음성 인식
    • 오디오 스트림 처리 및 잡음 필터링
    • 다국어 지원(한국어, 영어, 일본어)
  • TTS(텍스트-음성) 파이프라인

    • Google Cloud TTS API 활용한 자연스러운 음성 생성
    • 페르소나별 맞춤 음성(음높이, 속도, 악센트) 설정
    • SSML 태그를 활용한 표현력 있는 음성 구현

9.8 성능 최적화 전략

  • 오프라인 모드 지원

    • 핵심 대화 패턴의 로컬 캐싱
    • 네트워크 연결 없이 기본 응답 생성 가능
    • 연결 복구 시 자동 동기화
  • 배터리 및 데이터 사용량 최적화

    • 저전력 모드에서의 동작 방식 조정
    • 요청 배치 처리를 통한 API 호출 최소화
    • 압축 알고리즘을 활용한 데이터 전송량 감소

9.9 코드 확장 가이드라인

  • 모듈 확장 시 기존 인터페이스 유지
  • 새 기능은 별도 모듈로 구현 후 app.py에 통합
  • 데이터 스키마 변경 시 하위 호환성 고려
  • 로깅 시스템: app.py 내 logging 모듈 설정 추가 필요

9.10 알려진 이슈 및 제한사항

  • Gemini API 한국어 응답이 때때로 불안정함
  • 이미지 분석은 현재 더미 데이터 기반 (실제 분석 미구현)
  • 대용량 대화 히스토리(20턴 이상)에서 성능 저하 발생
  • 페르소나 간 전환 시 일부 UI 상태 초기화 문제

10. 연구 활용 방안

본 도구는 현재 구현된 기능만으로도 다음과 같은 연구에 활용할 수 있습니다:

  • 사물 인격화 효과 연구: 사물에 인격 부여 시 사용자 인식 변화 및 심리적 영향
  • 성격 특성 선호도 연구: 어떤 성격 특성 조합이 더 매력적으로 느껴지는지 분석
  • 대화 패턴 연구: 페르소나 특성에 따른 대화 패턴 차이 및 사용자 참여도 변화
  • 물리적-성격적 매핑 연구: 사물의 물리적 특성이 어떻게 성격 특성으로 인식되는지 분석

향후 개발이 진행됨에 따라 더 다양하고 심층적인 연구가 가능해질 것입니다.

11. 모바일 앱 응용 방안

11.1 상업적 활용 가능성

  • 실물 제품과 연동한 AI 경험

    • 가전제품, 인테리어 소품 등에 QR 코드 부착하여 제품 브랜딩 강화
    • 상품 사용 가이드와 서포트를 재미있는 대화형으로 제공
    • 브랜드 스토리텔링 및 고객 관계 구축 도구로 활용
  • 공간 기반 AI 컴패니언

    • 공공장소, 전시관, 관광지 등에 사물 페르소나 배치
    • 사용자의 이동 경로에 따른 스토리라인 구성
    • 모바일 AR과 결합한 증강 현실 경험 제공

11.2 교육 및 치료적 활용

  • 학습 도우미로 활용

    • 학습 도구와 연결된 AI 튜터 기능
    • 맞춤형 학습 콘텐츠 추천 및 대화형 교육
    • 학습 진도와 이해도 추적 기능
  • 감정적 지원 및 치료 보조

    • 심리 치료 보조 도구로 활용(단, 전문가 감독 하에)
    • 감정 표현 및 사회적 상호작용 연습
    • 일상 루틴 관리 및 정서적 안정 지원

11.3 대화형 IoT 통합

  • 스마트홈 시스템과 연동

    • IoT 기기와 연결하여 자연어로 기기 제어
    • 사용자 생활 패턴 학습 및 맞춤형 자동화 제안
    • 재미있는 페르소나를 통한 스마트홈 경험 향상
  • 위치 기반 서비스 통합

    • GPS 및 실내 위치 추적과 결합
    • 장소별 맞춤형 페르소나와 대화 경험 제공
    • 가상 가이드로서 실내 내비게이션 기능