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