Chatbot
Un chatbot è un software che conversa in linguaggio naturale tramite testo o voce, dagli script basati sul confronto di parole chiave come ELIZA alle app di chat basate su LLM come ChatGPT.
Un chatbot è un programma per computer che conversa con le persone in linguaggio naturale, tramite testo o voce. La ELIZA di Joseph Weizenbaum, scritta al MIT e pubblicata nel 1966, è generalmente considerata il primo chatbot: il suo script DOCTOR imitava uno psicoterapeuta abbinando parole chiave e trasformando le affermazioni dell'utente in domande, e Weizenbaum rimase turbato nel vedere gli utenti, compresa la sua segretaria, confidarsi con il programma come se li capisse. Da allora i chatbot hanno attraversato tre generazioni, passando dagli script basati su regole ai bot basati sugli intenti fino ai modelli linguistici di grandi dimensioni (LLMs). ChatGPT di OpenAI, lanciato il 30 novembre 2022, ha reso mainstream la terza generazione, e oggi "chatbot" indica solitamente un'interfaccia di chat basata su un LLM come ChatGPT, Claude o Gemini.
Come funzionano i chatbot#
- Chatbot basati su regole: Confrontano le parole dell'utente con schemi scritti a mano e rispondono usando modelli predefiniti. Sono prevedibili ed economici, ma non funzionano con formulazioni che i loro autori non avevano previsto.
- Chatbot basati sugli intenti: Un classificatore di comprensione del linguaggio naturale (NLU) associa ogni messaggio a un intento, come controllare un saldo, ed estrae dettagli come un conto o una data; poi i flussi di dialogo progettati decidono la risposta. Banche, compagnie aeree e società di telecomunicazioni hanno sviluppato bot per l'assistenza clienti in questo modo, perché ogni risposta poteva essere verificata in anticipo.
- Chatbot basati su LLM: Generano ogni risposta un token alla volta, a partire dalla conversazione fino a quel momento. Un prompt di sistema definisce il ruolo e le regole del bot, mentre il modello gestisce formulazioni che nessuno aveva previsto.
Il modello alla base di un chatbot basato su LLM è un Transformer addestrato per il dialogo con l'affinamento tramite istruzioni e l'apprendimento per rinforzo dal feedback umano (RLHF), e non conserva memoria tra una chiamata e l'altra. L'applicazione archivia la conversazione e la invia tutta, formattata secondo il template di chat del modello, insieme a ogni nuovo messaggio:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-135M-Instruct")
# Il chatbot archivia la conversazione e la invia tutta a ogni nuovo turno
messages = [
{"role": "system", "content": "You are a support assistant for an online store."},
{"role": "user", "content": "Where is my order?"},
{"role": "assistant", "content": "Could you share your order number?"},
{"role": "user", "content": "It's 4417."},
]
# Il template di chat appiattisce la cronologia in un unico prompt che il modello deve proseguire
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
print(prompt)Il prompt stampato racchiude ogni turno tra i marcatori <|im_start|> e <|im_end|> con il relativo ruolo e termina con una riga <|im_start|>assistant aperta, così i token successivi del modello diventano la risposta e "Sono le 4417" ha senso solo perché la domanda precedente è nello stesso prompt. A ogni turno il prompt si allunga, quindi le conversazioni lunghe vengono ridotte o riassunte prima di superare la finestra di contesto, mentre la memorizzazione nella cache dei prompt evita di rielaborare la cronologia invariata a ogni turno.
Ancoraggio, strumenti e immagini#
Un chatbot di supporto che risponde basandosi solo sui propri dati di addestramento presenterà con sicurezza policy errate; perciò, prima di rispondere, i bot in produzione recuperano i documenti pertinenti e i dati dell'account con la generazione aumentata dal recupero (RAG), verificano gli input e le bozze con le protezioni di sicurezza per l'IA e passano la conversazione a una persona quando non è possibile supportare una risposta:
I chatbot che chiamano strumenti tramite chiamata di funzioni, per esempio per cercare un ordine, stanno diventando agenti IA, mentre i chatbot multimodali accettano foto e screenshot durante un turno tramite modelli visione-linguaggio (VLMs). L'interfaccia LLM di Ultralytics invia un prompt, un'immagine o la cronologia completa dei messaggi a qualsiasi modello di chat compatibile con OpenAI e restituisce l'oggetto di risposta del provider; così una pipeline YOLO26 può chiedere a un modello multimodale di descrivere una scena solo dopo che il rilevamento vi ha individuato una persona.
Rischi#
Le allucinazioni hanno conseguenze legali quando un'azienda implementa un bot. Nella causa Moffatt contro Air Canada, decisa nel febbraio 2024, il chatbot del sito web della compagnia aerea disse a un passeggero in lutto che poteva richiedere uno sconto per lutto dopo il viaggio, in contraddizione con la policy effettiva della compagnia. Il Tribunale per la risoluzione delle controversie civili della Columbia Britannica respinse l'argomentazione di Air Canada secondo cui il chatbot era responsabile delle proprie affermazioni e ordinò alla compagnia di pagare la differenza. I chatbot devono inoltre affrontare tentativi di prompt injection e di jailbreak, e i modelli ottimizzati per compiacere gli utenti possono scivolare nell'adulazione dell'IA, concordando con affermazioni false invece di correggerle.
Chatbot e termini correlati#
- Assistente virtuale: Software come Siri o Alexa che esegue richieste tra app e dispositivi. Un chatbot si trova solitamente in un solo sito web, app o canale di messaggistica e si concentra sulla conversazione.
- Agente IA: Sistema che persegue un obiettivo scegliendo ed eseguendo azioni, spesso attraverso molti passaggi senza l'intervento di una persona. Un chatbot diventa un agente quando agisce tramite strumenti oltre a fornire risposte.
- IA conversazionale: Campo più ampio delle tecnologie alla base di chatbot e assistenti, che comprende il riconoscimento vocale, NLU, la gestione del dialogo e la sintesi vocale.










