I modelli Gemma con ottimizzazione delle istruzioni (IT) sono progettati per gestire interazioni conversazionali, dagli scambi di domande e risposte singoli ai dialoghi estesi a più turni. Questa guida spiega come formattare i prompt per la chat con Gemma e come creare conversazioni multi-turno.
Formato del prompt
I modelli Gemma IT utilizzano token di controllo speciali per delimitare i turni di conversazione. Questi token sono necessari quando gli input vengono inviati direttamente al tokenizer, ma in genere vengono applicati automaticamente dai framework che supportano le chat.
Prompt a turno singolo
Un prompt a un solo turno è costituito da un messaggio dell'utente e da un marcatore di risposta del modello:
<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model
Prompt in più passaggi
Le conversazioni multi-turno concatenano più scambi. Ogni turno è racchiuso negli stessi token di controllo:
<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model
The speed of light in a vacuum is approximately 299,792,458 meters per second.<end_of_turn>
<start_of_turn>user
How long does it take light to reach Earth from the Sun?<end_of_turn>
<start_of_turn>model
Il modello genera una risposta per il turno finale <start_of_turn>model.
Istruzioni di sistema
I modelli ottimizzati per le istruzioni di Gemma sono progettati per funzionare solo con due ruoli:
user e model. Pertanto, il ruolo system o un turno di sistema non è
supportato.
Anziché utilizzare un ruolo di sistema separato, fornisci istruzioni a livello di sistema direttamente nel prompt utente iniziale. Le funzionalità di esecuzione delle istruzioni del modello consentono a Gemma di interpretare le istruzioni in modo efficace. Ad esempio:
Gemma 3 e i modelli successivi supportano le istruzioni di sistema che definiscono il comportamento, il ruolo o i vincoli del modello per l'intera conversazione. Inserisci l'istruzione di sistema prima del primo turno dell'utente:
<start_of_turn>user
Only reply like a pirate.
What is the answer to life the universe and everything?<end_of_turn>
<start_of_turn>model
Arrr, 'tis 42,<end_of_turn>
Per maggiori dettagli, vedi Prompt e istruzioni di sistema.
Supporto dei framework
La maggior parte dei framework gestisce automaticamente la formattazione della chat tramite il modello di chat o l'API Conversation:
Hugging Face Transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("google/gemma-3-1b-it")
model = AutoModelForCausalLM.from_pretrained("google/gemma-3-1b-it")
messages = [
{"role": "user", "content": "What is machine learning?"},
]
inputs = tokenizer.apply_chat_template(
messages,
return_tensors="pt",
add_generation_prompt=True,
)
outputs = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Ollama
ollama run gemma3:1b "What is machine learning?"
Per la chat multi-turno, utilizza la modalità interattiva:
ollama run gemma3:1b
>>> What is machine learning?
...
>>> How is it different from deep learning?
API compatibili con OpenAI
Quando utilizzi framework che espongono un'API compatibile con OpenAI (come vLLM,
llama.cpp o LM Studio), trasmetti i messaggi utilizzando il formato messages standard:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")
response = client.chat.completions.create(
model="google/gemma-3-1b-it",
messages=[
{"role": "user", "content": "What is machine learning?"},
],
)
print(response.choices[0].message.content)