MisConceptTutor / app.py
Jintonic92's picture
Update app.py
1883518 verified
raw
history blame
2.98 kB
@st.cache_resource
def load_answer_verifier():
"""λ‹΅μ•ˆ 검증 λͺ¨λΈ λ‘œλ“œ"""
from src.ThirdModule.module3 import AnswerVerifier
return AnswerVerifier()
def generate_similar_question(wrong_q, misconception_id, generator):
"""μœ μ‚¬ 문제 생성 및 검증"""
logger.info(f"Generating similar question for misconception_id: {misconception_id}")
# μž…λ ₯ 데이터 μœ νš¨μ„± 검사
if not isinstance(wrong_q, dict):
logger.error(f"Invalid wrong_q type: {type(wrong_q)}")
st.error("μœ μ‚¬ 문제 생성에 ν•„μš”ν•œ 데이터 ν˜•μ‹μ΄ 잘λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
return None
# misconception_idκ°€ μœ νš¨ν•œμ§€ 확인
if pd.isna(misconception_id):
logger.warning("misconception_id is NaN")
return None
try:
# 데이터 μ€€λΉ„
input_data = {
'construct_name': str(wrong_q.get('ConstructName', '')),
'subject_name': str(wrong_q.get('SubjectName', '')),
'question_text': str(wrong_q.get('QuestionText', '')),
'correct_answer_text': str(wrong_q.get(f'Answer{wrong_q["CorrectAnswer"]}Text', '')),
'wrong_answer_text': str(wrong_q.get(f'Answer{st.session_state.selected_wrong_answer}Text', '')),
'misconception_id': int(misconception_id)
}
# μœ μ‚¬ 문제 생성
generated_q, _ = generator.generate_similar_question_with_text(**input_data)
if generated_q:
verifier = load_answer_verifier()
with st.spinner("λ‹΅μ•ˆμ„ κ²€μ¦ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€..."):
# λ‹΅μ•ˆ 검증 μ‹œλ„
verified_answer = verifier.verify_answer(
question=generated_q.question,
choices=generated_q.choices
)
if verified_answer:
logger.info(f"Answer verified: {verified_answer}")
# κ²€μ¦λœ λ‹΅μ•ˆμœΌλ‘œ μ—…λ°μ΄νŠΈ
return {
'question': generated_q.question,
'choices': generated_q.choices,
'correct': verified_answer, # κ²€μ¦λœ λ‹΅μ•ˆ μ‚¬μš©
'explanation': generated_q.explanation
}
else:
# 검증 μ‹€νŒ¨ μ‹œ 원본 λ‹΅μ•ˆ μ‚¬μš©
logger.warning("Answer verification failed, using original answer")
return {
'question': generated_q.question,
'choices': generated_q.choices,
'correct': generated_q.correct_answer,
'explanation': generated_q.explanation
}
except Exception as e:
logger.error(f"Error in generate_similar_question: {str(e)}")
st.error(f"문제 생성 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€: {str(e)}")
return None
return None