🧪
🎻 Movimento 1 di 4 📖 Capitolo 3 di 42 ⏱️ ~18 min lettura 📊 Livello: Avanzato

Isolare l'Intelligenza - Il Mock LLM

Come testare sistemi AI non-deterministici efficacemente. Strategie di mocking che funzionano davvero in produzione.

Avevamo un SpecialistAgent ben definito, un'architettura pulita e un contratto dati robusto. Eravamo pronti a costruire il resto del sistema. Ma ci siamo subito scontrati con un problema tanto banale quanto bloccante: come si testa un sistema il cui cuore è una chiamata a un servizio esterno, imprevedibile e costoso come un LLM?

Ogni esecuzione dei nostri test di integrazione avrebbe comportato:

  1. Costi Monetari: Chiamate reali alle API di OpenAI.
  2. Lentezza: Attese di secondi, a volte minuti, per una risposta.
  3. Non-Determinismo: Lo stesso input poteva produrre output leggermente diversi, rendendo i test inaffidabili.

AI Provider Abstraction Layer

graph TD A[Agente Esecutore] --> B{AI Provider Abstraction} B --> C{È Abilitato il Mocking?} C -- Sì --> D[Restituisci Risposta Mock] C -- No --> E[Inoltra Chiamata a OpenAI SDK] D --> F[Risposta Immediata e Controllata] E --> F F --> A subgraph "Logica di Test" C D end subgraph "Logica di Produzione" E end

"War Story": Il Commit che ha Salvato il Budget (e il Progetto)

Evidenza dal Log di Git: f7627da (Fix stubs and imports for tests)

Questa modifica, apparentemente innocua, è stata una delle più importanti della fase iniziale. Prima di questo commit, i nostri primi test di integrazione, eseguiti in un ambiente di CI, facevano chiamate reali alle API di OpenAI.

Il primo giorno, abbiamo consumato oltre €40 del nostro budget giornaliero auto-finanziato di €100, semplicemente perché ogni push su un branch avviava una serie di test che chiamavano gpt-4 decine di volte.

Il Contesto Finanziario: L'AI in un Progetto di Learning Auto-Finanziato

La nostra non era solo una preoccupazione tecnica. Come progetto di learning personale auto-finanziato, avevamo stabilito un budget massimo di €100 al giorno per le API. Come evidenzia l'analisi di Tunguz, l'AI sta rapidamente diventando una delle principali voci di spesa in R&D, potendo raggiungere facilmente il 10-15% del budget totale.

La lezione è stata brutale ma fondamentale: Un sistema AI che non può essere testato in modo economico e affidabile è un sistema che non può essere sviluppato in modo sostenibile.

La Scoperta dei Tier OpenAI: Pianificazione Strategica del Budget

Durante la sfida della gestione del budget, abbiamo imparato a conoscere intimamente il sistema dei tier di utilizzo OpenAI:

  • Tier 1 (dopo €5 spesi): €100/mese di limite - perfetto per prototipazione
  • Tier 2 (€50 spesi + 7 giorni): €500/mese - sviluppo serio
  • Tier 3 (€100 spesi + 7 giorni): €1.000/mese - team di sviluppo
  • Tier 4 (€250 spesi + 14 giorni): €5.000/mese - produzione PMI
  • Tier 5 (€1.000 spesi + 30 giorni): €200.000/mese - scala enterprise

La nostra strategia: 95% di test con mock per sviluppo rapido ed economico, 5% di test reali per validazione finale.

L'Effetto CLI Coding: Quando i Test si Moltiplicano

Ironicamente, proprio mentre riuscivamo a contenere i costi delle API con i mock, una nuova sfida emergeva: l'avvento dei CLI di coding assistito dall'AI. Strumenti come Claude Code, GitHub Copilot CLI e Cursor hanno rivoluzionato il nostro modo di scrivere codice.

Dove prima scrivevamo manualmente 10 test per componente, ora con l'assistenza AI ne generiamo facilmente 100+ in pochi minuti. Il paradosso: mentre il costo per test scende, il volume totale dei test cresce esponenzialmente.

L'implementazione dell'AI Abstraction Layer non è stata quindi solo una best practice; è stata una decisione di sopravvivenza economica:

  • Gratuiti: 99% dei test ora girano senza costi API
  • Veloci: Da 10 minuti a 30 secondi per suite completa
  • Affidabili: Test deterministici e ripetibili

Finale del Terzo Movimento

Isolare l'intelligenza è stato il passo che ci ha permesso di passare da "sperimentare con l'AI" a "fare ingegneria del software con l'AI". Ci ha dato la fiducia e gli strumenti per costruire il resto dell'architettura su fondamenta solide e testabili.

Con un singolo agente robusto e un ambiente di test affidabile, eravamo finalmente pronti ad affrontare la sfida successiva: far collaborare più agenti. Questo ci ha portato alla creazione del Direttore d'Orchestra, il cuore pulsante del nostro team AI.