Модели серии Gemini 2.5 используют внутренний «мыслительный процесс», который значительно улучшает их способность к рассуждению и многошаговому планированию, что делает их высокоэффективными для решения сложных задач, таких как кодирование, высшая математика и анализ данных.
В этом руководстве показано, как работать с мыслительными возможностями Gemini с помощью API Gemini.
Прежде чем начать
Убедитесь, что вы используете поддерживаемую модель серии 2.5 для размышлений. Возможно, вам будет полезно изучить эти модели в AI Studio, прежде чем погружаться в API:
Генерация контента с помощью мышления
Инициирование запроса с помощью модели мышления похоже на любой другой запрос на генерацию контента. Ключевое отличие заключается в указании одной из моделей с поддержкой мышления в поле model
, как показано в следующем примере генерации текста :
from google import genai
client = genai.Client(api_key="GOOGLE_API_KEY")
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
model="gemini-2.5-flash-preview-05-20",
contents=prompt
)
print(response.text)
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
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-flash-preview-05-20",
contents: prompt,
});
console.log(response.text);
}
main();
// import packages here
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GOOGLE_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-2.5-flash-preview-05-20")
resp, err := model.GenerateContent(ctx, genai.Text("Explain the concept of Occam's Razor and provide a simple, everyday example."))
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Text())
}
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key=$GOOGLE_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."
}
]
}
]
}'
```
Краткое изложение мыслей (экспериментальное)
Резюме мыслей дает представление о внутреннем процессе рассуждений модели. Эта функция может быть ценной для проверки подхода модели и информирования пользователей во время выполнения более длительных задач, особенно в сочетании с потоковой передачей .
Вы можете включить краткие мысли, установив includeThoughts
в true
в конфигурации запроса. Затем вы можете получить доступ к краткому содержанию, перебирая parts
параметра response
и проверяя логическое значение thought
.
Вот пример, демонстрирующий, как включить и извлечь резюме мыслей без потоковой передачи, который возвращает единое окончательное резюме мыслей с ответом:
from google import genai
from google.genai import types
client = genai.Client(api_key="GOOGLE_API_KEY")
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
model="gemini-2.5-flash-preview-05-20",
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()
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-05-20",
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();
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
contents := genai.Text("What is the sum of the first 50 prime numbers?")
model := "gemini-2.5-flash-preview-05-20"
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)
}
}
}
}
А вот пример использования потокового мышления, которое возвращает скользящие, инкрементные сводки в процессе генерации:
from google import genai
from google.genai import types
client = genai.Client(api_key="GOOGLE_API_KEY")
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-flash-preview-05-20",
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
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
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-flash-preview-05-20",
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();
Продумывание бюджетов
Параметр thinkingBudget
позволяет вам направлять модель по количеству токенов мышления, которые она может использовать при генерации ответа. Большее количество токенов обычно позволяет проводить более детальные рассуждения, что может быть полезно для решения более сложных задач . Если вы не установите thinkingBudget
, модель будет динамически корректировать бюджет в зависимости от сложности запроса.
-
thinkingBudget
должен быть целым числом в диапазоне0
до24576
. - Установка бюджета мышления на
0
отключает мышление. - В зависимости от подсказки модель может переполнить или недополнить бюджет токенов.
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash-preview-05-20",
contents="Provide a list of 3 famous physicists and their key contributions",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=1024)
),
)
print(response.text)
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-05-20",
contents: "Provide a list of 3 famous physicists and their key contributions",
config: {
thinkingConfig: {
thinkingBudget: 1024,
},
},
});
console.log(response.text);
}
main();
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
thinkingBudgetVal := int32(1024)
contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
model := "gemini-2.5-flash-preview-05-20"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
ThinkingBudget: &thinkingBudgetVal,
},
})
fmt.Println(resp.Text())
}
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key=$GOOGLE_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
}
}
}'
Ценообразование
Когда мышление включено, ответное ценообразование представляет собой сумму выходных токенов и токенов мышления. Вы можете получить общее количество сгенерированных токенов мышления из поля thoughtsTokenCount
.
# ...
print("Thoughts tokens:",response.usage_metadata.thoughts_token_count)
print("Output tokens:",response.usage_metadata.candidates_token_count)
// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);
// ...
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))
Модели мышления генерируют полные мысли для улучшения качества окончательного ответа, а затем выводят резюме для обеспечения понимания мыслительного процесса. Таким образом, ценообразование основано на полных маркерах мыслей, которые модель должна сгенерировать для создания резюме, несмотря на то, что из API выводится только резюме.
Дополнительную информацию о токенах можно найти в руководстве по подсчету токенов .
Поддерживаемые модели
Все возможности модели вы можете найти на странице обзора моделей .
Модель | Резюме размышлений | Продуманный бюджет |
---|---|---|
Близнецы 2.5 Флэш | ✔️ | ✔️ |
Близнецы 2.5 Про | ✔️ | Х |
Лучшие практики
В этом разделе приведены некоторые рекомендации по эффективному использованию моделей мышления. Как всегда, следуя нашим подсказкам и рекомендациям, вы получите наилучшие результаты.
Отладка и управление
Обзор рассуждений : Когда вы не получаете ожидаемого ответа от моделей мышления, может помочь тщательный анализ процесса рассуждений Gemini. Вы можете увидеть, как он разбил задачу и пришел к ее заключению, и использовать эту информацию для исправления в сторону правильных результатов.
Предоставьте руководство по рассуждению : если вы надеетесь на особенно длинный вывод, вы можете предоставить руководство в своей подсказке, чтобы ограничить объем мышления, используемого моделью. Это позволяет вам зарезервировать больше вывода токенов для вашего ответа.
Сложность задачи
- Простые задачи (мышление может быть ОТКЛЮЧЕНО): для простых запросов, где не требуется сложное рассуждение, например, поиск фактов или классификация, мышление не требуется. Вот некоторые примеры:
- «Где была основана компания DeepMind?»
- «В этом письме содержится просьба о встрече или просто информация?»
- Средние задачи (по умолчанию/некоторое размышление): Многие общие запросы выигрывают от степени пошаговой обработки или более глубокого понимания. Близнецы могут гибко использовать способность к мышлению для таких задач, как:
- Проведите аналогию между фотосинтезом и взрослением.
- Сравните и сопоставьте электромобили и гибридные автомобили.
- Сложные задачи (максимальная способность к мышлению): для действительно сложных задач модель должна задействовать все свои возможности рассуждения и планирования, часто включая множество внутренних шагов, прежде чем предоставить ответ. Вот некоторые примеры:
- Решите задачу 1 в AIME 2025: Найдите сумму всех целых оснований b > 9, для которых 17 b является делителем 97 b .
- Напишите код Python для веб-приложения, которое визуализирует данные фондового рынка в реальном времени, включая аутентификацию пользователей. Сделайте его максимально эффективным.
Мышление с помощью инструментов и возможностей
Модели мышления работают со всеми инструментами и возможностями Gemini. Это позволяет моделям взаимодействовать с внешними системами, выполнять код или получать доступ к информации в реальном времени, включая результаты в свои рассуждения и окончательный ответ.
Инструмент поиска позволяет модели запрашивать Google Search для поиска актуальной информации или информации, выходящей за рамки ее обучающих данных. Это полезно для вопросов о недавних событиях или очень специфических темах.
Инструмент выполнения кода позволяет модели генерировать и запускать код Python для выполнения вычислений, манипулирования данными или решения проблем, которые лучше всего обрабатываются алгоритмически. Модель получает вывод кода и может использовать его в своем ответе.
С помощью структурированного вывода вы можете ограничить Gemini для ответа с помощью JSON. Это особенно полезно для интеграции вывода модели в приложения.
Вызов функций подключает модель мышления к внешним инструментам и API, что позволяет ей рассуждать о том, когда вызывать нужную функцию и какие параметры предоставлять.
Вы можете попробовать примеры использования инструментов с моделями мышления в «Кулинарной книге мышления» .
Что дальше?
Для более глубокой проработки примеров, таких как:
- Использование инструментов с мышлением
- Потоковая передача с мышлением
- Корректировка бюджета мышления для различных результатов
и многое другое, попробуйте нашу кулинарную книгу «Мышление» .
Охват Thinking теперь доступен в нашем руководстве по совместимости OpenAI .
Более подробную информацию о Gemini 2.5 Pro Preview и Gemini Flash 2.5 Thinking можно найти на странице модели .