Spaces:
Sleeping
Sleeping
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 |