Una funzionalità di IA integrata in un’applicazione PHP può impiegare troppo tempo, non essere disponibile o restituire un risultato inutilizzabile per il processo. Il problema non si risolve trattando ogni risposta come valida né ripetendo la richiesta all’infinito: entrambe le scelte possono compromettere l’esperienza, i dati e i costi. Un fallback per l’integrazione dell’IA in PHP definisce cosa farà il sistema quando la dipendenza non funziona e quali operazioni non devono proseguire senza una risposta accettabile.
L’alternativa corretta dipende dall’impatto della funzionalità. Un suggerimento di testo può essere omesso temporaneamente; una decisione che incide su un pagamento, un’autorizzazione o un aggiornamento dei dati non dovrebbe essere eseguita sulla base di informazioni incomplete o presunte. L’obiettivo è mantenere un comportamento prevedibile, non nascondere tutti gli errori.
Definire cosa si considera un errore

Prima di implementare le alternative, specifica le condizioni che rendono inutilizzabile una risposta. Separare i casi aiuta a scegliere una policy e a misurarne l’efficacia:
- Timeout: la richiesta supera il tempo massimo di attesa dell’applicazione.
- Indisponibilità o errore di trasporto: la connessione non riesce oppure il provider restituisce un errore.
- Risposta vuota: la chiamata termina, ma non contiene il contenuto previsto.
- Formato non valido: il risultato non può essere analizzato o non rispetta lo schema richiesto, per esempio un JSON con campi mancanti.
- Risultato non accettabile: l’output è leggibile, ma non supera le regole di business, le validazioni o i criteri di sicurezza.
Non è opportuno equiparare una risposta tecnicamente corretta a una decisione valida. Se l’applicazione si aspetta una categoria appartenente a un insieme chiuso, deve verificare che il valore ne faccia parte. Se si aspetta campi obbligatori, deve convalidarli prima di passarli a un altro componente. I controlli deterministici devono essere eseguiti nel codice PHP, non delegati di nuovo allo stesso modello.
Limitare tempi di attesa e tentativi
Imposta un timeout adeguato all’operazione e al tempo complessivo che l’utente o il processo può attendere. Considera anche i limiti del server web, della coda e di qualsiasi client HTTP intermedio: un timeout locale che supera il limite della richiesta non offre un controllo effettivo. Per un’attività in background può essere accettabile una finestra di attesa diversa, purché esista una policy esplicita per i job in sospeso.
I tentativi devono essere limitati e applicati soltanto agli errori che potrebbero essere transitori. Un’interruzione di rete può giustificare un ulteriore tentativo; una risposta che non rispetta lo schema richiede normalmente una validazione, un fallback o una revisione, non una ripetizione alla cieca. Limita il numero di tentativi e il tempo complessivo. Se usi un’attesa incrementale, definisci anche un limite massimo.
Tieni presente che ripetere una chiamata può raddoppiare i consumi o gli effetti. Evita i tentativi automatici senza limiti e verifica se l’operazione è idempotente. Una generazione di testo senza effetti collaterali non equivale a un’azione che crea un ordine o invia una notifica. Per le operazioni sensibili, separa la generazione di una proposta dalla sua esecuzione e prevedi controlli specifici per quest’ultima.
Scegliere un’alternativa in base all’impatto
Un fallback non è una risposta generica valida per tutti gli errori. Deve rispettare le regole di business e comunicare chiaramente cosa può fare l’applicazione:
- Degradare: se l’IA offre una comodità, consenti di proseguire senza questa funzionalità. Per esempio, mostra il modulo convenzionale quando non viene generato un suggerimento.
- Rinviare: se il risultato può essere prodotto in seguito, salva il job con stato in sospeso e consenti di riprovare tramite una coda, con limiti e monitoraggio.
- Richiedere una revisione: se serve il giudizio di una persona, mostra la proposta come bozza oppure assegna il caso a qualcuno. Non presentare un output non convalidato come decisione finale.
- Rifiutare o interrompere: se non è possibile verificare una condizione necessaria per procedere, impedisci l’azione e spiega come continuare o chiedere assistenza.
La decisione deve basarsi sul rischio di agire in modo errato, non soltanto sul costo di un’interruzione. Un motore di ricerca con suggerimenti può continuare a usare la query originale. Al contrario, un flusso che modifica i dati dei clienti non dovrebbe completare i campi mancanti con supposizioni. Se l’output dell’IA influenza una decisione di business, mantieni un percorso manuale o una regola deterministica, quando possibile.
Proteggere l’integrità dei processi
Tratta la risposta del modello come input esterno: analizzane la struttura, convalida ogni valore e limita le operazioni che può avviare. Non inserirla direttamente in query SQL, comandi, HTML o istruzioni per altri sistemi. Usa query parametrizzate, codifica appropriata e allowlist, oltre ai controlli specifici del dominio.
Definisci un confine tra suggerire ed eseguire. Per esempio, l’IA può proporre una classificazione; il codice verifica che sia ammessa e la policy del prodotto stabilisce se applicarla automaticamente o lasciarla in sospeso. Quando manca un dato obbligatorio, l’alternativa sicura di solito è richiederlo, lasciare il caso incompleto o interrompere il processo, non inventarlo. Anche il comportamento in caso di errore deve rispettare i consueti permessi, le validazioni e le regole di autorizzazione.
Registrare gli errori senza salvare informazioni non necessarie
I log devono aiutare a diagnosticare i problemi senza diventare una copia delle conversazioni. Registra eventi tecnici come l’operazione, il tipo di errore, la durata, il numero di tentativi, l’esito della validazione e un identificativo di correlazione. Includi informazioni sufficienti per distinguere, per esempio, un timeout da un JSON malformato, ma evita di registrare per impostazione predefinita prompt completi, risposte, credenziali o dati personali.
Se è necessario conservare contenuti per una revisione o un audit, definisci prima finalità, accesso, periodo di conservazione e misure di protezione. Nelle metriche, monitora la frequenza di timeout, risposte non valide, fallback e job in sospeso, oltre alla latenza e ai tentativi. Un aumento può indicare un problema operativo o un cambiamento nel comportamento dell’output. Le metriche aiutano a individuare le tendenze, ma non sostituiscono la revisione del caso né dimostrano, da sole, che una risposta sia corretta.
Testare gli scenari e concordare i criteri

