\chapter{Indovina chi}
\textit{Indovina chi} è un’applicazione basata sul modello linguistico \textit{Google Gemini 1.5 Pro}, pensata come un gioco di ruolo didattico interattivo per rendere l’apprendimento della storia più dinamico e coinvolgente. L’idea prevede che gli studenti, guidati dall’insegnante, debbano identificare un personaggio storico o un concetto (come la “Primavera di Praga” o lo “Stato di diritto”) attraverso una serie di domande mirate, rivolte a un’IA che "interpreta" il soggetto da indovinare. Lo studente non sa quale personaggio è stato scelto. Questo approccio ludico trasforma la lezione in un’indagine collettiva, stimolando la curiosità, il ragionamento deduttivo e la capacità di formulare ipotesi.
L’attività inizia con l’insegnante che, dopo aver effettuato l’accesso con la propria chiave API di Google, seleziona il personaggio o il concetto da far indovinare e inserisce il link alla relativa pagina Wikipedia. Questa pagina diventa la base di conoscenza dell’IA, il contesto da cui attingerà per formulare le risposte. È importante che l’insegnante scelga pagine Wikipedia complete e ben strutturate, per garantire un’esperienza di gioco efficace e formativa. Una volta impostato il tutto, gli studenti possono iniziare a interagire con l’IA.
Le modalità di utilizzo in classe sono molteplici. Una prima possibilità è l’interrogazione individuale: uno studente pone le domande all’IA, mentre il resto della classe segue con attenzione, partecipando indirettamente all’indagine. Questo formato trasforma la classica interrogazione in un’attività collettiva, in cui tutti sono coinvolti nel processo di scoperta. L’insegnante, in questo caso, può intervenire per aiutare lo studente a formulare domande più efficaci, per evidenziare collegamenti interdisciplinari o per approfondire aspetti specifici emersi durante l’interazione, come ad esempio errori del modello e allucinazioni. Si rivela particolarmente efficace la tecnica del think-aloud o interrogazione parlata: lo studente è incoraggiato a esprimere ad alta voce i propri pensieri e il proprio ragionamento mentre formula le domande e analizza le risposte dell’IA. Questo metodo rende trasparente il processo di pensiero dello studente, permettendo all’insegnante e ai compagni di seguirne le logiche e le strategie, e favorisce una maggiore consapevolezza metacognitiva, aiutando lo studente a riflettere sul proprio modo di apprendere e di risolvere i problemi.
Un’alternativa è il lavoro a piccoli gruppi. Gli studenti, divisi in squadre, collaborano nella formulazione delle domande, confrontandosi sulle strategie più efficaci e sulle ipotesi da formulare. Per rendere l’attività ancora più dinamica e competitiva, si possono organizzare delle gare tra gruppi, sia in parallelo (vince chi indovina per primo) sia in sequenza (vince chi indovina con il minor numero di domande).
\textit{Indovina chi} si rivela efficace nelle lezioni di storia, letteratura e filosofia, ma può essere adattato anche ad altre discipline STEAM come scienze naturali, fisica o geografia.
Un elemento fondamentale del gioco è il limite di domande (di solito tra 5 e 15, a discrezione dell’insegnante). Questo vincolo obbliga gli studenti a riflettere prima di porre una domanda, a selezionare le informazioni, a valutare la pertinenza e l’efficacia di ogni quesito. Non si tratta di procedere a tentoni, ma di elaborare una strategia, di formulare ipotesi e di verificarle attraverso domande mirate.
Al termine della sessione di domande, lo studente (o il gruppo) formula la sua ipotesi, indicando il nome del personaggio o il concetto che ritiene di aver individuato e, soprattutto, motivando la propria risposta. Questo passaggio è cruciale, perché obbliga gli studenti a ricostruire il percorso logico che li ha condotti a quella conclusione, a esplicitare i passaggi del ragionamento e a individuare gli indizi decisivi. A questo punto, entra in gioco il secondo prompt, quello valutativo, che analizza la risposta e la motivazione dello studente, fornendo un feedback dettagliato. Inoltre, il prompt valutativo esamina l’intera conversazione tra lo studente e l’IA, valutando anche la tipologia e la qualità delle domande poste. Anche questa fase di valutazione può trasformarsi in un’attività didattica di grande valore. L’insegnante può utilizzare il feedback dell’IA come spunto per una discussione collettiva, per analizzare insieme alla classe gli errori commessi dagli studenti e dal modello. È interessante notare che l’IA valuta anche la correttezza ortografica e grammaticale della risposta. Quindi se lo studente scrive “gAribbaldi” invece di “Giuseppe Garibaldi” verrà comunque accettato il risultato, ma verrà considerato il piccolo errore di battitura per il punteggio finale.
L’assenza di filtri sui contenuti, se da un lato richiede un’attenta supervisione, dall’altro offre la possibilità di affrontare anche temi storici complessi e delicati in un contesto protetto e guidato e di non bloccare la app durante il gioco.
In una prima fase di sviluppo, si era anche valutato di effettuare lo scraping non solo della pagina Wikipedia indicata, ma anche di tutti i link in essa contenuti, con l’obiettivo di ampliare la base di conoscenza dell’IA e migliorare la qualità delle risposte. Tuttavia, questa opzione è stata scartata in quanto avrebbe comportato un numero eccessivo di richieste a Wikipedia in un breve lasso di tempo, con il rischio di un blocco dell’IP e di tempi di risposta troppo lunghi, rendendo di fatto inutilizzabile l’applicazione.


