Gemini się zastanawia

Modele z serii Gemini 3 i 2.5 wykorzystują wewnętrzny „proces myślowy”, który znacznie poprawia ich zdolność do rozumowania i planowania wieloetapowego, dzięki czemu są bardzo skuteczne w przypadku złożonych zadań, takich jak kodowanie, zaawansowana matematyka i analiza danych.

Z tego przewodnika dowiesz się, jak korzystać z możliwości myślenia Gemini za pomocą interfejsu Gemini API.

Generowanie treści z myśleniem

Inicjowanie prośby za pomocą modelu myślowego jest podobne do każdej innej prośby o wygenerowanie treści. Główna różnica polega na określeniu w polu model jednego z modeli z obsługą myślenia:

Python

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

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

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": "Explain the concept of Occam'\''s Razor and provide a simple example."
  }'

Podsumowania myśli

Podsumowania myśli zawierają informacje o wewnętrznym procesie rozumowania modelu. Domyślnie zwracany jest tylko wynik końcowy. Podsumowania myśli możesz włączyć, klikając thinking_summaries:

Python

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:")
        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

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?",
    generationConfig: {
        thinkingSummaries: "auto"
    }
});

for (const step of interaction.steps) {
    if (step.type === "thought") {
        console.log("Thought 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

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": "What is the sum of the first 50 prime numbers?",
    "generationConfig": {
      "thinkingSummaries": "auto"
    }
  }'

Odtwarzanie z myśleniem

Użyj przesyłania strumieniowego, aby otrzymywać przyrostowe podsumowania myśli podczas generowania. W ten sposób uzyskasz podsumowania przyrostowe w miarę ich generowania:

Python

from google import genai

client = genai.Client()

prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
Alice does not live in the red house.
Bob does not live in the green house.
Carol does not live in the red or green house.
Which house does each person live in?
"""

thoughts = ""
answer = ""

stream = client.interactions.create(
    model="gemini-3-flash-preview",
    input=prompt,
    generation_config={
        "thinking_summaries": "auto"
    },
    stream=True
)

thoughts = ""
answer = ""

for event in stream:
    if event.event_type == "step.delta":
        if event.delta.type == "thought":
            if not thoughts:
                print("Thinking...")
            summary_text = getattr(event.delta, 'text', '')
            print(f"[Thought] {summary_text}", end="")
            thoughts += summary_text
        elif event.delta.type == "text" and event.delta.text:
            if not answer:
                print("\nAnswer:")
            print(event.delta.text, end="")
            answer += event.delta.text

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. Alice does not live in the red house.
Bob does not live in the green house.
Carol does not live in the red or green house.
Which house does each person live in?`;

let thoughts = "";
let answer = "";

const stream = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: prompt,
    generationConfig: {
        thinkingSummaries: "auto"
    },
    stream: true
});

for await (const event of stream) {
    if (event.type === "step.delta") {
        if (event.delta.type === "thought") {
            if (!thoughts) console.log("Thinking...");
            process.stdout.write(`[Thought] ${event.delta.text || ""}`);
            thoughts += event.delta.text || "";
        } else if (event.delta.type === "text" && event.delta.text) {
            if (!answer) console.log("\nAnswer:");
            process.stdout.write(event.delta.text);
            answer += event.delta.text;
        }
    }
}

Myślenie kontrolne

Modele Gemini domyślnie stosują dynamiczne myślenie, automatycznie dostosowując poziom rozumowania do złożoności żądania. Możesz jednak kontrolować to zachowanie za pomocą parametrów konfiguracji.

Poziomy myślenia (Gemini 3)

Parametr thinking_level, zalecany w przypadku modeli Gemini 3 i nowszych, pozwala kontrolować zachowanie związane z rozumowaniem.

Poziom myślenia Gemini 3.1 Pro Gemini 3 Pro (wycofany) Gemini 3 Flash Opis
minimal Nieobsługiwane Nieobsługiwane Obsługiwane W przypadku większości zapytań odpowiada ustawieniu „bez myślenia”. W przypadku złożonych zadań związanych z kodowaniem model może myśleć w bardzo ograniczonym zakresie. Minimalizuje opóźnienia w przypadku aplikacji do czatu lub aplikacji o wysokiej przepustowości. Pamiętaj, że minimal nie gwarantuje, że myślenie jest wyłączone.
low Obsługiwane Obsługiwane Obsługiwane Minimalizuje opóźnienia i koszty. Najlepszy do wykonywania instrukcji, czatów i aplikacji o wysokiej przepustowości.
medium Obsługiwane Nieobsługiwane Obsługiwane Zrównoważone myślenie w przypadku większości zadań.
high Obsługiwane (domyślne, dynamiczne) Obsługiwane (domyślne, dynamiczne) Obsługiwane (domyślne, dynamiczne) Zwiększa głębokość rozumowania. Model może potrzebować znacznie więcej czasu na wygenerowanie pierwszego tokena wyjściowego (niebędącego tokenem myślenia), ale wynik będzie bardziej przemyślany.

Python

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

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",
    generationConfig: {
        thinkingLevel: "low"
    }
});
console.log(interaction.steps.at(-1).content[0].text);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -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"
    }
  }'

Nie możesz wyłączyć myślenia w przypadku Gemini 3 Pro. Gemini 3 Flash też nie obsługuje pełnego wyłączenia myślenia, ale ustawienie minimal oznacza, że model prawdopodobnie nie będzie myśleć (chociaż nadal może).

Podpisy myśli

Gemini API jest bezstanowy, więc model traktuje każde żądanie do interfejsu API niezależnie i nie ma dostępu do kontekstu myślowego z poprzednich tur interakcji wieloturkowych.

Aby umożliwić zachowanie kontekstu myślowego w interakcjach wieloetapowych, Gemini zwraca sygnatury myśli, które są zaszyfrowanymi reprezentacjami wewnętrznego procesu myślowego modelu.

  • Modele Gemini 2.5 zwracają sygnatury myśli, gdy myślenie jest włączone, a żądanie obejmuje wywoływanie funkcji, a w szczególności deklaracje funkcji.
  • Modele Gemini 3 mogą zwracać sygnatury myśli dla wszystkich typów części. Zalecamy zawsze przekazywać wszystkie podpisy w takiej postaci, w jakiej zostały otrzymane, ale w przypadku podpisów wywoływania funkcji jest to wymagane. Więcej informacji znajdziesz na stronie Podpisy myśli.
  • Sygnatury są zwracane z modelu w innych częściach odpowiedzi, np. w wywołaniach funkcji lub częściach tekstowych. Zwróć całą odpowiedź ze wszystkimi częściami do modelu w kolejnych turach.
  • Nie łącz części z sygnaturami.
  • Nie łącz części z podpisem z częścią bez podpisu.

Ceny

Gdy myślenie jest włączone, cena odpowiedzi jest sumą tokenów wyjściowych i tokenów myślenia. Łączną liczbę wygenerowanych tokenów myślenia możesz uzyskać z pola total_thought_tokens.

Python

# ...
print("Thoughts tokens:", interaction.usage.total_thought_tokens)
print("Output tokens:", interaction.usage.total_output_tokens)

JavaScript

// ...
console.log(`Thoughts tokens: ${interaction.usage.totalThoughtTokens}`);
console.log(`Output tokens: ${interaction.usage.totalOutputTokens}`);

Modele myślowe generują pełne myśli, aby poprawić jakość ostatecznej odpowiedzi, a następnie wyświetlają podsumowania, które pozwalają zrozumieć proces myślowy. Ceny są oparte na pełnych tokenach myśli, które model musi wygenerować, mimo że interfejs API zwraca tylko podsumowanie.

Więcej informacji o tokenach znajdziesz w przewodniku Liczba tokenów.

Sprawdzone metody

Ta sekcja zawiera wskazówki dotyczące efektywnego korzystania z modeli myślowych.

Debugowanie i sterowanie

  • Sprawdzanie uzasadnienia: jeśli modele myślowe nie udzielają oczekiwanych odpowiedzi, warto dokładnie przeanalizować podsumowania myśli Gemini. Możesz zobaczyć, jak podzielił zadanie i doszedł do wniosku, a także wykorzystać te informacje, aby poprawić wyniki.

  • Podaj wskazówki dotyczące rozumowania: jeśli oczekujesz szczególnie długiego wyniku, możesz podać w prompcie wskazówki, aby ograniczyć ilość myślenia, jakiej używa model. Dzięki temu możesz zarezerwować więcej tokenów na swoją odpowiedź.

Złożoność zadania

  • Proste zadania (myślenie może być wyłączone): w przypadku prostych próśb, które nie wymagają złożonego rozumowania, myślenie nie jest potrzebne. Przykłady:
    • „Gdzie powstała firma DeepMind?”
    • „Czy ten e-mail zawiera prośbę o spotkanie, czy tylko informacje?”
  • Średnie zadania (domyślne/wymagające pewnego zastanowienia): wiele typowych żądań wymaga przetwarzania krok po kroku lub głębszego zrozumienia. Przykłady:
    • Porównaj fotosyntezę i dorastanie.
    • Porównaj samochody elektryczne i hybrydowe.
  • Trudne zadania (maksymalne możliwości myślenia): w przypadku bardzo złożonych zadań zalecamy ustawienie wysokiego budżetu na myślenie. Tego typu zadania wymagają od modelu pełnego wykorzystania możliwości rozumowania i planowania. Przykłady:
    • Rozwiąż zadanie 1 z AIME 2025: znajdź sumę wszystkich podstaw całkowitych b > 9...
    • Napisz kod w Pythonie dla aplikacji internetowej, która wizualizuje dane giełdowe w czasie rzeczywistym, w tym uwierzytelnianie użytkowników. Zadbaj o jak największą wydajność.

Obsługiwane modele

Model Domyślne myślenie Obsługiwane poziomy
gemini-3.1-pro-preview Włączone (wysokie) niski, średni, wysoki
gemini-3-flash-preview Włączone (wysokie) minimalny, niski, średni, wysoki
gemini-3-pro-preview Włączone (wysokie) niski, wysoki
gemini-2.5-pro Wł. Budżet: 128–32768
gemini-2.5-flash Wł. Budżet: 0–24576
gemini-2.5-flash-lite Wył. Budżet: 0–24576

Modele myślące działają ze wszystkimi narzędziami i funkcjami Gemini. Dzięki temu modele mogą wchodzić w interakcje z systemami zewnętrznymi, wykonywać kod lub uzyskiwać dostęp do informacji w czasie rzeczywistym i uwzględniać wyniki w swoim rozumowaniu.

Co dalej?