Spaces:
Sleeping
Sleeping
File size: 2,975 Bytes
0a8c581 1883518 52a539a 1883518 52a539a 1883518 52a539a 1883518 52a539a 1883518 52a539a 1883518 52a539a 1883518 52a539a 1883518 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
@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 |