Myślenie

Gemini 2.5 mogą korzystać z wewnętrznego „procesu myślowego”, który znacznie poprawia ich zdolności 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.

Możesz skonfigurować, ile czasu model może poświęcić na myślenie, za pomocą budżetu na myślenie. Ta konfiguracja jest szczególnie ważna, jeśli priorytetem jest zmniejszenie opóźnienia lub kosztów. Zapoznaj się też z porównaniem trudności zadań, aby określić, w jakim stopniu model może potrzebować swoich możliwości myślenia.

Używanie modelu myślowego

Użyj modelu myślowego tak samo jak każdego innego Gemini modelu (zainicjuj wybranego Gemini API dostawcę, utwórz GenerativeModel instancję itp.). Modele te mogą być używane do generowania tekstu lub kodu, np. generowania danych strukturalnych, lub do analizowania danych multimodalnych (takich jak obrazy, filmy, dźwięk czy pliki PDF). Podczas przesyłania strumieniowego danych wyjściowych możesz nawet używać modeli myślowych.

Obsługiwane modele

Ta funkcja jest obsługiwana tylko przez modele Gemini 2.5.

  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite-preview-06-17

Sprawdzone metody korzystania z modeli myślowych

Zalecamy przetestowanie promptu w Google AI Studio lub Vertex AI Studio, gdzie możesz zobaczyć cały proces myślowy. Możesz zidentyfikować obszary, w których model mógł się pomylić, aby dopracować prompty i uzyskiwać bardziej spójne i dokładne odpowiedzi.

Zacznij od ogólnego prompta opisującego oczekiwany wynik i obserwuj wstępne przemyślenia modelu na temat tego, jak określa on swoją odpowiedź. Jeśli odpowiedź nie jest zgodna z oczekiwaniami, pomóż modelowi wygenerować lepszą odpowiedź, korzystając z jednej z tych technik promptowania:

  • podamy szczegółowe instrukcje;
  • Podaj kilka przykładów par danych wejściowych i wyjściowych.
  • Podaj wskazówki dotyczące sposobu formułowania i formatowania wyników oraz odpowiedzi.
  • Podaj konkretne kroki weryfikacji

Oprócz promptów możesz też skorzystać z tych rekomendacji:

  • Ustaw instrukcje systemowe, które są jak „wstęp” dodawany przed tym, jak model zostanie poddany dalszym instrukcjom z promptu lub użytkownika końcowego. Pozwalają one sterować działaniem modelu w zależności od konkretnych potrzeb i przypadków użycia.

  • Ustaw budżet na myślenie, aby skonfigurować, ile czasu model może poświęcić na myślenie. Jeśli ustawisz niski budżet, model nie będzie „zbyt długo” myśleć nad odpowiedzią. Jeśli ustawisz wysoki budżet, model będzie mógł w razie potrzeby dłużej się zastanawiać. Ustawienie budżetu na myślenie powoduje też zarezerwowanie większej części całkowitego limitu tokenów wyjściowych na rzeczywistą odpowiedź.

  • (jeśli używasz Vertex AI Gemini API) Włącz monitorowanie AI w konsoli Firebase, aby móc monitorować opóźnienie żądań, w których włączono funkcję myślenia. Pamiętaj, że tokeny myślenia nie są jeszcze wyświetlane w panelach monitorowania.

Kontrolowanie budżetu na myślenie

Aby kontrolować, ile czasu model może poświęcić na myślenie w celu wygenerowania odpowiedzi, możesz określić liczbę tokenów budżetu na myślenie, których może użyć.

Możesz ręcznie ustawić budżet na myślenie w sytuacjach, w których możesz potrzebować więcej lub mniej tokenów niż domyślny budżet na myślenie. Szczegółowe wskazówki dotyczące złożoności zadań i sugerowanych budżetów znajdziesz w dalszej części tej sekcji. Oto kilka ogólnych wskazówek:

  • Ustaw niski budżet na myślenie, jeśli czas oczekiwania jest ważny lub w przypadku mniej złożonych zadań.
  • Ustaw wysoki budżet na myślenie w przypadku bardziej złożonych zadań

Ustawianie budżetu na myślenie

Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod dostawcy.

Ustaw budżet na myślenie w GenerationConfig podczas tworzenia instancji GenerativeModel. Konfiguracja jest utrzymywana przez cały okres istnienia instancji. Jeśli chcesz używać różnych budżetów na potrzeby różnych żądań, utwórz instancje GenerativeModel skonfigurowane z poszczególnymi budżetami.

Więcej informacji o obsługiwanych wartościach budżetu na myślenie znajdziesz w dalszej części tej sekcji.

Swift

Ustaw budżet na myślenie w GenerationConfig podczas tworzenia instancji GenerativeModel.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingBudget: 1024)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

Ustaw wartości parametrów w sekcji GenerationConfig podczas tworzenia instancji GenerativeModel.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingBudget = 1024
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  generationConfig,
)

// ...

Java

Ustaw wartości parametrów w sekcji GenerationConfig podczas tworzenia instancji GenerativeModel.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingBudget(1024)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "<var>GEMINI_MODEL_NAME</var>",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

Ustaw wartości parametrów w sekcji GenerationConfig podczas tworzenia instancji GenerativeModel.


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
const generationConfig = {
  thinkingConfig: {
    thinkingBudget: 1024
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });

