Estudio de Gemma 4

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.

Resumen con para qué y cómo, listo para pegar en tu OKF/Obsidian (el agente lo implementa sin gastar tokens).

1 · Tokens de turno — estructura básica

Cada turno se abre con <|turn>, se etiqueta con system / user / model y se cierra con <turn|>.

🐍 Script minimalista (Python / uv)

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

🔁 Cómo funciona

  1. El prompt se escribe con los tokens de turno: <|turn>system → instrucciones del sistema, <|turn>user → pregunta, <|turn>model → donde empieza a generar.
  2. El SDK (google-genai) envía el prompt y el modelo continúa desde el turno model.
  3. La respuesta se lee en resp.text.
⚠️ Los tokens de control son reservados del tokenizador: no escribirlos como texto libre si se quiere mantener el formato estricto de Gemma 4.

2 · Multimodalidad — imagen y audio

Los tokens <|image|> y <|audio|> son marcadores de posición: tras tokenizar se reemplazan por las incorporaciones (embeddings) reales de la imagen / el audio.

🖼️ Prompt multimodal mínimo

<|turn>user
Describe this image: <|image|>

And translate these audio:

a. <|audio|>
b. <|audio|><turn|>
<|turn>model

🔊 Audio — ASR y AST (prompts guía)

TareaPrompt
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}:
💡 Ejemplo de instrucción de formato: "When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven."

3 · Agentes y razonamiento

Para flujos de agente, Gemma 4 usa tokens que separan el razonamiento interno (pensamiento) de las acciones externas (llamada a función).

🤖 Script minimalista (pensamiento + herramienta)

# 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).

🔁 Ciclo del agente

  1. Consulta del usuario.
  2. Razonamiento interno en el canal de pensamiento (<|channel>thought … <channel|>).
  3. Solicitud de herramienta: el modelo detiene la generación y emite <|tool_call>.
  4. Ejecución e inyección: la app ejecuta la función y añade <|tool_response>.
  5. Respuesta final: el modelo lee el resultado y genera la respuesta.
🧠 Gestión del contexto: en conversaciones estándar se quitan los pensamientos del turno anterior; en llamadas a función no se quitan entre llamadas del mismo turno.

4 · Grafo animado — el ciclo del agente

El token 🟠 recorre el flujo en orden. Clic en el gráfico reinicia la animación.

Iniciando…

5 · Referencia de tokens y regla de librerías

🔠 Tokens de control de Gemma 4

GrupoTokenQué hace
Turnosystem / user / modelEtiqueta 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
📦 Regla de librerías (local primero): revisar 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.