Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| from peft import PeftModel | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| # Chargement du modèle PEFT | |
| base_model = "microsoft/Phi-4-mini-instruct" | |
| adapter_repo = "badrben/QCM_5_6_Francais_VF" | |
| tokenizer = AutoTokenizer.from_pretrained(base_model) | |
| model = AutoModelForCausalLM.from_pretrained(base_model) | |
| model = PeftModel.from_pretrained(model, adapter_repo) | |
| # Pipeline de génération | |
| generator = pipeline( | |
| "text-generation", | |
| model=model, | |
| tokenizer=tokenizer, | |
| device_map="auto" # utilise le GPU si disponible | |
| ) | |
| # Fonction pour Gradio | |
| def generate_qcm(user_text): | |
| prompt = ( | |
| f"Texte: {user_text}\n\n" | |
| "Génère une question QCM en français avec 4 choix (A, B, C, D) " | |
| "et indique la bonne réponse. " | |
| "Puis génère une réponse textuelle QHPE niveau 1 avec au moins trois raisons pour justifier la réponse." | |
| ) | |
| result = generator( | |
| prompt, | |
| max_new_tokens=400, # augmente le nombre de tokens pour inclure tout | |
| temperature=0.7, | |
| top_p=0.9, | |
| do_sample=True | |
| ) | |
| return result[0]["generated_text"] | |
| # Interface Gradio | |
| iface = gr.Interface( | |
| fn=generate_qcm, | |
| inputs=gr.Textbox(lines=8, placeholder="Entrez votre texte ici..."), | |
| outputs="text", | |
| title="🧠 Générateur QCM Français", | |
| description="Collez un texte pour générer un QCM avec 4 choix, la bonne réponse et une justification détaillée." | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch(share=True) # share=True pour obtenir un lien public sur Hugging Face Space |