Guida Progetto · Percorso Python

Assistente AI con Memoria Conversazionale

Il progetto finale: un chatbot completo, con personalità, memoria persistente e conoscenza dei tuoi documenti.

0 di 6 passaggi completati

01Obiettivo del Progetto

Cosa costruirai

Questo è il progetto più completo del percorso: un assistente AI con una personalità definita (system prompt), che ricorda la conversazione anche dopo aver chiuso e riaperto lo script (persistenza), e che opzionalmente può consultare i tuoi documenti (RAG) — mettendo insieme tutto ciò che hai imparato sull'AI generativa.

Prerequisiti — guide da cui questo progetto attinge

Guida 18API e SDK Anthropic
Guida 20Sistema RAG
Guida 21Assistente conversazionale
Guida 23Deployment con Streamlit

02Passo dopo Passo

Spunta ogni passaggio man mano che lo completi: sbloccherai l'attestato del progetto al termine.

Passo 1 — Codice

# assistente.py
import streamlit as st
import anthropic
import json
import os

client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

SYSTEM_PROMPT = "Sei un tutor Python paziente, che spiega con esempi semplici e incoraggia sempre lo studente."
1. Prepara la struttura del progettoCrea il file, importa le librerie e definisci il system prompt, come nel Passo 1.

Passo 2 — Codice

def carica_cronologia():
    if os.path.exists("cronologia.json"):
        with open("cronologia.json", "r") as f:
            return json.load(f)
    return []

def salva_cronologia(cronologia):
    with open("cronologia.json", "w") as f:
        json.dump(cronologia, f)
2. Scrivi le funzioni di persistenzaCrea carica_cronologia() e salva_cronologia() come nel Passo 2.

Passo 3 — Codice

if "cronologia" not in st.session_state:
    st.session_state.cronologia = carica_cronologia()

st.title("🤖 Il mio Assistente AI")

for messaggio in st.session_state.cronologia:
    with st.chat_message(messaggio["role"]):
        st.write(messaggio["content"])
3. Integra la cronologia in StreamlitUsa st.session_state e st.chat_message() per mostrare la conversazione, come nel Passo 3.

Passo 4 — Codice

domanda = st.chat_input("Scrivi un messaggio...")

if domanda:
    st.session_state.cronologia.append({"role": "user", "content": domanda})
    with st.chat_message("user"):
        st.write(domanda)
4. Gestisci l'input dell'utenteUsa st.chat_input() per ricevere e mostrare il messaggio dell'utente, come nel Passo 4.

Passo 5 — Codice

    risposta = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=400,
        system=SYSTEM_PROMPT,
        messages=st.session_state.cronologia
    )
    testo_risposta = risposta.content[0].text
    st.session_state.cronologia.append({"role": "assistant", "content": testo_risposta})

    with st.chat_message("assistant"):
        st.write(testo_risposta)

    salva_cronologia(st.session_state.cronologia)
5. Invia il messaggio e salva la rispostaChiama il modello, mostra la risposta e salva subito la cronologia aggiornata, come nel Passo 5.

Passo 6 — Test

# streamlit run assistente.py
# Fai una conversazione di almeno 4 messaggi, chiudi l'app, riaprila:
# la cronologia precedente deve essere ancora visibile.
6. Testa la persistenza tra sessioniVerifica che la conversazione sopravviva alla chiusura e riapertura dell'app, come nel Passo 6.

03Sfide ed Estensioni

Sfida 1

Aggiungi il RAG

Integra la logica del progetto "Chatbot Documentale con RAG": prima di rispondere, recupera contesto rilevante da un documento e aggiungilo al prompt.

⏱ 40 minuti🖥️ Individuale
Sfida 2

Pulsante "Nuova conversazione"

Aggiungi un pulsante che azzeri la cronologia (sia in session_state che nel file salvato), per iniziare una chat da zero.

⏱ 15 minuti🖥️ Individuale
Sfida 3

Personalità selezionabile

Aggiungi un selectbox che permetta di scegliere tra 2-3 system prompt diversi (es. tutor severo, tutor amichevole, assistente tecnico), cambiando il comportamento dell'assistente.

⏱ 20 minuti🖥️ Individuale

🎓 Attestato di completamento progetto

Completa tutti i 6 passaggi per sbloccare il tuo attestato in PDF.

0 / 6 passaggi completati
🏆 Con questo progetto completi l'intero percorso: dai fondamenti di Python al tuo assistente AI personale, passando per Data Science, Machine Learning e RAG.