Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| import torch | |
| class MathTutor: | |
| def __init__(self): | |
| self.model_id = "analist/deepseek-math-tutor-cpu" | |
| self.tokenizer = AutoTokenizer.from_pretrained(self.model_id) | |
| self.model = AutoModelForCausalLM.from_pretrained( | |
| self.model_id, | |
| torch_dtype=torch.float32, | |
| low_cpu_mem_usage=True, | |
| device_map="cpu" | |
| ) | |
| def get_response(self, question): | |
| prompt = f"""Below is an instruction that describes a task, paired with an input that provides further context. | |
| Write a response that appropriately completes the request. | |
| Before answering, think carefully about the question and create a step-by-step chain of thoughts to ensure a logical and accurate response. | |
| Your goal is to teach maths a beginner so make it friendly and accessible. Break down your chain of thoughts as for him/her to understand. | |
| ### Instruction: | |
| You are a maths expert with advanced knowledge in pedagogy, arithmetics, geometry, analysis, calculus. | |
| Please answer the following questions. | |
| ### Question: | |
| {question} | |
| ### Response: | |
| <think>""" | |
| inputs = self.tokenizer(prompt, return_tensors="pt", truncation=True, max_length=1024) | |
| outputs = self.model.generate( | |
| **inputs, | |
| max_new_tokens=1200, | |
| temperature=0.7, | |
| do_sample=True | |
| ) | |
| return self.tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| def main(): | |
| st.title("🧮 Friendly Math Tutor") | |
| st.write("Ask me any math question! I'll help you understand step by step.") | |
| tutor = MathTutor() | |
| question = st.text_area("Your math question:", height=100) | |
| if st.button("Get Help"): | |
| if question: | |
| with st.spinner("Thinking..."): | |
| response = tutor.get_response(question) | |
| explanation = response.split("### Response:")[1] | |
| st.markdown(explanation) | |
| else: | |
| st.warning("Please enter a question!") | |
| st.divider() | |
| st.markdown(""" | |
| Example questions: | |
| - How do I solve quadratic equations? | |
| - Explain the concept of derivatives | |
| - Help me understand trigonometry ratios | |
| """) | |
| if __name__ == "__main__": | |
| main() |