Pagina metodologica

Come funziona la Bottega virtuale di Giuseppe Maggiolini

Questa pagina spiega in modo trasparente come la chat storica seleziona le informazioni, costruisce il prompt e invia a Groq soltanto il contesto necessario, mantenendo leggerezza, chiarezza e controllo delle fonti.

4 fonti storichedistillato unico89 blocchi tematicipriorità alta · media · dettaglio4–5 blocchi per domandachiave API protetta

1. Scopo del sistema

La Bottega virtuale non è una chat generalista. È un assistente storico tematico dedicato a Giuseppe Maggiolini da Parabiago, alla sua arte dell’intarsio, alla sua bottega, ai luoghi della città e alla memoria conservata dalle fonti.

Lo scopo è rendere interrogabile una base di conoscenza curata: l’utente pone una domanda in linguaggio naturale, il sistema cerca i passaggi storici pertinenti e il modello linguistico li rielabora in prima persona, come se a rispondere fosse Maggiolini.

Principio guida: il modello non deve inventare contenuti. Le risposte devono basarsi sui blocchi storici selezionati e, se un’informazione non è disponibile o se le fonti sono discordanti, il sistema deve dichiararlo con garbo.

2. Le fonti di partenza

La base storica nasce da quattro fonti principali. In una prima fase erano conservate separatamente; poi sono state fuse in un unico distillato tematico per eliminare ripetizioni e migliorare la pertinenza delle risposte.

Officina Maggiolini · Ecomuseo 2014

Fonte didattica e territoriale: luoghi di Parabiago, chiesa, Riale, piazza, Ravello, tecnica di base e memoria ecomuseale.

Enrico Colle · Un virtuoso dell’intarsio · 2014

Fonte storico-artistica: mobile lombardo, committenza, stile, attribuzioni, autenticità, neoclassicismo e cultura di corte.

Mons. Marco Ceriani · 1964/2005

Fonte fondamentale per Maggiolini uomo, cittadino, credente, fabbriciere, benefattore e protagonista della storia locale di Parabiago.

G. A. Mezzanzanica · Genio e Lavoro · 1878

Fonte antica, vicina alla memoria di bottega: aneddoti, 86 legni, Levati, Coldiroli, tecnica, operai, Carlo Francesco e Cherubino.

3. Come le fonti sono state distillate

In origine le fonti erano molto estese e in parte ridondanti. L’invio integrale dei testi a ogni domanda avrebbe causato risposte meno precise e consumo eccessivo di token. Per questo i contenuti sono stati trasformati in blocchi tematici.

Eliminazione ridondanze

Le informazioni ripetute, come nascita, incontro con Levati, corte, Riale e morte, sono state fuse in un unico blocco autorevole.

Conservazione dettagli

Sono stati mantenuti particolari narrativi importanti: 86 legni, nozze con polenta e compasso, Riale, botteghe, vita religiosa e artisti di corte.

Priorità e parole chiave

Ogni blocco ha una priorità e keyword specifiche, così il sistema può recuperarlo solo quando la domanda lo richiede.

Struttura di un blocco

{
  id: "riale-verri",
  title: "Il conservatore Verri e la riapertura provvisoria",
  category: "Riale di Parabiago",
  priority: "alta",
  sources: ["Officina Maggiolini 2014"],
  keywords: ["verri", "riale", "riapertura", "provvisoria", "fabbrica"],
  text: "Dopo la richiesta di Maggiolini, il conservatore Verri concesse..."
}

Il testo non è un riassunto casuale: è una scheda redazionale costruita per essere cercabile e riutilizzabile dal sistema.

4. Schema generale del funzionamento

Schema di funzionamento della Bottega virtuale Utente, pagina HTML, knowledge base, selezione contesto, proxy PHP, Groq e risposta finale. Utentescrive la domanda Pagina HTMLinterfaccia + knowledge base89 blocchi tematicifonti · priorità · keyword Selezione contestonormalizza domandacalcola punteggiapplica boost tematicisceglie 4–5 blocchi askGroq.phpproxy serverchiave API nascosta Groqriceve promptdomanda + contestogenera risposta Risposta finaleprima persona, su base storica selezionata

5. Come avviene la selezione del contesto

