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
na0
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.