// ...

Dart

W następnej wersji Fluttera udostępnimy funkcję ustawiania budżetu na myślenie.

Unity

Obsługa ustawiania budżetu na myślenie w przypadku Unity pojawi się w następnej wersji.

Obsługiwane wartości budżetu na myślenie

W tabeli poniżej znajdziesz wartości budżetu na myślenie, które możesz ustawić dla każdego modelu, konfigurując thinkingBudget modelu.

Model Wartość domyślna Dostępny zakres budżetu na myślenie Wartość, która
wyłącza myślenie
Wartość
umożliwiająca dynamiczne myślenie
Wartość minimalna Wartość maksymalna
Gemini 2.5 Pro 8,192 128 32,768 Nie można wyłączyć -1
Gemini 2.5 Flash 8,192 1 24,576 0 -1
Gemini 2.5 Flash‑Lite 0
(myślenie jest domyślnie wyłączone)
512 24,576 0
(lub w ogóle nie konfiguruj budżetu na myślenie)
-1

Wyłącz przebieg rozumowania

W przypadku niektórych łatwiejszych zadań zdolność myślenia nie jest konieczna i wystarczy tradycyjne wnioskowanie. Jeśli priorytetem jest zmniejszenie opóźnienia, możesz nie chcieć, aby model poświęcał więcej czasu niż to konieczne na wygenerowanie odpowiedzi.

W takich sytuacjach możesz wyłączyć (lub zatrzymać) myślenie:

  • Gemini 2.5 Pro: myślenie nie może zostać wyłączone.
  • Gemini 2.5 Flash: ustaw thinkingBudget na 0 tokenów.
  • Gemini 2.5 Flash-Lite: myślenie jest domyślnie wyłączone.

Włączanie dynamicznego myślenia

Możesz pozwolić modelowi decydować, kiedy i ile czasu poświęca na myślenie (tzw. dynamiczne myślenie), ustawiając thinkingBudget na -1. Model może używać dowolnej liczby tokenów, jaką uzna za odpowiednią, aż do maksymalnej wartości tokena wymienionej powyżej.

Złożoność zadania

  • Łatwe zadania – myślenie można wyłączyć
    Proste żądania, które nie wymagają złożonego rozumowania, np. wyszukiwanie faktów lub klasyfikacja. Przykłady:

    • „Gdzie powstała firma DeepMind?”
    • „Czy ten e-mail zawiera prośbę o spotkanie, czy tylko informacje?”
  • Średnie zadania – wymagany budżet domyślny lub dodatkowy budżet na przemyślenia
    Typowe prośby, które wymagają pewnego stopnia przetwarzania krok po kroku lub głębszego zrozumienia. Przykłady:

    • „Utwórz analogię między fotosyntezą a dorastaniem”.
    • „Porównaj samochody elektryczne i hybrydowe”.
  • Trudne zadania – może być potrzebny maksymalny budżet na myślenie
    Naprawdę złożone wyzwania, takie jak rozwiązywanie skomplikowanych zadań matematycznych lub kodowanie. Tego typu zadania wymagają od modelu pełnego wykorzystania możliwości rozumowania i planowania, często obejmują wiele wewnętrznych kroków, zanim zostanie udzielona odpowiedź. Przykłady:

    • „Rozwiąż zadanie 1 z AIME 2025: znajdź sumę wszystkich podstaw całkowitych b > 9, dla których 17b jest dzielnikiem 97b”.
    • „Napisz kod w Pythonie dla aplikacji internetowej, która wizualizuje dane z rynku akcji w czasie rzeczywistym, w tym uwierzytelnianie użytkowników. Zadbaj o jak największą wydajność”.

Ceny i zliczanie tokenów myślowych

Tokeny myślowe mają takie same ceny jak tokeny wyjściowe tekstu.

Łączną liczbę tokenów myślenia możesz uzyskać z pola thoughtsTokenCount w atrybucie usageMetadata odpowiedzi:

Swift

// ...

let response = try await model.generateContent("Why is the sky blue?")

if let usageMetadata = response.usageMetadata {
  print("Thoughts Token Count: \(usageMetadata.thoughtsTokenCount)")
}

Kotlin

// ...

val response = model.generateContent("Why is the sky blue?")

response.usageMetadata?.let { usageMetadata ->
    println("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}")
}

Java

// ...

ListenableFuture<GenerateContentResponse> response =
    model.generateContent("Why is the sky blue?");

Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String usageMetadata = result.getUsageMetadata();
        if (usageMetadata != null) {
            System.out.println("Thoughts Token Count: " +
                usageMetadata.getThoughtsTokenCount());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web

// ...

const response = await model.generateContent("Why is the sky blue?");

if (response?.usageMetadata?.thoughtsTokenCount != null) {
    console.log(`Thoughts Token Count: ${response.usageMetadata.thoughtsTokenCount}`);
}

Dart

Obsługa zliczania tokenów myślenia w przypadku Flattera zostanie wprowadzona w następnej wersji.

Unity

Obsługa zliczania tokenów myślenia w przypadku Unity pojawi się w następnej wersji.

Więcej informacji o tokenach znajdziesz w przewodniku po tokenach.