Views
No views yet
1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch
4
5# Load the model
6model = AutoModelForCausalLM.from_pretrained(
7 "microsoft/phi-2",
8 device_map="auto",
9 torch_dtype=torch.float16,
10 trust_remote_code=True
11)
12model = PeftModel.from_pretrained(model, "your_username/physics-mcq-generator")
13tokenizer = AutoTokenizer.from_pretrained("your_username/physics-mcq-generator")
14tokenizer.pad_token = tokenizer.eos_token
15
16def generate_physics_mcq(chapter, topic, difficulty="Medium", cognitive_skill="Application"):
17 """
18 Generate a physics MCQ with customizable cognitive skill level
19
20 Cognitive Skill Levels:
21 - 'Recall': Basic fact recall and definition questions
22 - 'Application': Applying concepts to solve problems
23 - 'Analysis': Analyzing situations and relationships
24 - 'Evaluation': Complex reasoning and critical evaluation
25 """
26
27 prompt = f"""### Instruction:
28Generate a multiple-choice question (MCQ) for a university entrance exam in Physics.
29
30### Input:
31Subject: Physics | Chapter: {chapter} | Topic: {topic} | Difficulty: {difficulty} | Cognitive_Skill: {cognitive_skill}
32
33### Response:
34Question:"""
35
36 inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
37
38 with torch.no_grad():
39 outputs = model.generate(
40 **inputs,
41 max_new_tokens=250,
42 temperature=0.7,
43 do_sample=True,
44 pad_token_id=tokenizer.eos_token_id
45 )
46
47 return tokenizer.decode(outputs[0], skip_special_tokens=True)
48
49# Examples with different cognitive skills
50print("🧠 Recall Question (Basic knowledge):")
51mcq = generate_physics_mcq("Mechanics", "Newton's Laws", "Easy", "Recall")
52print(mcq)
53
54print("\n⚡ Application Question (Problem solving):")
55mcq = generate_physics_mcq("Electromagnetism", "Ohm's Law", "Medium", "Application")
56print(mcq)
57
58print("\n🔍 Analysis Question (Complex reasoning):")
59mcq = generate_physics_mcq("Thermodynamics", "First Law", "Hard", "Analysis")
60print(mcq)
61
62print("\n🎯 Evaluation Question (Critical thinking):")
63mcq = generate_physics_mcq("Modern Physics", "Quantum Mechanics", "Hard", "Evaluation")
64print(mcq)