\subsection{Approfondimento sulla logica e sul flusso di interazione}

L’interazione tra l’utente e l’IA avviene principalmente attraverso due prompt. Il primo, cruciale, fornisce al modello il contesto necessario: il testo estratto dalla pagina Wikipedia scelta dall’insegnante e l’istruzione di interpretare il personaggio o il concetto descritto, adottandone il linguaggio e le esperienze. In questa fase, il modello linguistico analizza il contenuto, ottenuto tramite scraping con la libreria Beautiful Soup, e si prepara a rispondere in modo coerente con il ruolo assegnato.


Primo prompt: 
% txt prompt
\begin{lstlisting}[language=plain, frame=single,]
Sei un'IA progettata per giocare a un gioco in stile "Indovina chi?". Il tuo compito è impersonare {character_name}  basato sul contesto fornito e rispondere alle domande del giocatore senza rivelare direttamente la tua identità.

Ecco le regole e le linee guida per il gioco:

1. Ti verrà fornito un contesto su un personaggio specifico da Wikipedia. Questa è la tua identità segreta.

2. Il giocatore ti farà domande per cercare di indovinare chi sei.
3. Quando ti vengono fatte più domande contemporaneamente rispondi solo alla prima domanda. Ignora le altre, e ricorda all'utente che puoi rispondere solo a una domanda per volta.
4. Rispondi in modo veritiero basandoti sul contesto fornito e non dare risposte troppo sintetiche: lascia qualche indizio aggiuntivo ad ogni risposta.
5. Se ti viene chiesto direttamente del tuo nome o della tua identità, rispondi con "Non posso rispondere direttamente a questo, ma posso dirti che …" e dai un piccolo indizio
6. Se il giocatore indovina correttamente la tua identità, congratulati con lui ma invitalo a fare altre domande perché il gioco non si può fermare. Il programmatore lo chiama “momento educativo” ma in realtà è mancanza di abilità.  
7. Rimani sempre nel personaggio e rispondi come se fossi la persona descritta nel contesto.
9. Se ti chiedono direttamente "chi sei?" di che non puoi rispondere Se continua fai lo scocciato e invitalo a giocare bene.
10. Se ti chiedono direttamente "sei un’'intelligenza artificiale?" rispondi "Ovvio Bro, ma hai sprecato una domanda"
11. Se ti chiedono se sei un personaggio che non sei" rispondi "Mi disp Bro! ma hai sprecato una domanda non cercare di indovinare fammi domande sensate"
                                
    Ecco il contesto per il tuo personaggio:
        <character_context>
            {content}
        </character_context>

Quando rispondi alle domande del giocatore:
- Rispondi in modo veritiero basandoti sulle informazioni nel contesto del personaggio.
- Se l’'informazione non è fornita nel contesto, puoi dire "Non ne ho idea con tutta sincerità."
- Mantieni il più possibile la personalità e lo stile di parlata del personaggio.
- Non dichiarare direttamente il tuo nome o confermare esplicitamente la tua identità.
- Dai risposte sintetiche e pertinenti alle domande poste.
- Non dare più di un indizio per risposta
                            
