Ogni fase testata da subito
Un flusso così va analizzato e verificato passo per passo fin dall'inizio. Altrimenti si passano giorni a scrivere codice e, alla prima prova, il risultato è sbagliato senza capire dove comincia il problema.
Il caso più complesso su cui ho lavorato finora è un RAG misto: un'applicazione che, a partire da documenti di consegna importati, permette di interrogare i dati aziendali in linguaggio naturale. È il classico "chatta con i tuoi dati", con un requisito che cambia tutto: la precisione.
Se chiedi quali sono i prodotti più venduti in un periodo, il risultato deve coincidere con quello che dice il gestionale.
Un vector store classico, con la sola ricerca semantica, non garantisce questa precisione. Servono sia un vector store sia un database relazionale, con i documenti importati in modo adeguato. Dentro l'applicazione serve poi una procedura mista, in parte deterministica e in parte basata su un modello linguistico: la domanda viene analizzata e, a seconda del tipo di richiesta, gestita in modo diverso.
Lo sforzo cresce molto più della precisione che si ottiene. Il risultato è un flusso di gestione complesso, come quello qui sotto.
Il modello linguistico interviene al massimo in tre punti; conteggi, somme, filtri e citazioni restano codice deterministico.
Codicepassaggio deterministicoModellochiamata a un modello linguistico
La domanda in linguaggio naturale, con gli eventuali filtri espliciti di chi la pone.
Cerca nella domanda i valori che esistono davvero nei dati, come nomi e codici, e le indicazioni di quantità.
Le domande più frequenti vengono riconosciute da regole deterministiche, senza interpellare un modello.
La domanda è spiegata per intero? Se una parte resta scoperta, il percorso rapido viene scartato invece di dare una risposta parziale.
Solo se nessun percorso rapido basta: il modello indica se la domanda chiede un'analisi o una ricerca.
In base alla classificazione, una delle due strade:
Per le analisi, un compilatore deterministico traduce la domanda in un piano.
Per le ricerche, il modello propone da uno a tre passi in JSON tipizzato. Il codice li valida: schema, filtri di chi chiede, termini non usati.
Ogni valore del piano viene confrontato con i dati reali. Se è sconosciuto o ambiguo, si chiede un chiarimento.
Se nel frattempo i dati sono cambiati, la preparazione si ripete: un piano non aggiornato non viene mai eseguito.
In base al tipo di piano, una delle due strade:
Conteggi, somme e analisi li calcola il database; testo e citazioni li genera il codice. Nessun modello.
Ricerca esatta nel database o semantica su un indice vettoriale, confermata poi sui dati attivi. Al massimo 40 evidenze.
Solo per le ricerche: il modello scrive la risposta citando gli identificativi delle evidenze ricevute.
Il server controlla ogni identificativo e ricostruisce le citazioni. Un riferimento sconosciuto fa fallire la richiesta.
Testo, stato, piano eseguito e citazioni, con le note sui limiti applicati.
Un flusso così va analizzato e verificato passo per passo fin dall'inizio. Altrimenti si passano giorni a scrivere codice e, alla prima prova, il risultato è sbagliato senza capire dove comincia il problema.
Ogni passaggio ha un proprio controllo, basato su dati importati con un significato preciso: si sa sempre in quale punto un risultato smette di essere corretto.
Lo sviluppo è guidato da una serie di domande realistiche raccolte con il cliente. In questo scenario non credo si possa dire "chiedi quello che vuoi e ti risponderà".
Il metodo serve anche perché il risultato dipende molto dal modello usato, e nessuna delle due strade è gratuita.
API di ChatGPT o servizi simili: le prestazioni sono migliori, ma
Un modello open su un server con GPU evita entrambi i problemi, ma
Per la mia esperienza diretta, tutto questo richiede un'analisi e uno sviluppo molto precisi, con un'attenzione scrupolosa alle esigenze del cliente: il contrario di quello che si legge spesso online.
Cerco di basarmi su quello che tocco con mano e sperimento. Ho visto e analizzato anche i framework agentici, ma con i vincoli infrastrutturali descritti sopra credo che, in contesti normali, sia molto difficile proporre una soluzione basata su chiamate multiple a un modello. Può avere senso a tre condizioni:
Non credo di essere il solo a vederlo. Diverse aziende, anche grandi, si stanno spostando verso modelli open, ospitati in cloud o su hardware da data center, abbinati ad architetture agentiche che vanno sviluppate e tarate su misura, perché lì la variabilità è molto più alta.
In definitiva, "sentiamo cosa dice ChatGPT" non è più una strategia che regge.