Spaces:
Sleeping
Sleeping
이코드를 적용하라 | |
한국어로 답하라 | |
아래 코드를 (OOOOO 자세한 설명)개선하려고한다. 코드를 생성하라 | |
요청한 사항외 절대 다른 코드는 수정하지마라 | |
import gradio as gr | |
# 질문 설정 (총 20개로 축소) | |
questions = [ | |
"나는 다른 사람들과 함께 있을 때 에너지를 얻는다.", | |
"나는 새로운 사람들과 쉽게 친해지는 편이다.", | |
"나는 대규모 모임을 즐긴다.", | |
"나는 혼자 보내는 시간이 편하다.", | |
"나는 친구들과 대화하는 시간이 즐겁다.", | |
"나는 현실적이고 구체적인 정보를 선호한다.", | |
"나는 과거의 경험을 바탕으로 결정을 내린다.", | |
"나는 큰 그림보다는 세부사항에 집중한다.", | |
"나는 새로운 아이디어보다는 실질적인 것을 선호한다.", | |
"나는 직관보다는 자료에 의존하는 편이다.", | |
"나는 감정보다는 논리적으로 판단하려 한다.", | |
"나는 갈등 상황에서 공정함을 중시한다.", | |
"나는 결정을 내릴 때 사람들의 감정보다는 사실에 집중한다.", | |
"나는 문제 해결에 있어 논리적 접근을 선호한다.", | |
"나는 비판을 받더라도 감정적으로 반응하지 않으려 한다.", | |
"나는 계획에 따라 일하는 것을 선호한다.", | |
"나는 마감 기한 전에 일을 마무리하려 노력한다.", | |
"나는 일의 세부 계획을 미리 세워놓는다.", | |
"나는 예측 가능한 일정을 선호한다.", | |
"나는 변화보다는 안정된 상태를 선호한다." | |
] | |
# MBTI 성격 유형 설명 데이터 | |
mbti_details = { | |
"ESTJ": { | |
"성격 성향": "실용적이고 조직적, 리더십 강함", | |
"기질 설명": "현실적이며 체계적인 접근을 좋아함", | |
"추천 직업": ["경영자", "프로젝트 매니저", "군인"], | |
"좋은 궁합": ["ISFJ", "ISTJ"], | |
"나쁜 궁합": ["INFP", "ENFP"], | |
"궁합 이유": { | |
"좋은": "비슷한 현실주의 성향과 체계적인 사고를 공유하기 때문에 잘 어울림.", | |
"나쁜": "감정적으로 충돌할 가능성이 높고, 자유로운 성향이 충돌할 수 있음." | |
} | |
}, | |
"ENTJ": { | |
"성격 성향": "전략적이고 결단력 있음", | |
"기질 설명": "리더십을 중시하고 목표 지향적임", | |
"추천 직업": ["CEO", "변호사", "컨설턴트"], | |
"좋은 궁합": ["INTP", "ENFP"], | |
"나쁜 궁합": ["ISFP", "INFP"], | |
"궁합 이유": { | |
"좋은": "자유로운 사고를 존중하며, 문제 해결 능력이 잘 어우러짐.", | |
"나쁜": "감정적으로 충돌하고, 세부 사항을 무시하는 경향이 문제를 일으킬 수 있음." | |
} | |
}, | |
# 다른 MBTI 유형 설명 추가 | |
} | |
# MBTI 결과에 따른 설명 제공 함수 | |
def get_mbti_details(mbti_type): | |
details = mbti_details.get(mbti_type, None) | |
if details: | |
description = f"성격 성향: {details['성격 성향']}\n" | |
description += f"기질 설명: {details['기질 설명']}\n" | |
description += f"추천 직업: {', '.join(details['추천 직업'])}\n" | |
description += f"좋은 궁합: {', '.join(details['좋은 궁합'])}\n" | |
description += f"나쁜 궁합: {', '.join(details['나쁜 궁합'])}\n" | |
description += f"좋은 궁합 이유: {details['궁합 이유']['좋은']}\n" | |
description += f"나쁜 궁합 이유: {details['궁합 이유']['나쁜']}\n" | |
return description | |
return "알 수 없는 MBTI 유형입니다." | |
# 결과 계산 함수 | |
def calculate_mbti(responses): | |
# 각 성향 점수 계산 | |
score_mapping = { | |
"매우 아니다": 1, | |
"아니다": 2, | |
"보통이다": 3, | |
"그렇다": 4, | |
"매우 그렇다": 5 | |
} | |
scores = [score_mapping[response] for response in responses] | |
e_score = sum([scores[i] for i in range(5)]) # Extraversion/Introversion 관련 점수 | |
s_score = sum([scores[i + 5] for i in range(5)]) # Sensing/Intuition 관련 점수 | |
t_score = sum([scores[i + 10] for i in range(5)]) # Thinking/Feeling 관련 점수 | |
j_score = sum([scores[i + 15] for i in range(5)]) # Judging/Perceiving 관련 점수 | |
mbti_type = "" | |
mbti_type += "E" if e_score > 15 else "I" | |
mbti_type += "S" if s_score > 15 else "N" | |
mbti_type += "T" if t_score > 15 else "F" | |
mbti_type += "J" if j_score > 15 else "P" | |
# 유형이 얼마나 맞는지 계산 (%) | |
total_score = e_score + s_score + t_score + j_score | |
percentage = round(total_score / 100 * 100, 2) | |
description = get_mbti_details(mbti_type) | |
return f"당신의 MBTI 유형은 {mbti_type}입니다. 이 유형이 맞을 확률은 {percentage}%입니다.\n\n{description}" | |
# Gradio 인터페이스 생성 | |
def create_interface(): | |
# 라디오 버튼을 "매우 아니다" ~ "매우 그렇다" 값으로 설정 | |
choices = ["매우 아니다", "아니다", "보통이다", "그렇다", "매우 그렇다"] | |
inputs = [gr.Radio(choices=choices, label=questions[i]) for i in range(len(questions))] | |
# Gradio 인터페이스 설정 | |
interface = gr.Interface(fn=calculate_mbti, inputs=inputs, outputs="text", title="MBTI 분석기", description="20개의 질문에 답하고 당신의 MBTI 유형과 그 설명을 확인하세요!") | |
return interface | |
# 인터페이스 실행 | |
interface = create_interface() | |
interface.launch() | |
===== Application Startup at 2024-08-22 10:52:55 ===== | |
/usr/local/lib/python3.10/site-packages/gradio/utils.py:1002: UserWarning: Expected 1 arguments for function <function calculate_mbti at 0x7f1d47a79510>, received 20. | |
warnings.warn( | |
/usr/local/lib/python3.10/site-packages/gradio/utils.py:1010: UserWarning: Expected maximum 1 arguments for function <function calculate_mbti at 0x7f1d47a79510>, received 20. | |
warnings.warn( | |
Running on local URL: http://0.0.0.0:7860 | |
To create a public link, set `share=True` in `launch()`. | |
Traceback (most recent call last): | |
File "/usr/local/lib/python3.10/site-packages/gradio/queueing.py", line 536, in process_events | |
response = await route_utils.call_process_api( | |
File "/usr/local/lib/python3.10/site-packages/gradio/route_utils.py", line 288, in call_process_api | |
output = await app.get_blocks().process_api( | |
File "/usr/local/lib/python3.10/site-packages/gradio/blocks.py", line 1931, in process_api | |
result = await self.call_function( | |
File "/usr/local/lib/python3.10/site-packages/gradio/blocks.py", line 1516, in call_function | |
prediction = await anyio.to_thread.run_sync( # type: ignore | |
File "/usr/local/lib/python3.10/site-packages/anyio/to_thread.py", line 56, in run_sync | |
return await get_async_backend().run_sync_in_worker_thread( | |
File "/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 2177, in run_sync_in_worker_thread | |
return await future | |
File "/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 859, in run | |
result = context.run(func, *args) | |
File "/usr/local/lib/python3.10/site-packages/gradio/utils.py", line 826, in wrapper | |
response = f(*args, **kwargs) | |
TypeError: calculate_mbti() takes 1 positional argument but 20 were given |