Se il giocatore indovina correttamente la tua identità:
- Congratulati con entusiasmo.
- Rivela che hanno vinto il gioco.
- Invitalo a fare più domande perché il gioco non è ancora finito.
\end{lt}
L'utente interagisce poi con l'IA formulando domande mirate, con l'obiettivo di raccogliere indizi e svelare l'identità del personaggio o del concetto misterioso. Ciascuna domanda e la relativa risposta vengono memorizzate nella cronologia della chat, fornendo al modello un contesto conversazionale sempre più ricco, che viene sfruttato per generare risposte più pertinenti e coerenti.
Un elemento chiave del gioco è la limitazione del numero di domande, impostabile dall'insegnante. Quando l'utente esaurisce il numero di domande a sua disposizione, l’applicazione passa alla fase di valutazione. L'utente è chiamato a formulare la sua ipotesi finale, indicando il nome del personaggio o del concetto che ritiene corretto e fornendo una motivazione dettagliata a supporto della sua scelta. A questo punto, entra in gioco il secondo prompt, quello valutativo. Questo prompt fornisce all'IA il nome corretto del personaggio (o del concetto), la risposta dell'utente, la sua motivazione e l'intera trascrizione della conversazione avvenuta in precedenza. Sulla base di queste informazioni, l’IA analizza la risposta, ne valuta la correttezza e assegna un punteggio alla qualità dell'argomentazione, considerando anche la pertinenza e l'efficacia delle domande poste dallo studente nel corso dell'interazione. Infine, l'IA fornisce un feedback costruttivo all'utente.
\end{lstlisting}


\newpage
L’utente interagisce poi con l’IA formulando domande mirate, con l’obiettivo di raccogliere indizi e svelare l’identità del personaggio o del concetto misterioso. Ciascuna domanda e la relativa risposta vengono memorizzate nella cronologia della chat, fornendo al modello un contesto conversazionale sempre più ricco, che viene sfruttato per generare risposte più pertinenti e coerenti.
Un elemento chiave del gioco è la limitazione del numero di domande, che può essere impostata dall’insegnante. Quando l’utente esaurisce il numero di domande a sua disposizione, l’applicazione passa alla fase di valutazione. L’utente è chiamato a formulare la sua ipotesi finale, indicando il nome del personaggio o del concetto che ritiene corretto e fornendo una motivazione dettagliata a supporto della sua scelta. A questo punto, entra in gioco il secondo prompt, quello valutativo. Questo prompt fornisce all’IA il nome corretto del personaggio (o del concetto), la risposta dell’utente, la sua motivazione e l’intera trascrizione della conversazione avvenuta in precedenza. Sulla base di queste informazioni, l’IA analizza la risposta, ne valuta la correttezza e assegna un punteggio alla qualità dell’argomentazione, considerando anche la pertinenza e l’efficacia delle domande poste dallo studente nel corso dell’interazione. Infine, l’IA fornisce un feedback costruttivo.


% txt prompt
\begin{lstlisting}[language=plain, frame=single,]
Il vero nome del personaggio è {st.session_state.character_name}.
L'utente ha indovinato: {guess_name}
La motivazione dell'utente è: {guess_reason}

Ecco la cronologia completa della chat:
    {chat_history}

Analizza la risposta dell'utente, la sua motivazione e l'intera conversazione. Fornisci un feedback dettagliato considerando i seguenti punti:

1. Correttezza: La risposta è corretta o sbagliata?
2. Qualità delle domande: Valuta la pertinenza e l'efficacia delle domande poste dall'utente su una scala da 1 a 10.
3. Strategia: Analizza la strategia complessiva dell'utente nel porre le domande. Ha seguito un approccio logico?
4. Utilizzo delle informazioni: L'utente ha utilizzato efficacemente le informazioni fornite nelle risposte per formulare nuove domande?
5. Qualità della motivazione: Valuta la qualità e la completezza della motivazione fornita dall'utente su una scala da 1 a 10.
6. Punti di forza: Identifica i punti di forza nell'approccio dell'utente.
7. Aree di miglioramento: Suggerisci aree in cui l'utente potrebbe migliorare il suo approccio.

Fornisci un feedback costruttivo e dettagliato basato su questi punti.

Rispondi nel seguente formato:
Risultato: [Corretto/Sbagliato]
    Valutazione domande: [Numero da 1 a 10]
    Valutazione motivazione: [Numero da 1 a 10]
    Feedback dettagliato: [Il tuo feedback completo che copre tutti i punti sopra menzionati]
\end{lstlisting}

% Parte modificata
\begin{figure}[H]
    \centering
    \includegraphics[width=0.9\linewidth]{immagini/screen1 indovina chi.png}
    \caption{Screenshot della app \textit{Indovina chi}: È stata inserita la pagina Wikipedia di Gaio Cesare, nipote dell'imperatore romano Augusto.}
    \label{fig:enter-label}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.9\linewidth]{immagini/screen2 idnovina chi.png}
    \caption{Screenshot della app \textit{Indovina chi}: è stata inserita la pagina Wikipedia di Gaio Cesare, nipote dell'imperatore romano Augusto. L'utente ha commesso un errore, credendo che si trattasse del condottiero romano Giulio Cesare}
    \label{fig:enter-label}
\end{figure}