Programma
Microsoft ha recentemente presentato Phi-4, l'ultimo arrivato nella famiglia Phi di small language model. Poiché eccelle in matematica, ho deciso di usare Phi-4 per creare un correttore di compiti integrato con Gradio.
In questo tutorial ti guiderò passo dopo passo nella creazione di una web app funzionante in grado di validare soluzioni, correggere errori e fornire approcci alternativi—proprio come un assistente docente virtuale!
Che cos'è il modello Phi-4 di Microsoft?
Phi-4 eccelle nei compiti di ragionamento complesso, in particolare in matematica, mantenendo al contempo una buona competenza nell'elaborazione del linguaggio naturale. Le sue caratteristiche principali sono:
- Capacità di ragionamento avanzate: Phi-4 è addestrato su dataset sintetici di alta qualità e utilizza tecniche innovative di post-training per superare modelli più grandi nei compiti di ragionamento legati alla matematica.
- Efficienza e accessibilità: con 14 miliardi di parametri, Phi-4 offre risultati di alta qualità senza risorse computazionali estese, rendendolo accessibile a un'ampia gamma di applicazioni.
- Disponibilità: Phi-4 è attualmente accessibile tramite Azure AI Foundry con una Microsoft Research License Agreement (MSRLA) e su Hugging Face.
Phi-4 ha dimostrato ottime prestazioni nei compiti di ragionamento matematico, superando persino modelli più grandi come Gemini Pro 1.5 nei problemi delle competizioni di matematica. Questo lo rende una buona scelta per applicazioni che richiedono capacità avanzate di problem solving matematico.

Fonte: Microsoft
Phi-4 Homework Checker: panoramica dell'implementazione
L'app che costruiremo con Phi-4 è un correttore di compiti basato su AI. Ecco il flusso che seguirà l'utente:
- L'utente invia il compito svolto (sia il testo dell'esercizio sia la soluzione dell'utente).
- Se la soluzione è errata, il modello spiega la soluzione corretta con passaggi dettagliati, come farebbe un insegnante.
- Se la soluzione è corretta, il modello conferma la risposta oppure suggerisce un'alternativa più pulita ed efficiente se l'elaborato è poco chiaro.

