Capitolo 1 — La prima chiamata: messages, ruoli e una verità scomoda

Tutto quello che hai fatto finora passava da un'interfaccia di chat. Ora togliamo l'interfaccia. Un'API (Application Programming Interface) è la porta attraverso cui un programma parla con un servizio: il tuo codice manda una richiesta al datacenter — ricordi la filiera del Livello 0? stai per usarla in prima persona — e riceve la risposta del modello, nuda, senza interfaccia intorno.

La struttura della richiesta è universale, con nomi leggermente diversi tra Claude, OpenAI e Gemini. C'è il modello che vuoi usare (e la taglia che scegli determina qualità e prezzo). C'è il system prompt — lo conosci dal Livello 1, qui è un campo dedicato. E c'è la lista dei messages, ognuno con un ruolo: user (l'umano) e assistant (il modello), alternati come in chat. In Python, con la libreria di Anthropic, sono una decina di righe: crei il client, chiami messages.create con modello, system, messages e un tetto di lunghezza (max_tokens), e stampi la risposta.

E qui arriva la verità scomoda che riorganizza tutto: l'API non ricorda niente. È stateless: ogni chiamata è un mondo a sé, e il modello non ha alcuna memoria delle chiamate precedenti. "Ma come, la chat si ricorda cosa ho detto!" — sì, perché l'app della chat, a ogni tuo messaggio, rimanda al modello l'intera conversazione da capo. La memoria non è nel modello: è nel software intorno, che ora sei tu. Se vuoi una conversazione, tieni tu la lista dei messaggi e la rispedisci tutta a ogni turno. Questa scoperta banale e sconvolgente è il cuore del livello: tutta l'"intelligenza applicativa" — memoria, strumenti, personalità — è ingegneria intorno a un modello che sa solo continuare il testo che gli arriva.

Ultima cosa, non negoziabile: la API key. È la chiave del tuo account — chi la possiede spende i tuoi soldi. Vive in una variabile d'ambiente, mai scritta nel codice, mai in un file condiviso, mai in un repository.

L'esperimento del giorno. Crea un account su console.anthropic.com, genera una key, fai la tua prima chiamata da Python. Poi costruisci un loop di chat a riga di comando: leggi l'input, aggiungilo alla lista messages, chiama l'API, aggiungi la risposta alla lista, ripeti. Congratulazioni: hai appena scritto una chat da zero, e adesso sai cosa c'è dietro quelle vere.