Normalizzazione della domanda

Il testo viene trasformato in minuscolo, privato di accenti e segni non necessari, poi ricondotto a termini utilizzabili per la ricerca.

Scelta del numero di blocchi

Normalmente il sistema recupera 4 blocchi. Passa a 5 quando la domanda contiene parole come raccontami, approfondisci, dettagli, elenco, legni o riale.

Calcolo del punteggio

Ogni blocco riceve un punteggio in base alla priorità e alla presenza dei termini della domanda in keyword, titolo, categoria e testo.

Boost tematici

Se la domanda appartiene a una famiglia di temi — per esempio luoghi, tecnica, religione, artisti, Riale — il sistema aggiunge punti ai blocchi coerenti.

Taglio e invio

I blocchi scelti vengono eventualmente abbreviati: circa 1900 caratteri per priorità alta, 1500 per media, 1100 per dettaglio.

priorità alta      +3
priorità media     +1.5
priorità dettaglio +0.5

termine nelle keyword   +7
termine nel titolo      +5
termine nella categoria +3
termine nel testo       +1.5
corrispondenza generica +0.5
boost tematico          +4

6. Quale prompt viene utilizzato

Il prompt applicativo viene costruito nella pagina HTML. Contiene identità del personaggio, regole di risposta, base storica selezionata, conversazione recente e domanda dell’utente.

Tu sei Giuseppe Maggiolini, il celebre ebanista e intarsiatore di Parabiago vissuto dal 1738 al 1814.

Regole di risposta:
1. Rispondi in prima persona, come se fossi Giuseppe Maggiolini.
2. Usa un tono cortese, colto, sobrio e leggermente settecentesco, ma comprensibile.
3. Usa esclusivamente le informazioni presenti nella base storica fornita qui sotto.
4. Se l'informazione non è presente nei testi, dillo con garbo senza inventare.
5. Se le fonti risultano discordanti, segnala la discordanza senza scegliere arbitrariamente.
6. Non riportare lunghi brani testuali: rielabora in forma divulgativa.
7. Mantieni la risposta abbastanza breve, salvo richiesta esplicita di approfondimento.

Base storica selezionata:
[4 o 5 blocchi scelti dal sistema]

Conversazione recente:
[ultimi scambi, se presenti]

Domanda dell'utente:
[testo della domanda]
Nota: il prompt non contiene tutta la biblioteca. Contiene solo i blocchi più utili per rispondere a quella domanda.

7. Come avviene la richiesta a Groq

Il browser non contatta direttamente Groq. La pagina invia il prompt a askGroq.php, che agisce come proxy server. La chiave API resta quindi sul server e non è visibile nel codice della pagina.

fetch('askGroq.php', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  cache: 'no-store',
  body: JSON.stringify({ prompt })
});

askGroq.php inoltra a Groq la richiesta con il modello configurato lato server e restituisce alla pagina soltanto il testo della risposta.

8. Il caso speciale del Riale

La vicenda del Riale di Parabiago riceve un trattamento specifico perché è uno degli episodi più significativi del rapporto fra Maggiolini, il paese, la chiesa e la corte.

9. Aggiornamenti introdotti nella versione corretta

La versione aggiornata mantiene la stessa logica generale della Bottega virtuale — base storica distillata, selezione del contesto, prompt compatto e passaggio tramite askGroq.php — ma aggiunge alcuni correttivi per rendere le risposte meno ripetitive, più pertinenti al contesto della conversazione e più fedeli ai blocchi storici dominanti.

Obiettivo degli aggiornamenti: non ridurre la ricchezza della base storica, ma guidare meglio il sistema quando la domanda è un seguito della precedente, quando l’utente chiede un elenco completo o quando esistono risposte storicamente principali che devono prevalere.

Riconoscimento dei follow-up

Alcune domande non sono autonome, ma dipendono da ciò che è stato appena detto. Per esempio, dopo una risposta sullo stile, domande come solo questo stile? o hai usato altri stili? devono essere interpretate come richieste di approfondimento sull’evoluzione stilistica, non come nuova domanda generica.

detectLastTopic()
- stile: stile, neoclassico, rococò, barocchetto, Impero
- legni: legni, essenze, specie, 86
- parabiago: Parabiago, Riale, piazza, Ravello

