Guida Didattica · Percorso Python

Il Tuo Assistente AI Conversazionale

Costruisci un chatbot con memoria: gestione della cronologia, personalità e istruzioni di sistema.

0 di 5 passaggi completati

01Fondamenti

Dalla singola chiamata alla conversazione

Nella guida sulle API hai inviato un singolo messaggio. Un vero assistente conversazionale deve "ricordare" cosa è stato detto prima: ogni nuova domanda va inviata insieme a tutta la cronologia precedente, perché il modello stesso non conserva memoria tra una chiamata e l'altra.

cronologia = []

def invia_messaggio(testo_utente):
    cronologia.append({"role": "user", "content": testo_utente})
    risposta = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=300,
        messages=cronologia
    )
    testo_risposta = risposta.content[0].text
    cronologia.append({"role": "assistant", "content": testo_risposta})
    return testo_risposta

02Concetti Chiave

🧠 Memoria conversazionale▶

Consiste semplicemente nel mantenere una lista crescente di messaggi (domande e risposte precedenti) da inviare a ogni nuova chiamata, così il modello "vede" tutto lo storico della conversazione.

⚙️ System prompt▶

Un'istruzione speciale, separata dai messaggi utente, che definisce il comportamento e la "personalità" dell'assistente per tutta la conversazione (es. "Rispondi sempre in modo formale e conciso").

risposta = client.messages.create( model="claude-sonnet-4-5", max_tokens=300, system="Sei un tutor di Python paziente e amichevole, che spiega con esempi semplici.", messages=cronologia )
💾 Persistenza della cronologia▶

Se vuoi che la conversazione sopravviva alla chiusura dello script, puoi salvare la cronologia su file (JSON, visto nella guida sui file) e ricaricarla all'avvio successivo.

import json with open("cronologia.json", "w") as f: json.dump(cronologia, f)
✂️ Limitare la cronologia▶

Conversazioni molto lunghe possono superare il limite di token gestibile dal modello. Una tecnica comune è mantenere solo gli ultimi N messaggi, o riassumere periodicamente quelli più vecchi.

cronologia = cronologia[-10:] # mantieni solo gli ultimi 10 messaggi
🔗 Combinare RAG e conversazione▶

Un assistente avanzato può combinare la memoria conversazionale con il retrieval RAG visto nella guida precedente: a ogni domanda, recupera contesto rilevante e lo aggiunge, mantenendo comunque lo storico della chat.

03Checklist Pratica

Spunta ogni passaggio man mano che lo completi: sbloccherai l'attestato di questa guida al termine.

Esempio per il punto 1

cronologia = []
cronologia.append({"role": "user", "content": "Ciao, come ti chiami?"})
print(cronologia)
1. Crea una lista di cronologiaInizializza una lista vuota e aggiungi un primo messaggio utente, come nell'esempio sopra.

Esempio per il punto 2

def invia_messaggio(testo_utente, cronologia):
    cronologia.append({"role": "user", "content": testo_utente})
    risposta = client.messages.create(
        model="claude-sonnet-4-5", max_tokens=300, messages=cronologia
    )
    testo = risposta.content[0].text
    cronologia.append({"role": "assistant", "content": testo})
    return testo, cronologia
2. Scrivi una funzione che gestisce lo scambioCrea una funzione che invia il messaggio e aggiorna la cronologia, come nell'esempio sopra.

Esempio per il punto 3

risposta = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=300,
    system="Sei un assistente che risponde sempre con entusiasmo e in modo semplice.",
    messages=cronologia
)
3. Definisci un system promptAggiungi il parametro system per dare una personalità al tuo assistente, come nell'esempio sopra.

Esempio per il punto 4

import json

with open("cronologia.json", "w") as f:
    json.dump(cronologia, f)

with open("cronologia.json", "r") as f:
    cronologia_ricaricata = json.load(f)
4. Salva e ricarica la cronologia da fileUsa json.dump() e json.load() come nell'esempio sopra.
5. Completa il quiz di verificaScendi in fondo alla guida e rispondi correttamente ad almeno l'80% delle domande.

04Glossario Interattivo

Tocca ogni termine per vederne la definizione.

05Quiz di Verifica

06Esercitazioni Pratiche

Esercizio 1

Il tutor personale

Crea un assistente con un system prompt che lo caratterizza come tutor di una materia a tua scelta. Fai una conversazione di almeno 4 scambi, verificando che ricordi il contesto dei turni precedenti.

⏱ 30 minuti📦 Script + conversazione di 4 scambi🖥️ Individuale
Esercizio 2

Chat persistente

Crea uno script che, all'avvio, ricarica la cronologia da un file JSON se esiste, altrimenti ne crea una vuota. Alla fine di ogni conversazione, salva la cronologia aggiornata su file.

⏱ 25 minuti📦 Script con persistenza funzionante🖥️ Individuale
Esercizio 3

Trova l'errore: il modello che "dimentica"

Questo codice fa perdere la memoria all'assistente: a ogni nuovo messaggio si crea una lista messages vuota invece di riutilizzare la cronologia esistente. Spiega perché il modello sembra "non ricordare" nulla in questo caso.

⏱ 10 minuti📦 Spiegazione scritta + codice corretto🖥️ Individuale o in coppia

🎓 Attestato di completamento

Completa tutti i 5 passaggi della checklist per sbloccare il tuo attestato in PDF.

0 / 5 passaggi completati