Os modelos Gemini 2.5 podem usar um "processo de pensamento" interno que melhora significativamente as habilidades de raciocínio e planejamento de várias etapas, tornando-os altamente eficazes para tarefas complexas, como programação, matemática avançada e análise de dados.
É possível configurar o quanto um modelo pode pensar usando um orçamento de pensamento. Essa configuração é especialmente importante se a redução da latência ou do custo for uma prioridade. Além disso, confira a comparação de dificuldades das tarefas para decidir o quanto um modelo pode precisar da capacidade de raciocínio.
Usar um modelo de pensamento
Use um modelo de pensamento como qualquer outro modelo Gemini
(inicialize o provedor Gemini API escolhido, crie uma instância GenerativeModel
etc.).
Esses modelos podem ser usados para tarefas de geração de texto ou código, como
gerar saída estruturada
ou analisar entrada multimodal (como
imagens,
vídeo,
áudio,
ou
PDFs).
Você pode até usar modelos de pensamento ao transmitir a saída.
Modelos compatíveis
Apenas os modelos Gemini 2.5 são compatíveis com essa capacidade.
gemini-2.5-pro
gemini-2.5-flash
gemini-2.5-flash-lite-preview-06-17
Práticas recomendadas para usar modelos de pensamento
Recomendamos testar o comando no Google AI Studio ou no Vertex AI Studio para conferir todo o processo de pensamento. Você pode identificar áreas em que o modelo pode ter se desviado para refinar seus comandos e receber respostas mais consistentes e precisas.
Comece com um comando geral que descreva o resultado desejado e observe os pensamentos iniciais do modelo sobre como ele determina a resposta. Se a resposta não for a esperada, ajude o modelo a gerar uma resposta melhor usando uma das seguintes técnicas de comando:
- Fornecer instruções detalhadas
- Forneça vários exemplos de pares de entrada e saída
- Forneça orientações sobre como a saída e as respostas devem ser formuladas e formatadas.
- Fornecer etapas específicas de verificação
Além de comandos, considere usar estas recomendações:
Defina instruções do sistema, que são como um "preâmbulo" que você adiciona antes que o modelo seja exposto a outras instruções do comando ou do usuário final. Elas permitem orientar o comportamento do modelo com base nas suas necessidades e casos de uso específicos.
Defina um orçamento de pensamento para configurar o quanto o modelo pode pensar. Se você definir um orçamento baixo, o modelo não vai "pensar demais" na resposta. Se você definir um orçamento alto, o modelo poderá pensar mais, se necessário. Definir um orçamento de pensamento também reserva mais do limite total de saída de tokens para a resposta real.
(se estiver usando o Vertex AI Gemini API) Ative o monitoramento de IA no console Firebase para monitorar a latência das solicitações com o recurso de pensamento ativado. Os tokens de pensamento ainda não são mostrados nos painéis de monitoramento.
Controlar o orçamento de pensamento
Para controlar o quanto o modelo pode pensar para gerar uma resposta, especifique o número de tokens de orçamento de pensamento que ele pode usar.
Você pode definir manualmente o orçamento de pensamento em situações em que talvez precise de mais ou menos tokens do que o padrão. Confira orientações mais detalhadas sobre complexidade da tarefa e orçamentos sugeridos mais adiante nesta seção. Confira algumas orientações gerais:
- Defina um orçamento de pensamento baixo se a latência for importante ou para tarefas menos complexas
- Definir um orçamento de pensamento alto para tarefas mais complexas
Definir o orçamento de pensamento
Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página. |
Defina o orçamento de pensamento em um GenerationConfig
como parte da criação da instância GenerativeModel
. A configuração é mantida durante todo o ciclo de vida da instância. Se você quiser usar orçamentos de pensamento diferentes para solicitações diferentes, crie instâncias GenerativeModel
configuradas com cada orçamento.
Saiba mais sobre os valores de orçamento de pensamento compatíveis nesta seção.
Swift
Defina o orçamento de pensamento em um
GenerationConfig
como parte da criação de uma instância 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
Defina os valores dos parâmetros em um
GenerationConfig
como parte da criação de uma instância 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
Defina os valores dos parâmetros em um
GenerationConfig
como parte da criação de uma instância 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
Defina os valores dos parâmetros em um
GenerationConfig
como parte da criação de uma instância 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
O suporte para definir um orçamento de pensamento para o Flutter será lançado na próxima versão.
Unity
O suporte para definir um orçamento de pensamento para o Unity será lançado na próxima versão.
Valores de limite de orçamento de pensamento aceitos
A tabela a seguir lista os valores de cota de pensamento que podem ser definidos para cada modelo ao configurar o thinkingBudget
do modelo.
Modelo | Valor padrão | Intervalo disponível para o orçamento de pensamento |
Valor para desativar o pensamento |
Valor para ativar o pensamento dinâmico |
|
---|---|---|---|---|---|
Valor mínimo | Valor máximo | ||||
Gemini 2.5 Pro | 8,192 |
128 |
32,768 |
não pode ser desativado | -1 |
Gemini 2.5 Flash | 8,192 |
1 |
24,576 |
0 |
-1 |
Gemini 2.5 Flash‑Lite | 0 (o pensamento está desativado por padrão) |
512 |
24,576 |
0 (ou não configure o orçamento de pensamento) |
-1 |
Desativar raciocínio
Para algumas tarefas mais fáceis, a capacidade de raciocínio não é necessária, e a inferência tradicional é suficiente. Ou, se reduzir a latência for uma prioridade, talvez você não queira que o modelo leve mais tempo do que o necessário para gerar uma resposta.
Nessas situações, você pode desativar (ou desligar) o pensamento:
- Gemini 2.5 Pro: o pensamento não pode ser desativado
- Gemini 2.5 Flash: defina
thinkingBudget
como0
tokens - Gemini 2.5 Flash-Lite: o recurso de pensamento está desativado por padrão
Incentivar o pensamento dinâmico
Você pode deixar o modelo decidir quando e quanto ele pensa (chamado de
pensamento dinâmico) definindo thinkingBudget
como -1
. O modelo pode usar quantos tokens achar adequado, até o valor máximo listado acima.
Complexidade da tarefa
Tarefas fáceis: o pensamento pode ser desligado
Solicitações simples em que não é necessário um raciocínio complexo, como recuperação ou classificação de fatos. Exemplos:- "Onde a DeepMind foi fundada?"
- "Este e-mail está pedindo uma reunião ou apenas fornecendo informações?"
Tarefas médias: orçamento padrão ou algum orçamento adicional de reflexão necessário
Solicitações comuns que se beneficiam de um grau de processamento gradual ou compreensão mais profunda. Exemplos:- "Crie uma analogia entre a fotossíntese e o crescimento."
- "Compare e contraste carros elétricos e híbridos."
Tarefas difíceis: pode ser necessário um orçamento máximo de pensamento
Desafios realmente complexos, como resolver problemas de matemática complexos ou tarefas de programação. Esses tipos de tarefas exigem que o modelo use todas as suas capacidades de raciocínio e planejamento, muitas vezes envolvendo várias etapas internas antes de fornecer uma resposta. Exemplos:- "Resolva o problema 1 da AIME 2025: encontre a soma de todas as bases inteiras b > 9 para as quais 17b é um divisor de 97b."
- "Escreva um código Python para um aplicativo da Web que visualize dados do mercado de ações em tempo real, incluindo autenticação de usuários. Faça com que seja o mais eficiente possível."
Preços e contagem de tokens de pensamento
Os tokens de pensamento usam a mesma tabela de preços dos tokens de saída de texto.
Você pode receber o número total de tokens de pensamento do campo thoughtsTokenCount
no atributo usageMetadata
da resposta:
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
O suporte para contagem de tokens de pensamento para Flutter será lançado na próxima versão.
Unity
O suporte para contagem de tokens de pensamento no Unity será lançado na próxima versão.
Saiba mais sobre tokens no guia de contagem de tokens.