Chatea con Gemma: conversaciones básicas y de varios turnos

Los modelos Gemma ajustados con instrucciones (IT) están diseñados para controlar interacciones conversacionales, desde intercambios de preguntas y respuestas únicos hasta diálogos extendidos de varios turnos. En esta guía, se explica cómo dar formato a las instrucciones para chatear con Gemma y cómo crear conversaciones de varios turnos.

Formato de la instrucción

Los modelos de TI de Gemma usan tokens de control especiales para delimitar los turnos de conversación. Estos tokens son necesarios cuando se envían instrucciones directamente al tokenizador, pero, por lo general, los frameworks compatibles con el chat los aplican automáticamente.

Instrucción de un solo turno

Una instrucción de un solo turno consta de un mensaje del usuario y un marcador de respuesta del modelo:

<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model

Instrucción de varios turnos

Las conversaciones de varios turnos encadenan varios intercambios. Cada turno se incluye entre los mismos tokens de control:

<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

El modelo genera una respuesta para el turno <start_of_turn>model final.

Instrucciones del sistema

Los modelos ajustados por instrucciones de Gemma están diseñados para funcionar con solo dos roles: user y model. Por lo tanto, no se admite el rol system ni un turno del sistema.

En lugar de usar un rol del sistema independiente, proporciona instrucciones a nivel del sistema directamente en la instrucción inicial del usuario. Las capacidades de seguimiento de instrucciones del modelo permiten que Gemma interprete las instrucciones de manera eficaz. Por ejemplo:

Los modelos de Gemma 3 y versiones posteriores admiten instrucciones del sistema que definen el comportamiento, el arquetipo o las restricciones del modelo para toda la conversación. Coloca la instrucción del sistema antes del primer turno del usuario:

<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>

Para obtener más detalles, consulta Instrucciones del sistema y la instrucción.

Compatibilidad con frameworks

La mayoría de los frameworks controlan el formato del chat automáticamente a través de su plantilla de chat o API de conversación:

Transformers de Hugging Face

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?"

Para el chat de varios turnos, usa el modo interactivo:

ollama run gemma3:1b
>>> What is machine learning?
...
>>> How is it different from deep learning?

APIs compatibles con OpenAI

Cuando uses frameworks que exponen una API compatible con OpenAI (como vLLM, llama.cpp o LM Studio), pasa mensajes con el formato messages estándar:

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)

Próximos pasos