# Impostazioni LLM

Quando si progettano e si testano i prompt, si interagisce direttamente con l'LLM oppure tramite un'API. In questo secondo caso è possibile configurare alcuni parametri per ottenere risultati diversi per i prompt. La modifica di queste impostazioni è importante per migliorare l'affidabilità e la desiderabilità delle risposte e richiede un po' di sperimentazione per capire quali sono le impostazioni corrette per i propri casi d'uso. Di seguito sono riportate le impostazioni comuni con diversi fornitori di LLM:

**Temperatura** - In breve, più bassa è `temperature`, più deterministici sono i risultati, nel senso che viene sempre scelto il token successivo più probabile. L'aumento della temperatura può portare a una maggiore casualità, che incoraggia risultati più diversi o creativi. In sostanza, si aumenta il peso degli altri possibili token. In termini di applicazione, si potrebbe usare un valore di temperatura più basso per compiti come il QA (Question Answering, la risposta alle domande) basata sui fatti, per incoraggiare risposte più concrete e concise. Per la generazione di poesie o altri compiti creativi, potrebbe essere utile aumentare il valore della temperatura.

**Top P** - Una tecnica di campionamento con temperatura chiamata campionamento del nucleo, in cui è possibile controllare quanto sia deterministico il modello. Se cercate risposte esatte e concrete, mantenete questo valore basso. Se cercate risposte più diversificate, aumentate il valore. Se si usa Top P significa che solo i token che comprendono la probabilità `top_p` sono considerati per le risposte, quindi un valore `top_p` basso seleziona le risposte più sicure. Ciò significa che un valore `top_p` elevato consentirà al modello di prendere in considerazione un numero maggiore di parole possibili, comprese quelle meno probabili, dando luogo a risultati più diversificati. La raccomandazione generale è di modificare la temperatura o Top P, ma non entrambe.

**Lunghezza massima** - È possibile gestire il numero di token generati dal modello regolando `max length`. Specificando una lunghezza massima si evitano risposte lunghe o irrilevanti e si controllano i costi.

**Sequenze di stop** - Una `stop sequence` è una stringa che impedisce al modello di generare token. Specificare le sequenze di stop è un altro modo per controllare la lunghezza e la struttura della risposta del modello. Ad esempio, si può dire al modello di generare elenchi che non abbiano più di 10 elementi aggiungendo "11" come sequenza di stop.

**Penalità di frequenza** - La `frequency penalty` applica una penalità al token successivo proporzionale al numero di volte in cui il token è già apparso nella risposta e nel prompt. Più alta è la penalità di frequenza, minore è la probabilità che una parola compaia di nuovo. Questa impostazione riduce la ripetizione delle parole nella risposta del modello, assegnando ai token che compaiono più volte una penalità più alta.

**Penalità di presenza** - Anche la `presence penalty` applica una penalità ai token ripetuti ma, a differenza della penalità di frequenza, la penalità è la stessa per tutti i token ripetuti. Un token che compare due volte e un token che compare 10 volte sono penalizzati allo stesso modo. Questa impostazione impedisce al modello di ripetere troppo spesso le frasi nella sua risposta. Se si vuole che il modello generi testi diversi o creativi, si potrebbe usare una penalità di presenza più alta. Se invece si vuole che il modello rimanga concentrato, si può usare una penalità di presenza più bassa.

Come per `temperature` e `top_p`, la raccomandazione generale è di modificare la penalità di frequenza o di presenza, ma non entrambe.

Prima di iniziare con alcuni esempi di base, tenete presente che i risultati possono variare a seconda della versione di LLM utilizzata.