Testa l’integrazione con risposte controllate e verifica sia il risultato visibile sia gli effetti sul sistema. Includi latenza elevata, interruzione della connessione, risposta vuota, formato non valido, dato non conforme alle regole e ripristino dopo un errore. Verifica che non vengano eseguite azioni duplicate, che i tentativi rispettino i limiti e che i log non rivelino contenuti sensibili. Testa anche cosa accade quando un job resta in sospeso o richiede un intervento.
Prima di mettere una funzionalità in produzione, concorda queste decisioni con i team di prodotto e tecnologia:
- La funzionalità è essenziale per completare l’operazione o migliora soltanto l’esperienza?
- Qual è il tempo di attesa complessivo accettabile per ciascun canale?
- Quali errori consentono un nuovo tentativo e quanti tentativi sono ammessi?
- Qual è l’alternativa sicura: proseguire senza IA, rinviare, richiedere una revisione umana o interrompere?
- Quali validazioni devono essere superate prima di usare la risposta?
- Quali dati vengono registrati, chi può accedervi e per quanto tempo vengono conservati?
- Come viene avvisato il team e chi gestisce i casi in sospeso?
Una policy efficace consente di degradare le funzionalità accessorie e interrompere le operazioni che dipendono da dati non verificati. Se non è possibile spiegare con precisione cosa accade in caso di risposta tardiva, non valida o assente, l’integrazione non dispone ancora di un fallback operativo. Documenta queste regole insieme al flusso e testale di nuovo quando cambiano il prodotto, le validazioni o le modalità di utilizzo del servizio.