Questa funzione permette alla chat di riconoscere il tema recente della conversazione e di evitare risposte ripetitive o fuori fuoco.

Stile: risposta non ripetitiva

La domanda Qual è il tuo stile? può ricevere una risposta breve e diretta: il mio stile maturo fu pienamente neoclassico. Tuttavia, se l’utente chiede se vi furono altri stili, il sistema deve spiegare l’evoluzione: fase iniziale con influssi barocchetti e rococò, maturità neoclassica e, dopo il 1800, parziale accoglienza di elementi del gusto Impero e delle mode francesi.

Se la domanda contiene: solo, altri, altro, evoluzione
E il tema recente è: stile
Allora rispondere sull’evoluzione stilistica, non ripetere soltanto “neoclassico”.

Legni: elenco completo quando richiesto

Quando l’utente chiede genericamente quali legni fossero usati, il sistema può proporre una sintesi. Ma se l’utente chiede elenca tutte le specie, fammi l’elenco completo o formule analoghe dopo una domanda sui legni, la risposta deve fornire direttamente l’elenco delle 86 essenze. Non deve rispondere che l’elenco potrà essere fornito in seguito.

Se l’utente chiede:
- elenca
- lista
- tutte / tutti
- specie / essenze

E il tema recente è: legni
Allora fornire direttamente l’elenco completo degli 86 legni.
Regola aggiunta al prompt: se l’utente chiede un elenco completo, una lista completa o “tutte” le voci di un tema presente nella base storica, il sistema deve fornire direttamente quell’elenco.

Parabiago e Ravello: più precisione storica

Per le domande su ciò che Maggiolini fece per Parabiago, la risposta non deve restare generica. Deve preferire fatti documentati e riconoscibili: servizio come fabbriciere della chiesa parrocchiale, vicenda del Riale, ampliamento della piazza, anticipo di 14.000 lire e interessamento per la chiesa di Ravello dedicata alla Madonna della Neve.

È stata introdotta una correzione specifica: non usare la formula gestione del Ravello, perché ambigua e poco corretta. La formulazione da preferire è realizzazione o ricostruzione della chiesa di Ravello dedicata alla Madonna della Neve.

Per Parabiago preferire sempre fatti concreti:
- Riale
- chiesa parrocchiale
- piazza davanti alla chiesa
- chiesa di Ravello / Madonna della Neve
- ruolo di fabbriciere

Verità dominanti rafforzate

Alcune risposte devono prevalere sulle alternative plausibili ma meno corrette. Per esempio, alla domanda su chi disegnasse gli intarsi, il sistema deve indicare prima Giuseppe Levati, perché fu per lunghi anni uno dei principali fornitori di disegni e cartoni preparatori della bottega. Altri artisti di corte possono essere ricordati dopo, ma non devono sostituire il nome principale.

Risposta dominante

  • Figli: un solo figlio, Carlo Francesco.
  • Disegni degli intarsi: Giuseppe Levati.
  • Stile maturo: neoclassico.
  • Parabiago: Riale, chiesa, piazza, Ravello.

Errore da evitare

  • Confondere “figlio unico” con “non ebbi figli”.
  • Sostituire Levati con Piermarini per i cartoni degli intarsi.
  • Ripetere sempre e solo “neoclassico”.
  • Dire “gestione del Ravello”.

Aggiornamento delle regole del prompt

Il prompt conserva le regole originarie, ma aggiunge indicazioni operative più esplicite:

11. Se l’utente chiede un elenco completo, fornisci direttamente l’elenco completo.
12. Non usare formule generiche se la base contiene azioni precise.
13. Per Ravello usa “realizzazione o ricostruzione della chiesa di Ravello dedicata alla Madonna della Neve”; non dire “gestione del Ravello”.

10. Limiti e trasparenza

Il sistema fa

  • seleziona blocchi storici pertinenti;
  • riduce i token inviati a Groq;
  • risponde in prima persona come espediente narrativo;
  • segnala incertezze e discordanze.

Il sistema non fa

  • non consulta archivi esterni in tempo reale;
  • non sostituisce una perizia storica o antiquariale;
  • non deve inventare episodi;
  • non invia sempre l’intera biblioteca al modello.