Gemini está pensando
Los modelos de las series Gemini 3 y 2.5 utilizan un "proceso de pensamiento" que mejora significativamente sus capacidades de razonamiento y planificación de varios pasos, lo que los hace muy eficaces para tareas complejas, como programación, matemáticas avanzadas y análisis de datos.
Cuando usas un modelo de razonamiento, Gemini razona internamente antes de responder. La API de Interactions muestra este razonamiento a través de pasos thought, que son pasos dedicados que aparecen cronológicamente junto con las llamadas a funciones, las entradas del usuario o los resultados del modelo en el array steps.
Cada paso de pensamiento contiene dos campos:
| Campo | Obligatorio | Descripción |
|---|---|---|
signature |
✅ Sí | Es una representación encriptada del estado de razonamiento interno del modelo. Siempre está presente, incluso cuando el modelo realiza un razonamiento mínimo. |
summary |
❌ No | Es un array de contenido (texto o imágenes) que resume el razonamiento. Puede estar vacío según la configuración de thinking_summaries, si el modelo realizó suficiente razonamiento o el tipo de contenido (por ejemplo, es posible que las latencias de imágenes no tengan resúmenes de texto). |
Interacciones con el pensamiento
Iniciar una interacción con un modelo de pensamiento es similar a cualquier otra solicitud de interacción. Especifica uno de los modelos con asistencia para el pensamiento en el campo model:
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Explain the concept of Occam's Razor and provide a simple, everyday example."
)
print(interaction.steps[-1].content[0].text)
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Explain the concept of Occam's Razor and provide a simple, everyday example."
});
console.log(interaction.steps.at(-1).content[0].text);
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"input": "Explain the concept of Occam'\''s Razor and provide a simple example."
}'
Puedes transmitir interacciones de pensamiento para recibir resúmenes y firmas de pensamiento incrementales durante la generación. Para obtener una guía completa que abarque los tipos de eventos, los tipos de delta y los ejemplos de código, consulta la guía Interacciones de transmisión.
Resúmenes de pensamientos
Los resúmenes de pensamiento brindan información sobre el proceso de razonamiento interno del modelo.
De forma predeterminada, solo se devuelve el resultado final. Puedes habilitar los resúmenes de pensamientos con thinking_summaries:
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="What is the sum of the first 50 prime numbers?",
generation_config={
"thinking_summaries": "auto"
}
)
for step in interaction.steps:
if step.type == "thought":
print("Thought summary:")
if step.summary:
for content_block in step.summary:
if content_block.type == "text":
print(content_block.text)
print()
elif step.type == "model_output":
for content_block in step.content:
if content_block.type == "text":
print("Answer:")
print(content_block.text)
print()
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "What is the sum of the first 50 prime numbers?",
generation_config: {
thinking_summaries: "auto"
}
});
for (const step of interaction.steps) {
if (step.type === "thought") {
console.log("Thought summary:");
if (step.summary) {
for (const contentBlock of step.summary) {
if (contentBlock.type === "text") console.log(contentBlock.text);
}
}
} else if (step.type === "model_output") {
for (const contentBlock of step.content) {
if (contentBlock.type === "text") {
console.log("Answer:");
console.log(contentBlock.text);
}
}
}
}
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"input": "What is the sum of the first 50 prime numbers?",
"generation_config": {
"thinking_summaries": "auto"
}
}'
En los siguientes casos, un bloque de pensamiento puede contener solo una firma sin resumen:
- Solicitudes simples en las que el modelo no razonó lo suficiente para generar un resumen
thinking_summaries: "none", donde los resúmenes están inhabilitados de forma explícita- Es posible que algunos tipos de contenido de pensamiento, como las imágenes, no tengan resúmenes de texto.
Tu código siempre debe controlar los bloques de pensamiento en los que summary está vacío o ausente.
Control del pensamiento
De forma predeterminada, los modelos de Gemini participan en el pensamiento dinámico, ya que ajustan automáticamente la cantidad de esfuerzo de razonamiento según la complejidad de la solicitud. Puedes controlar este comportamiento con el parámetro thinking_level.
| Modelo | Pensamiento predeterminado | Niveles admitidos |
|---|---|---|
| gemini-3.1-pro-preview | Encendido (alto) | baja, media, alta |
| gemini-3-flash-preview | Encendido (alto) | mínima, baja, media, alta |
| gemini-3-pro-preview | Encendido (alto) | baja, alta |
| gemini-2.5-pro | Activado | baja, media, alta |
| gemini-2.5-flash | Activado | baja, media, alta |
| gemini-2.5-flash-lite | Desactivado | baja, media, alta |
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Provide a list of 3 famous physicists and their key contributions",
generation_config={
"thinking_level": "low"
}
)
print(interaction.steps[-1].content[0].text)
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Provide a list of 3 famous physicists and their key contributions",
generation_config: {
thinking_level: "low"
}
});
console.log(interaction.steps.at(-1).content[0].text);
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"input": "Provide a list of 3 famous physicists and their key contributions",
"generation_config": {
"thinking_level": "low"
}
}'
Firmas de pensamiento
Las firmas de pensamiento son representaciones encriptadas del razonamiento interno del modelo. Deben mantener la continuidad del razonamiento en las interacciones de varios turnos.
La API de Interactions simplifica el manejo de las firmas de pensamiento mucho más que la API de generateContent.
Modo con estado (recomendado)
De forma predeterminada, cuando usas la API de Interactions en modo con estado (configurando store: true y pasando previous_interaction_id en los turnos posteriores), el servidor administra automáticamente el estado de la conversación, incluidos todos los bloques de pensamiento y las firmas. En este modo, no es necesario que hagas nada con respecto a las firmas. Se controlan por completo en el servidor.
Modo sin estado
Si administras el estado de la conversación por tu cuenta (modo sin estado) y pasas el historial completo de entradas y salidas en cada solicitud, haz lo siguiente:
- DEBES volver a enviar todos los bloques
thoughtexactamente como los recibiste del modelo. - NO debes quitar ni modificar los bloques de pensamiento del historial, ya que contienen las firmas necesarias para que el modelo continúe su razonamiento.
- Cuando cambies de modelo dentro de una sesión, debes volver a enviar los bloques de pensamiento del modelo anterior. El backend administra la compatibilidad.
Precios
Cuando se activa el razonamiento, el precio de la respuesta es la suma de los tokens de salida y los tokens de razonamiento. Puedes obtener la cantidad total de tokens de pensamiento generados en el campo total_thought_tokens.
Python
# This will only work for SDK newer than 2.0.0
# ...
print("Thoughts tokens:", interaction.usage.total_thought_tokens)
print("Output tokens:", interaction.usage.total_output_tokens)
JavaScript
// This will only work for SDK newer than 2.0.0
// ...
console.log(`Thoughts tokens: ${interaction.usage.total_thought_tokens}`);
console.log(`Output tokens: ${interaction.usage.total_output_tokens}`);
Los modelos de pensamiento generan pensamientos completos para mejorar la calidad de la respuesta final y, luego, generan resúmenes para proporcionar información sobre el proceso de pensamiento. El precio se basa en los tokens de pensamiento completos que el modelo necesita generar, a pesar de que solo el resumen se genera desde la API.
Puedes obtener más información sobre los tokens en la guía Recuento de tokens.
Prácticas recomendadas
Sigue estos lineamientos para usar los modelos de pensamiento de manera eficiente.
- Revisar el razonamiento: Analiza los resúmenes de pensamiento para comprender las fallas y mejorar las instrucciones.
- Control thinking budget: Solicita al modelo que piense menos para generar respuestas extensas y ahorrar tokens.
- Tareas simples: Requieren un mínimo de reflexión para recuperar o clasificar hechos (p.ej., "¿Dónde se fundó DeepMind?").
- Tareas moderadas: Usa el pensamiento predeterminado para comparar conceptos o razonamientos creativos (p.ej., compara autos eléctricos e híbridos).
- Tareas complejas: Usa el máximo nivel de pensamiento para la programación avanzada, las matemáticas o la planificación de varios pasos (p.ej., resolver problemas matemáticos de AIME).
¿Qué sigue?
- Generación de texto: Respuestas de texto básicas
- Llamada a función: Conéctate a herramientas
- Guía de Gemini 3: Funciones específicas del modelo