Per offrire un'interfaccia web con cui gli utenti possano interagire con il correttore, useremo Gradio.
Passo 1: Prerequisiti
Prima di iniziare, assicurati di avere installato quanto segue:
- Python 3.8+
- PyTorch: per eseguire modelli di deep learning.
- Libreria Transformers di HuggingFace: per caricare il modello Phi-4 da HuggingFace.
- Gradio: per creare un'interfaccia web user-friendly.
Installa queste dipendenze eseguendo:
!pip install torch transformers gradio -q
Ora abbiamo installato tutte le dipendenze. Il passo successivo è configurare il modello Phi-4.
Passo 2: Configurare il modello
Carichiamo il modello Phi-4 dalla libreria Transformers di HuggingFace. Quindi, il tokenizer pre-elabora l'input (l'esercizio e la soluzione) e lo prepara per l'inferenza.
# Imports
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import gradio as gr
# Load the Phi-4 model and tokenizer
model_name = "NyxKrage/Microsoft_Phi-4"
model=AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Set tokenizer padding token if not set
if tokenizer.pad_token_id is None:
tokenizer.pad_token_id = tokenizer.eos_token_id
Il frammento di codice sopra configura il modello e il tokenizer di Phi-4 e li integra con PyTorch per i calcoli. Vediamo nel dettaglio cosa fa il codice:
- Vengono importate le classi
AutoModelForCausalLMeAutoTokenizerper lavorare con il modello e la tokenizzazione. - Il modello è caricato dal repository di Hugging Face usando il metodo
from_pretrained()e configurato per usare la precisione FP16 per ottimizzare l'uso di memoria e la velocità di calcolo. - Il parametro
device_map="auto"garantisce che il modello venga mappato automaticamente sull'hardware disponibile. - Viene caricato anche il tokenizer, che trasforma il testo di input in token adatti al modello.
- Un controllo assicura che il tokenizer abbia un token di padding definito; in caso contrario, assegna come token di padding l'
eos_token_id(token di fine sequenza).
Passo 3: Progettare le funzionalità principali
Una volta configurato il modello, definiamo tre funzioni chiave per l'app:
- Validazione della soluzione: il modello valuta la soluzione dell'utente e fornisce correzioni se è sbagliata.
- Suggerimenti alternativi: suggerisce soluzioni più pulite se la soluzione dell'utente è confusa.
- Feedback chiaro: il modello struttura anche l'output con sezioni chiare.
La seguente funzione, check_homework(), costruisce un prompt che contiene l'esercizio, la soluzione dell'utente e istruzioni specifiche per il modello, così da confermare la correttezza, individuare problemi o fornire una guida passo passo se la soluzione è errata.
# Function to validate the solution and provide feedback
def check_homework(exercise, solution):
prompt = f"""
Exercise: {exercise}
Solution: {solution}
Task: Validate the solution to the math problem, provided by the user. If the user's solution is correct, confirm else provide an alternative if the solution is messy. If it is incorrect, provide the correct solution with step-by-step reasoning.
"""
# Tokenize and generate response
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
print(f"Tokenized input length: {len(inputs['input_ids'][0])}")
outputs = model.generate(**inputs, max_new_tokens=1024)
print(f"Generated output length: {len(outputs[0])}")
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# response = response.replace(prompt, "").strip()
prompt_len = len(prompt)
response = response[prompt_len:].strip()
print(f"Raw Response: {response}")
return response
La funzione check_homework() tokenizza il prompt usando il tokenizer del modello. Lo prepara all'elaborazione convertendo l'input in tensori PyTorch, mappati sul dispositivo in cui è in esecuzione il modello.
Quindi genera una risposta dal modello con un limite di max_new_tokens=1024 per controllare la lunghezza dell'output. Questa lunghezza in token può essere variata in base alle necessità.
Infine, viene restituita la risposta elaborata, che fornisce feedback o una soluzione corretta.
Passo 4: Creare un'interfaccia user-friendly con Gradio
Gradio semplifica il deployment del correttore dei compiti consentendo agli utenti di inserire interattivamente esercizi e soluzioni. Il seguente snippet crea un'interfaccia web Gradio user-friendly per la funzione check_homework(). L'interfaccia Gradio prende gli input dell'utente (l'esercizio e la soluzione) e li passa al modello per la validazione.
# Define the function that integrates with the Gradio app
def homework_checker_ui(exercise, solution):
return check_homework(exercise, solution)
# Create the Gradio interface using the new syntax
interface = gr.Interface(
fn=homework_checker_ui,
inputs=[
gr.Textbox(lines=2, label="Exercise (e.g., Solve for x in 2x + 3 = 7)"),
gr.Textbox(lines=1, label="Your Solution (e.g., x = 1)")
],
outputs=gr.Textbox(label="Feedback"),
title="AI Homework Checker",
description="Validate your homework solutions, get corrections, and receive cleaner alternatives.",
)
# Launch the app
interface.launch(debug=True)
Abbiamo creato due campi di input usando gr.Textbox: uno per il problema matematico (esercizio) e un altro per la soluzione dell'utente. L'output è mostrato in un singolo gr.Textbox etichettato "Feedback". Il comando interface.launch() avvia l'app Gradio nel browser e il flag debug=True abilita log dettagliati per aiutare a risolvere gli errori.
Passo 5: Test e validazione
È il momento di testare la nostra app AI Homework Checker. Ecco alcuni test che ho eseguito:
- Problema matematico semplice: ho provato a risolvere problemi basilari di probabilità e l'app ha restituito una soluzione ben strutturata e chiara.

- Problema complesso di derivata: il calcolo delle derivate può essere impegnativo per alcuni modelli. Qui ho provato a trovare la prima derivata di una funzione logaritmo naturale con il correttore, e ha prodotto un ragionamento corretto passo dopo passo per la soluzione.

Conclusione
In questo tutorial, abbiamo creato un correttore di compiti basato su AI usando il modello Phi-4. Questa app valida le soluzioni, fornisce correzioni dettagliate e suggerisce alternative eleganti, rendendola un'insegnante virtuale ideale per gli studenti.
Pronto a estendere l'app? Sperimenta con problemi più complessi o integrala in piattaforme educative per un uso più ampio!
Sono una Google Developers Expert in ML (Gen AI), una Kaggle 3x Expert e una Women Techmakers Ambassador con oltre 3 anni di esperienza nel tech. Ho co-fondato una startup health-tech nel 2020 e sto conseguendo un master in informatica al Georgia Tech, con specializzazione in machine learning.


