AI per principiantiGuida
System prompt e temperature: cosa fanno e come impostarli
Cosa fanno il messaggio di sistema e la temperature in una richiesta compatibile OpenAI, con esempi Python e curl che puoi inviare a un modello CheapTokens.

In questa pagina
Un system prompt è un messaggio con ruolo system che indica al modello come comportarsi in ogni risposta: chi è, quale formato usare, cosa evitare. La temperature è un numero, di solito tra 0 e 2 (l'intervallo dipende dal modello), che stabilisce quanto può variare la formulazione: valori bassi danno risposte concentrate e ripetibili, valori alti risposte più varie. Entrambi vanno nella stessa richiesta Chat Completions, che invii a https:/.
Qui sotto: cosa sono, con quali valori iniziare e una richiesta che puoi eseguire in Python o curl. Se non hai ancora inviato una richiesta, inizia da la tua prima richiesta API con CheapTokens.
Cos'è un system prompt?#
Una richiesta chat è una lista di messaggi, e ogni messaggio ha un ruolo. La reference di Chat Completions ne elenca quattro: system, user, assistant e tool (DeepSeek API reference, verificata il 22 ottobre 2026). Per una prima richiesta te ne servono tre:
system— istruzioni permanenti da parte tua, lo sviluppatore. Il modello le tratta come le regole della conversazione.user— ciò che la persona chiede o fornisce in questo turno.assistant— le risposte precedenti del modello. Le aggiungi tu quando continui una conversazione.
Un messaggio di sistema richiede role impostato a system e content come stringa. Il campo name è opzionale.
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
]Il messaggio di sistema va per primo. Il messaggio utente è il compito vero e proprio.
Come scrivere un system prompt utile#
- Di' cosa fa il modello in una frase: "Sei un editor", "Classifichi i ticket di supporto".
- Indica il formato di output: "Restituisci solo il testo riscritto", "Rispondi in due frasi", "Rispondi con JSON valido".
- Dai le regole come frasi brevi e dirette. Diverse righe chiare funzionano meglio di un lungo paragrafo.
- Tienilo corto. Il system prompt viene inviato con ogni richiesta e conteggiato come token di input, quindi uno lungo si paga ogni volta. Come vengono fatturati input e output è in token di input vs output.
Cosa fa la temperature?#
Un modello sceglie ogni token successivo da un insieme di candidati probabili. La temperature controlla quanto strettamente si attiene a quello più probabile. Secondo la DeepSeek API reference (verificata il 22 ottobre 2026), temperature accetta valori da 0 a 2 con default 1: valori più alti danno output più casuale, valori più bassi output più concentrato e deterministico. Gli intervalli variano tra i modelli: DeepSeek documenta 0-2, Z.ai documenta 0-1 per GLM-5.3 (entrambe verificate il 22 ottobre 2026), quindi i valori da 0 a 1 sono sicuri su entrambi. Controlla l'intervallo del tuo modello nella documentazione.
Punti di partenza che funzionano per la maggior parte dei compiti. Sono regole empiriche, non garanzie:
Scorri la tabella verso destra →
| Compito | Inizia con |
|---|---|
| Estrazione, classificazione, codice, formati rigidi | 0 a 0.3 |
| Q&A, riassunti, riscrittura | 0.3 a 0.7 |
| Brainstorming, nomi, testo creativo | 0.8 a 1 |
Tre cose da sapere:
- Una temperature bassa è più ripetibile, non identica. Non fare affidamento su risposte identiche byte per byte.
- Cambia temperature o top_p, non entrambi. È la raccomandazione di DeepSeek;
top_pè un secondo parametro di campionamento con default 1. Lascialo stare finché stai imparando. - Alcune modalità ignorano la temperature. La reference di DeepSeek dice che la temperature non ha effetto in thinking mode e che
top_pè fissato a 1.0 in non-thinking mode. Se cambi un valore e non vedi differenze, controlla prima la modalità del modello.
Invia una richiesta con entrambi#
Imposta la chiave come variabile d'ambiente, così non finisce mai nel codice (vedi cos'è una API key e come conservarla in modo sicuro). Prendi l'id esatto del modello dalla documentazione CheapTokens: provider diversi chiamano lo stesso modello in modi diversi. Questo esempio usa MiniMax-M2.7.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."},
],
temperature=0.3,
max_tokens=1000,
)
print(response.choices[0].message.content)
print(response.choices[0].finish_reason)La stessa richiesta con curl:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
],
"temperature": 0.3,
"max_tokens": 1000
}'Cosa dovresti vedere: una versione breve e più amichevole della frase e stop come finish_reason. Se finish_reason è length, la risposta ha raggiunto il limite max_tokens; vedi perché una risposta AI si interrompe a metà frase.
Guarda la temperature in azione#
Il modo migliore per capire la temperature è porre la stessa domanda più volte. Questo ciclo invia una breve richiesta tre volte a 0 e tre volte a 1, usando client dell'esempio sopra:
for temp in (0, 1):
print("temperature", temp)
for _ in range(3):
r = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "Answer with one word."},
{"role": "user", "content": "Name a fruit."},
],
temperature=temp,
max_tokens=500,
)
print(" ", r.choices[0].message.content)A 0 le tre righe sono di solito la stessa parola; a 1 vedrai di solito parole più diverse. I modelli che ragionano prima di rispondere possono spendere parte di max_tokens in quel ragionamento, quindi tieni il limite generoso anche per una risposta di una sola parola. Poi cambia solo il system prompt (per esempio, "Rispondi con una parola, in francese") ed eseguilo di nuovo: le regole nel messaggio di sistema si applicano a ogni temperature.
Questi esperimenti sono piccoli. Per un'idea approssimativa, ecco il costo di 100 richieste da circa 120 token di input e 80 di output ciascuna (un carico di esempio; i conteggi dei token dipendono dai tuoi prompt):
| Modello | Input $/1M | Output $/1M | Per richiesta | 100 richieste | OpenRouter, 100 richieste |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000056 | $0.00056 | $0.0011 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000098 | $0.00098 | $0.0018 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000018 | $0.0018 | $0.0132 |
120 token di input e 80 token di output per richiesta. I prezzi per 1M di token sono attuali e cambiano insieme alle nostre tariffe; la colonna OpenRouter mostra i prezzi di riferimento per lo stesso carico di lavoro.
Su quale modello provarlo#
- MiniMax-M2.7 è una buona prima scelta per molte richieste di test brevi, e puoi riutilizzare lo stesso system prompt per confrontare le risposte: contesto 180K, fino a 8.192 token di output, più economico del prezzo di riferimento di OpenRouter su entrambi i lati. Prezzo attuale: input $0.05, output $0.15 per 1M token.
Un solo saldo copre tutti, quindi cambiare modello è una modifica di una riga a model. Tutti i prezzi attuali sono nella pagina dei prezzi.
Se non funziona#
- 401 o errore di autenticazione: la chiave manca, è scritta male o la variabile d'ambiente non è impostata in questo terminale. Controlla
echo $CHEAPTOKENS_.API_ KEY - Model not found: copia l'id del modello dalla documentazione esattamente, incluso il prefisso.
- Un errore su un parametro non valido: tieni
temperaturenell'intervallo supportato dal tuo modello (0 a 1 è sicuro) e passa numeri, non stringhe. - Il modello ignora la tua regola: rendila una frase breve e diretta, spostala in cima al messaggio di sistema e ripeti il formato esatto che vuoi.
- Cambiare la temperature non cambia nulla: potresti usare una modalità che la ignora (vedi sopra), oppure la risposta è così vincolata ("una parola", "JSON valido") che esistono poche varianti.
- La risposta è troncata: aumenta
max_tokens; la guida a max_tokens spiega come.
Prossimo passo#
Metti una regola chiara nel messaggio di sistema, scegli una temperature dalla tabella ed esegui il ciclo sopra sul tuo compito. Quando il risultato è quello che vuoi, tieni il system prompt corto e riutilizzalo. Ottieni una chiave e controlla i prezzi attuali nella documentazione.



