Spaces:
Sleeping
Sleeping
haepa_mac
Add multi-API support with OpenAI and improved UI - comprehensive system with dynamic API switching, enhanced PersonaGenerator, and validation tests
572fbe8
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| from modules.persona_generator import PersonaGenerator | |
| import traceback | |
| import json | |
| def test_persona_creation(): | |
| """페르소나 생성 테스트""" | |
| try: | |
| print("🔧 PersonaGenerator 초기화...") | |
| generator = PersonaGenerator() | |
| print("✅ 초기화 성공") | |
| # 8가지 대표 스테레오타입 테스트 | |
| test_cases = [ | |
| { | |
| "name": "열정적_엔터테이너", | |
| "image_analysis": { | |
| 'object_type': '스피커', | |
| 'colors': ['red', 'gold'], | |
| 'materials': ['plastic'], | |
| 'condition': '새것', | |
| 'personality_hints': { | |
| 'warmth_factor': 85, | |
| 'competence_factor': 45, | |
| 'humor_factor': 90 | |
| } | |
| }, | |
| "user_context": {'name': '댄스킹'} | |
| }, | |
| { | |
| "name": "차가운_완벽주의자", | |
| "image_analysis": { | |
| 'object_type': '시계', | |
| 'colors': ['black', 'silver'], | |
| 'materials': ['metal'], | |
| 'condition': '완벽함', | |
| 'personality_hints': { | |
| 'warmth_factor': 25, | |
| 'competence_factor': 95, | |
| 'humor_factor': 20 | |
| } | |
| }, | |
| "user_context": {'name': '프리시전'} | |
| }, | |
| { | |
| "name": "따뜻한_상담사", | |
| "image_analysis": { | |
| 'object_type': '쿠션', | |
| 'colors': ['beige', 'pink'], | |
| 'materials': ['fabric'], | |
| 'condition': '부드러움', | |
| 'personality_hints': { | |
| 'warmth_factor': 95, | |
| 'competence_factor': 55, | |
| 'humor_factor': 30 | |
| } | |
| }, | |
| "user_context": {'name': '허니'} | |
| } | |
| ] | |
| for i, test_case in enumerate(test_cases, 1): | |
| print(f"\n🎭 테스트 {i}: {test_case['name']}") | |
| try: | |
| persona = generator.create_frontend_persona( | |
| test_case['image_analysis'], | |
| test_case['user_context'] | |
| ) | |
| print(f" ✅ 생성 성공: {persona['기본정보']['이름']}") | |
| print(f" 📊 온기: {persona['성격특성']['온기']:.1f}") | |
| print(f" 📊 능력: {persona['성격특성']['능력']:.1f}") | |
| print(f" 📊 유머: {persona['성격특성']['유머감각']:.1f}") | |
| print(f" 💎 매력적결함: {len(persona['매력적결함'])}개") | |
| print(f" 🌈 모순특성: {len(persona['모순적특성'])}개") | |
| print(f" 📝 127변수: {len(persona.get('성격프로필', {}))}개") | |
| # 간단한 대화 테스트 | |
| try: | |
| response = generator.chat_with_persona(persona, "안녕!", []) | |
| print(f" 💬 대화 성공: {len(response)}자") | |
| print(f" 💬 응답 미리보기: {response[:50]}...") | |
| except Exception as e: | |
| print(f" ❌ 대화 오류: {str(e)}") | |
| except Exception as e: | |
| print(f" ❌ 생성 오류: {str(e)}") | |
| traceback.print_exc() | |
| except Exception as e: | |
| print(f"❌ 전체 오류: {str(e)}") | |
| traceback.print_exc() | |
| def test_personality_profile(): | |
| """PersonalityProfile 클래스 테스트""" | |
| try: | |
| print("\n🧬 PersonalityProfile 테스트...") | |
| from modules.persona_generator import PersonalityProfile | |
| profile = PersonalityProfile() | |
| print(f"✅ 기본 생성: {len(profile.variables)}개 변수") | |
| # 카테고리 요약 테스트 | |
| warmth_avg = profile.get_category_summary("W") | |
| print(f"✅ 온기 평균: {warmth_avg}") | |
| # 매력적 결함 생성 테스트 | |
| flaws = profile.generate_attractive_flaws() | |
| print(f"✅ 매력적 결함: {len(flaws)}개") | |
| # 모순적 특성 생성 테스트 | |
| contradictions = profile.generate_contradictions() | |
| print(f"✅ 모순적 특성: {len(contradictions)}개") | |
| except Exception as e: | |
| print(f"❌ PersonalityProfile 오류: {str(e)}") | |
| traceback.print_exc() | |
| def test_humor_matrix(): | |
| """HumorMatrix 클래스 테스트""" | |
| try: | |
| print("\n🎪 HumorMatrix 테스트...") | |
| from modules.persona_generator import HumorMatrix | |
| matrix = HumorMatrix() | |
| print(f"✅ 기본 생성: {matrix.dimensions}") | |
| # 템플릿 테스트 | |
| matrix2 = HumorMatrix.from_template("witty_wordsmith") | |
| print(f"✅ 템플릿 생성: {matrix2.dimensions}") | |
| # 프롬프트 생성 테스트 | |
| prompt = matrix.generate_humor_prompt() | |
| print(f"✅ 프롬프트 생성: {len(prompt)}자") | |
| except Exception as e: | |
| print(f"❌ HumorMatrix 오류: {str(e)}") | |
| traceback.print_exc() | |
| if __name__ == "__main__": | |
| print("🚀 놈팽쓰 페르소나 시스템 디버깅 테스트") | |
| print("=" * 50) | |
| test_personality_profile() | |
| test_humor_matrix() | |
| test_persona_creation() | |
| print("\n✅ 디버깅 테스트 완료") |