Spaces:
Sleeping
Sleeping
| title: 물魂(물건의 혼) - 사물 페르소나 생성기 | |
| emoji: 🧸 | |
| colorFrom: indigo | |
| colorTo: blue | |
| sdk: gradio | |
| sdk_version: 5.30.0 | |
| app_file: app.py | |
| pinned: false | |
| # 물魂 (물건의 혼) - 사물 페르소나 생성기 | |
| 사물에 인격을 부여하여 대화할 수 있는 페르소나 생성 및 테스트 도구입니다. | |
| ## 프로젝트 개요 | |
| 물魂(물건의 혼) 프로젝트는 일상 사물에 독특한 성격과 개성을 부여하여 사용자와 대화할 수 있는 페르소나를 생성하는 연구 도구입니다. 이 도구는 사물의 물리적 특성에서 성격적 특성을 도출하고, 매력적인 페르소나를 구축하여 대화 상호작용을 탐구하는 데 중점을 둡니다. | |
| ## 주요 기능 | |
| - **이미지 기반 분석**: 사물 이미지를 분석하여 물리적 특성에서 성격 특성을 추론 | |
| - **직관적인 페르소나 생성**: 슬라이더, 선택 버튼 등 다양한 UI 요소를 통한 손쉬운 페르소나 설계 | |
| - **LLM 기반 페르소나 강화**: Google Gemini API를 활용한 페르소나 특성 강화 및 세부화 | |
| - **대화 시뮬레이션**: 생성된 페르소나와 대화 테스트 및 상호작용 | |
| - **페르소나 라이브러리**: 생성된 페르소나 저장 및 관리 | |
| - **대화 기록 및 분석**: 대화 내용 저장, 통계 분석, JSON 형식 내보내기 | |
| ## 사용 기술 | |
| - **Gradio**: 직관적인 웹 UI 구현 | |
| - **Google Gemini API**: LLM 기반 페르소나 생성 및 대화 응답 생성 | |
| - **PIL/Pillow**: 이미지 처리 및 분석 | |
| - **Python**: 백엔드 로직 구현 | |
| ## 설치 방법 | |
| ### 1. 필수 조건 | |
| - Python 3.9 이상 | |
| - Google AI Studio API 키 (Gemini Pro 모델 접근 권한) | |
| ### 2. 설치 과정 | |
| 1. 저장소 클론: | |
| ```bash | |
| git clone https://github.com/your-username/memory_tag_mvp.git | |
| cd memory_tag_mvp/연구/persona_creator | |
| ``` | |
| 2. 가상 환경 생성 및 활성화: | |
| ```bash | |
| python -m venv venv | |
| source venv/bin/activate # Linux/Mac | |
| venv\Scripts\activate # Windows | |
| ``` | |
| 3. 의존성 패키지 설치: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 4. 환경 변수 설정: | |
| `.env` 파일을 프로젝트 루트 디렉토리에 생성하고 다음 내용 추가: | |
| ``` | |
| GEMINI_API_KEY=your_api_key_here | |
| ``` | |
| 또는 시스템 환경 변수로 설정: | |
| ```bash | |
| # Linux/Mac | |
| export GEMINI_API_KEY=your_api_key_here | |
| # Windows (PowerShell) | |
| $env:GEMINI_API_KEY="your_api_key_here" | |
| # Windows (Command Prompt) | |
| set GEMINI_API_KEY=your_api_key_here | |
| ``` | |
| > ⚠️ **중요**: Google AI Studio에서 Gemini API 키를 발급받아야 합니다. 발급 방법은 [Google AI Studio](https://ai.google.dev/) 웹사이트를 참조하세요. | |
| 5. 아이콘 파일 준비: | |
| ``` | |
| assets/icons/persona_avatar.png | |
| ``` | |
| 경로에 페르소나 아바타 이미지 파일(PNG 형식)을 추가하세요. 아이콘 이미지는 원형이나 정사각형 형태의 512x512 픽셀 크기를 권장합니다. | |
| 아이콘 파일이 없는 경우 다음 명령어로 임시 아이콘을 생성할 수 있습니다: | |
| ```python | |
| from PIL import Image, ImageDraw | |
| import os | |
| # 디렉토리 확인 | |
| if not os.path.exists("assets/icons"): | |
| os.makedirs("assets/icons", exist_ok=True) | |
| # 기본 아이콘 생성 | |
| img = Image.new('RGBA', (512, 512), (79, 70, 229, 255)) # 인디고 배경 | |
| draw = ImageDraw.Draw(img) | |
| draw.ellipse((100, 100, 412, 412), fill=(255, 255, 255, 255)) # 흰색 원 | |
| img.save('assets/icons/persona_avatar.png') | |
| ``` | |
| ### 3. 실행 방법 | |
| ```bash | |
| python app.py | |
| ``` | |
| 웹 브라우저에서 `http://localhost:7860`으로 접속 | |
| ## 사용 방법 | |
| ### 페르소나 생성 | |
| 1. **사물 정보 입력**: 이름, 유형, 나이/사용 기간, 설명을 입력합니다. | |
| 2. **이미지 분석(선택사항)**: 사물 이미지를 업로드하여 물리적 특성 기반의 성격 특성을 자동으로 추출합니다. | |
| 3. **성격 특성 조정**: 슬라이더를 사용하여 온기, 능력, 신뢰성 등의 성격 특성을 조정합니다. | |
| 4. **소통 방식 설정**: 대화 스타일, 유머 유형, 말투 패턴을 설정합니다. | |
| 5. **관계 성향 설정**: 애착 스타일, 관계 깊이 선호도, 초기 태도를 선택합니다. | |
| 6. **페르소나 생성**: "페르소나 생성하기" 버튼을 클릭하여 LLM을 통해 페르소나를 강화하고 생성합니다. | |
| ### 대화 테스트 | |
| 1. **대화 시작**: 생성된 페르소나를 선택하고 "대화 시작하기" 버튼을 클릭합니다. | |
| 2. **메시지 입력**: 텍스트 입력창에 메시지를 입력하고 전송합니다. | |
| 3. **대화 내용 저장**: 대화가 끝나면 "대화 내용 저장" 버튼으로 대화를 JSON 형식으로 저장합니다. | |
| ### 페르소나 라이브러리 | |
| 1. **저장된 페르소나 탐색**: 생성한 모든 페르소나를 확인하고 관리합니다. | |
| 2. **페르소나 불러오기**: 저장된 페르소나를 에디터로 불러와 수정하거나 대화 테스트로 불러와 대화할 수 있습니다. | |
| ## 프로젝트 구조 | |
| ``` | |
| persona_creator/ | |
| ├── app.py # 메인 그라디오 애플리케이션 | |
| ├── requirements.txt # 파이썬 패키지 의존성 | |
| ├── packages.txt # 시스템 패키지 (HF Spaces용) | |
| ├── 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 # 재질-성격 매핑 규칙 | |
| │ ├── personality_templates/ # 카테고리별 기본 성격 템플릿 | |
| │ ├── conversation_logs/ # 대화 기록 저장소 | |
| │ └── user_personas/ # 사용자 생성 페르소나 | |
| ├── styles/ | |
| │ └── custom.css # UI 커스텀 스타일 | |
| └── assets/ | |
| ├── examples/ # 예시 이미지 | |
| └── icons/ # UI 아이콘 | |
| └── persona_avatar.png # 페르소나 아바타 이미지 | |
| ``` | |
| ## 허깅페이스 스페이스 배포 | |
| 이 프로젝트는 허깅페이스 스페이스에 쉽게 배포할 수 있습니다: | |
| 1. 허깅페이스 계정 생성 및 로그인 | |
| 2. 새 스페이스 생성 (Gradio App 선택) | |
| 3. 저장소 URL 연결 또는 파일 업로드 | |
| 4. 환경 변수에 `GEMINI_API_KEY` 설정 | |
| 5. 스페이스 설정에서 Python 패키지와 시스템 패키지가 올바르게 설치되는지 확인 | |
| ## 연구 용도 | |
| 이 프로젝트는 다음과 같은 연구 목적으로 활용됩니다: | |
| 1. **사물 인격화의 심리적 영향**: 사물에 인격을 부여했을 때 사용자의 인식과 상호작용 패턴 연구 | |
| 2. **매력적 캐릭터 요소 분석**: 어떤 성격 특성 조합이 가장 매력적이고 상호작용하기 쉬운지 탐구 | |
| 3. **관계 형성 패턴**: 페르소나와의 지속적 상호작용에서 형성되는 관계의 특성 연구 | |
| 4. **물리적-성격적 특성 매핑**: 사물의 물리적 특성이 어떻게 성격적 특성으로 인지되는지 분석 | |
| ## 제한사항 | |
| - 현재 버전은 연구 및 개발 목적으로 제공됩니다. | |
| - Gemini API 키가 필요하며, API 사용량 제한에 따라 기능이 제한될 수 있습니다. | |
| - 이미지 분석 기능은 현재 더미 분석을 제공하며, 향후 더 정교한 컴퓨터 비전 모델로 대체될 예정입니다. | |
| ## 라이센스 | |
| 이 프로젝트는 MIT 라이센스 하에 배포됩니다. |