Gemma 4 es una familia de modelos abiertos de Google (texto, audio y video, con ventana de contexto de hasta 256 000 tokens). A partir de Gemma 4 hay un nuevo formato de instrucciones basado en tokens de control reservados del tokenizador. A continuación los formatos mínimos: turnos, multimodalidad y agentes / razonamiento, más el grafo animado del ciclo del agente.
Cada turno se abre con <|turn>, se etiqueta con
system / user / model y se cierra con
<turn|>.
# uv add google-genai python-dotenv # entorno Python/uv
# .env → GEMINI_API_KEY="tu-api-key"
from google import genai
import os
# 1. Prompt con el formato de turnos de Gemma 4.
prompt = """<|turn>system
You are a helpful assistant.<turn|>
<|turn>user
What is the water formula?<turn|>
<|turn>model"""
# 2. Llamada mínima.
client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
resp = client.models.generate_content(
model="gemma-4-31b-it", contents=prompt,
)
print(resp.text)
<|turn>system → instrucciones del sistema, <|turn>user → pregunta, <|turn>model → donde empieza a generar.google-genai) envía el prompt y el modelo continúa desde el turno model.resp.text.
Los tokens <|image|> y <|audio|> son
marcadores de posición: tras tokenizar se reemplazan por las incorporaciones
(embeddings) reales de la imagen / el audio.
<|turn>user
Describe this image: <|image|>
And translate these audio:
a. <|audio|>
b. <|audio|><turn|>
<|turn>model
| Tarea | Prompt |
|---|---|
| ASR (transcribir) | Transcribe the following speech segment in {LANGUAGE} into {LANGUAGE} text. + reglas (solo transcripción, dígitos en cifras…) |
| AST (traducir) | Transcribe the following speech segment in {SOURCE}, then translate it into {TARGET}. + formato de salida con {TARGET}: |
Para flujos de agente, Gemma 4 usa tokens que separan el razonamiento interno (pensamiento) de las acciones externas (llamada a función).
# 1. Prompt: pensamiento activado + definición de herramienta.
prompt = """<|turn>system
<|think|>You are a helpful assistant.<|tool>declaration:get_current_temperature{...}<tool|><turn|>
<|turn>user
What's the temperature in London?<turn|>
<|turn>model"""
# 2. El modelo "piensa" en privado y pide usar la herramienta (tool_call).
# La app intercepta la tool_call, ejecuta la función e inyecta el resultado:
tool_response = """<|tool_call>call:get_current_weather
{location:<|"|>London<|"|>}<tool_call|>
<|tool_response>response:get_current_weather
{temperature:15,weather:<|"|>sunny<|"|>}<tool_response|>"""
# 3. Gemma lee el resultado y responde al usuario.
# <|"|> = delimitador de cadenas (caracteres especiales = texto literal).
<|channel>thought … <channel|>).<|tool_call>.<|tool_response>.El token 🟠 recorre el flujo en orden. Clic en el gráfico reinicia la animación.
| Grupo | Token | Qué hace |
|---|---|---|
| Turno | system / user / model | Etiqueta el rol de cada turno |
<|turn> | Comienzo de un turno de diálogo | |
<turn|> | Final de un turno de diálogo | |
| Multimodal | <|image|> | Marcador de posición de imagen |
<|audio|> | Marcador de posición de audio | |
| Agente / razonamiento | <|think|> | Activa el modo de pensamiento |
<|channel> / <channel|> | Proceso interno del modelo (cadena de pensamiento) | |
<|tool> / <tool|> | Define una herramienta | |
<|tool_call> / <tool_call|> | El modelo pide usar una herramienta | |
<|tool_response> / <tool_response|> | Resultado de la ejecución de la herramienta | |
<|"|> | Delimitador de valores de cadena dentro de los datos |
C:\Users\TUF\Documents\librerías\local\ antes de instalar.
Instalación: uv add google-genai python-dotenv.
Docs: https://ai.google.dev/gemma/docs/core/prompt-formatting-gemma4.