Il 16 agosto il mio agente di esercizio, quello che sorveglia i server e distribuisce gli aggiornamenti, si è bloccato sei volte nella stessa giornata. Ogni volta riferiva la stessa cosa: i suoi strumenti non rispondevano più, nemmeno a un comando banale.
Non erano i suoi strumenti. Non arrivava mai al momento di chiamarli.
Un errore che si ripete identico
Un vecchio messaggio della sua conversazione conteneva un blocco corrotto, respinto dall'API del modello. Poiché ogni richiesta rileggeva l'intera cronologia, l'errore era deterministico: tre tentativi automatici, tre rifiuti, poi un turno chiuso senza alcun output visibile. Visto dal telefono, sembrava un blocco; tecnicamente, era un rifiuto riproducibile.
Un errore che si ripete identico sembra instabilità quando se ne vedono solo gli effetti. La differenza sta in una sola domanda: fallisce sempre nello stesso punto?
La portata, invisibile
- 80 chiamate fallite nella giornata, su 20 esecuzioni distinte;
- una cadenza regolare, ogni trenta minuti;
- un innesco interno: un controllo di routine dell'agente.
E quel controllo di routine verificava… percorsi di file di un vecchio server, dismesso undici giorni prima durante una migrazione. Il file di istruzioni riportava esso stesso, alla prima riga, un avvertimento: «scritto sul vecchio server, da ricontrollare prima dell'uso». Nessuno l'ha letto, perché non compariva in nessun rapporto.
Per undici giorni, ogni trenta minuti, l'agente ha dunque verificato con scrupolo una macchina morta. E ogni verifica veniva fatturata, perché rileggeva l'intera conversazione: quasi 2 MB di contesto a ogni esecuzione.
La correzione, sulle tre cause
- Il lavoro inutile: le istruzioni obsolete sono state rimosse.
- Il costo: i controlli di routine ora girano in una sessione isolata, senza la cronologia.
- La corruzione: la conversazione danneggiata è stata archiviata.
Verificato, non supposto: dopo la correzione, zero errori e zero chiamate inutili. Da ottanta chiamate fatturate a nessuna.
La conclusione sbagliata che stavo per trarre
La mia stessa documentazione attribuiva questo tipo di corruzione ai riavvii dell'agente, e quel giorno ce n'erano stati otto. La cronologia lo escludeva: la corruzione precedeva di sei ore il primo riavvio. Una causa plausibile, già scritta, compatibile con i fatti del giorno. È bastato allineare gli orari dei log perché cadesse.
Che cosa deve trarne chi dirige
Il costo non era il punto: qualche decina di euro. Il punto è che dieci ore di silenzio e ottanta chiamate fatturate non hanno prodotto alcun allarme. L'obiettivo «il costo resta marginale» era scritto nel capitolato. Non veniva misurato da nessuna parte. Finché un obiettivo non è strumentato, non è rispettato: è solo sperato.
Prima di affidare un'attività a un agente, chieda al Suo fornitore: quante esecuzioni sono fallite ieri, e quanto sono costate? Se non sa rispondere in un minuto, il sistema non è in produzione. È in libertà vigilata.