Los modelos de la serie Gemini 2.5 usan un "proceso de pensamiento" interno 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.
En esta guía, se muestra cómo trabajar con las capacidades de pensamiento de Gemini con la API de Gemini.
Antes de comenzar
Asegúrate de usar un modelo de la serie 2.5 compatible para el pensamiento. Te recomendamos que explores estos modelos en AI Studio antes de comenzar a usar la API:
- Prueba Gemini 2.5 Flash en AI Studio
- Prueba Gemini 2.5 Pro en AI Studio
- Prueba la versión preliminar de Gemini 2.5 Flash-Lite en AI Studio
Genera contenido con pensamiento
Iniciar una solicitud con un modelo de pensamiento es similar a cualquier otra solicitud de generación de contenido. La diferencia clave reside en especificar uno de los modelos con compatibilidad de pensamiento en el campo model
, como se muestra en el siguiente ejemplo de generación de texto:
Python
from google import genai
client = genai.Client()
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
model="gemini-2.5-pro",
contents=prompt
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example.";
const response = await ai.models.generateContent({
model: "gemini-2.5-pro",
contents: prompt,
});
console.log(response.text);
}
main();
Go
package main
import (
"context"
"fmt"
"log"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := "Explain the concept of Occam's Razor and provide a simple, everyday example."
model := "gemini-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, genai.Text(prompt), nil)
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain the concept of Occam\'s Razor and provide a simple, everyday example."
}
]
}
]
}'
```
Presupuestos de pensamiento
El parámetro thinkingBudget
guía al modelo sobre la cantidad de tokens de pensamiento que se deben usar cuando se genera una respuesta. Por lo general, una mayor cantidad de tokens permite un razonamiento más detallado, lo que puede ser beneficioso para abordar tareas más complejas. Si la latencia es más importante, usa un presupuesto más bajo o inhabilita el procesamiento estableciendo thinkingBudget
en 0.
Si estableces thinkingBudget
en -1, se activa el pensamiento dinámico, lo que significa que el modelo ajustará el presupuesto según la complejidad de la solicitud.
thinkingBudget
solo es compatible con Gemini 2.5 Flash, 2.5 Pro y 2.5 Flash-Lite. Según la instrucción, el modelo podría desbordar o quedarse por debajo del presupuesto de tokens.
A continuación, se muestran los detalles de configuración de thinkingBudget
para cada tipo de modelo.
Modelo | Configuración predeterminada (no se estableció el presupuesto de pensamiento) |
Rango | Inhabilita el pensamiento | Activa el pensamiento dinámico |
---|---|---|---|---|
2.5 Pro | Pensamiento dinámico: El modelo decide cuándo y cuánto pensar. | De 128 a 32768 |
N/A: No se puede inhabilitar el pensamiento | thinkingBudget = -1 |
2.5 Flash | Pensamiento dinámico: El modelo decide cuándo y cuánto pensar. | De 0 a 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
Flash Lite 2.5 | El modelo no piensa | De 512 a 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-pro",
contents="Provide a list of 3 famous physicists and their key contributions",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=1024)
# Turn off thinking:
# thinking_config=types.ThinkingConfig(thinking_budget=0)
# Turn on dynamic thinking:
# thinking_config=types.ThinkingConfig(thinking_budget=-1)
),
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-pro",
contents: "Provide a list of 3 famous physicists and their key contributions",
config: {
thinkingConfig: {
thinkingBudget: 1024,
// Turn off thinking:
// thinkingBudget: 0
// Turn on dynamic thinking:
// thinkingBudget: -1
},
},
});
console.log(response.text);
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
thinkingBudgetVal := int32(1024)
contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
model := "gemini-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
ThinkingBudget: &thinkingBudgetVal,
// Turn off thinking:
// ThinkingBudget: int32(0),
// Turn on dynamic thinking:
// ThinkingBudget: int32(-1),
},
})
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Provide a list of 3 famous physicists and their key contributions"
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingBudget": 1024
# Thinking off:
# "thinkingBudget": 0
# Turn on dynamic thinking:
# "thinkingBudget": -1
}
}
}'
Resúmenes de pensamientos
Los resúmenes de pensamientos son versiones sintetizadas de los pensamientos sin procesar del modelo y ofrecen estadísticas sobre el proceso de razonamiento interno del modelo. Ten en cuenta que los presupuestos de pensamiento se aplican a los pensamientos sin procesar del modelo y no a los resúmenes de pensamientos.
Para habilitar los resúmenes de pensamientos, establece includeThoughts
en true
en la configuración de la solicitud. Luego, puedes iterar por el parts
del parámetro response
y verificar el valor booleano thought
para acceder al resumen.
Este es un ejemplo que muestra cómo habilitar y recuperar resúmenes de pensamientos sin transmitir, lo que muestra un solo resumen de pensamientos final con la respuesta:
Python
from google import genai
from google.genai import types
client = genai.Client()
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
model="gemini-2.5-pro",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
)
for part in response.candidates[0].content.parts:
if not part.text:
continue
if part.thought:
print("Thought summary:")
print(part.text)
print()
else:
print("Answer:")
print(part.text)
print()
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-pro",
contents: "What is the sum of the first 50 prime numbers?",
config: {
thinkingConfig: {
includeThoughts: true,
},
},
});
for (const part of response.candidates[0].content.parts) {
if (!part.text) {
continue;
}
else if (part.thought) {
console.log("Thoughts summary:");
console.log(part.text);
}
else {
console.log("Answer:");
console.log(part.text);
}
}
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
contents := genai.Text("What is the sum of the first 50 prime numbers?")
model := "gemini-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
},
})
for _, part := range resp.Candidates[0].Content.Parts {
if part.Text != "" {
if part.Thought {
fmt.Println("Thoughts Summary:")
fmt.Println(part.Text)
} else {
fmt.Println("Answer:")
fmt.Println(part.Text)
}
}
}
}
Este es un ejemplo de cómo pensar con transmisión, que muestra resúmenes incrementales y continuos durante la generación:
Python
from google import genai
from google.genai import types
client = genai.Client()
prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
"""
thoughts = ""
answer = ""
for chunk in client.models.generate_content_stream(
model="gemini-2.5-pro",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
):
for part in chunk.candidates[0].content.parts:
if not part.text:
continue
elif part.thought:
if not thoughts:
print("Thoughts summary:")
print(part.text)
thoughts += part.text
else:
if not answer:
print("Thoughts summary:")
print(part.text)
answer += part.text
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. The person who lives in the red house owns a cat.
Bob does not live in the green house. Carol owns a dog. The green house is to
the left of the red house. Alice does not own a cat. Who lives in each house,
and what pet do they own?`;
let thoughts = "";
let answer = "";
async function main() {
const response = await ai.models.generateContentStream({
model: "gemini-2.5-pro",
contents: prompt,
config: {
thinkingConfig: {
includeThoughts: true,
},
},
});
for await (const chunk of response) {
for (const part of chunk.candidates[0].content.parts) {
if (!part.text) {
continue;
} else if (part.thought) {
if (!thoughts) {
console.log("Thoughts summary:");
}
console.log(part.text);
thoughts = thoughts + part.text;
} else {
if (!answer) {
console.log("Answer:");
}
console.log(part.text);
answer = answer + part.text;
}
}
}
}
await main();
Go
package main
import (
"context"
"fmt"
"log"
"os"
"google.golang.org/genai"
)
const prompt = `
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
`
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
contents := genai.Text(prompt)
model := "gemini-2.5-pro"
resp := client.Models.GenerateContentStream(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
},
})
for chunk := range resp {
for _, part := range chunk.Candidates[0].Content.Parts {
if len(part.Text) == 0 {
continue
}
if part.Thought {
fmt.Printf("Thought: %s\n", part.Text)
} else {
fmt.Printf("Answer: %s\n", part.Text)
}
}
}
}
Precios
Cuando se activa el pensamiento, el precio de la respuesta es la suma de los tokens de salida y los tokens de pensamiento. Puedes obtener la cantidad total de tokens de pensamiento generados desde el campo thoughtsTokenCount
.
Python
# ...
print("Thoughts tokens:",response.usage_metadata.thoughts_token_count)
print("Output tokens:",response.usage_metadata.candidates_token_count)
JavaScript
// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);
Go
// ...
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println("Thoughts tokens:", string(usageMetadata.thoughts_token_count))
fmt.Println("Output tokens:", string(usageMetadata.candidates_token_count))
Los modelos de pensamiento generan pensamientos completos para mejorar la calidad de la respuesta final y, luego, generar resúmenes que proporcionan estadísticas sobre el proceso de pensamiento. Por lo tanto, los precios se basan en los tokens de pensamiento completos que el modelo debe generar para crear un resumen, a pesar de que solo el resumen es el resultado de la API.
Puedes obtener más información sobre los tokens en la guía Cálculo de tokens.
Modelos compatibles
Las funciones de pensamiento son compatibles con todos los modelos de la serie 2.5. Puedes encontrar todas las funciones del modelo en la página de descripción general del modelo.
Prácticas recomendadas
En esta sección, se incluye orientación para usar los modelos de pensamiento de manera eficiente. Como siempre, si sigues nuestras prácticas recomendadas y la orientación sobre las instrucciones, obtendrás los mejores resultados.
Depuración y dirección
Revisa el razonamiento: Cuando no obtienes la respuesta esperada de los modelos de pensamiento, puede ser útil analizar cuidadosamente los resúmenes de pensamiento de Gemini. Puedes ver cómo desglosó la tarea y llegó a su conclusión, y usar esta información para corregir y obtener los resultados correctos.
Proporciona orientación en el razonamiento: Si esperas un resultado particularmente extenso, te recomendamos que proporciones orientación en la instrucción para limitar la cantidad de pensamiento que usa el modelo. Esto te permite reservar más del resultado del token para tu respuesta.
Complejidad de la tarea
- Tareas fáciles (el pensamiento puede estar desactivado): Para las solicitudes directas en las que no se requiere un razonamiento complejo, como la recuperación de hechos o la clasificación, no es necesario pensar. Estos son algunos ejemplos:
- "¿Dónde se fundó DeepMind?"
- "¿Este correo electrónico solicita una reunión o solo proporciona información?"
- Tareas intermedias (predeterminadas/con algo de pensamiento): Muchas solicitudes comunes se benefician de un grado de procesamiento paso a paso o de una comprensión más profunda. Gemini puede usar de forma flexible la capacidad de pensamiento para tareas como las siguientes:
- Haz una analogía entre la fotosíntesis y el crecimiento.
- Compara y contrasta los autos eléctricos y los híbridos.
- Tareas difíciles (máxima capacidad de pensamiento): Para desafíos realmente complejos, como resolver problemas matemáticos complejos o tareas de programación, te recomendamos que establezcas un presupuesto de pensamiento alto. Estos tipos de tareas requieren que el modelo active todas sus capacidades de razonamiento y planificación, lo que a menudo implica muchos pasos internos antes de proporcionar una respuesta. Estos son algunos ejemplos:
- Resuelve el problema 1 de AIME 2025: Encuentra la suma de todas las bases de números enteros b > 9 para las que 17b es un divisor de 97b.
- Escribir código de Python para una aplicación web que visualice datos del mercado de valores en tiempo real, incluida la autenticación de usuarios Haz que sea lo más eficiente posible.
Pensar con herramientas y capacidades
Los modelos de pensamiento funcionan con todas las herramientas y capacidades de Gemini. Esto permite que los modelos interactúen con sistemas externos, ejecuten código o accedan a información en tiempo real, y que incorporen los resultados en su razonamiento y respuesta final.
La herramienta de búsqueda permite que el modelo consulte la Búsqueda de Google para encontrar información actualizada o información más allá de sus datos de entrenamiento. Esto es útil para preguntas sobre eventos recientes o temas muy específicos.
La herramienta de ejecución de código permite que el modelo genere y ejecute código Python para realizar cálculos, manipular datos o resolver problemas que se manejan mejor de forma algorítmica. El modelo recibe el resultado del código y puede usarlo en su respuesta.
Con el resultado estructurado, puedes restringir Gemini para que responda con JSON. Esto es particularmente útil para integrar el resultado del modelo en las aplicaciones.
Las llamadas a función conectan el modelo de pensamiento a herramientas y APIs externas, de modo que pueda razonar sobre cuándo llamar a la función correcta y qué parámetros proporcionar.
El Contexto de URL le proporciona al modelo URLs como contexto adicional para tu instrucción. Luego, el modelo puede recuperar contenido de las URLs y usarlo para informar y dar forma a su respuesta.
Puedes probar ejemplos de uso de herramientas con modelos de pensamiento en el libro de recetas de pensamiento.
Próximos pasos
Para trabajar en ejemplos más detallados, como los siguientes:
- Cómo usar herramientas con el pensamiento
- Transmisión con pensamiento
- Cómo ajustar el presupuesto de pensamiento para obtener diferentes resultados
y mucho más, consulta nuestro libro de recetas de pensamiento.
La cobertura de pensamiento ahora está disponible en nuestra guía de Compatibilidad con OpenAI.
Para obtener más información sobre Gemini 2.5 Pro, Gemini Flash 2.5 y Gemini 2.5 Flash-Lite, visita la página del modelo.