O modo de pensamento faz com que o modelo mostre o processo de raciocínio antes de gerar uma resposta final. O modo de raciocínio melhora a precisão da chamada de função do modelo e funciona bem para matemática, resolução de problemas e outras tarefas de raciocínio complexas.
Quando o modo de pensamento está ativado, a saída do modelo é dividida em duas partes:
- Processo de pensamento: as etapas internas de raciocínio ou planejamento que o modelo segue.
- Resposta: a resposta final gerada para o usuário.
Pré-requisitos
O Modo de Raciocínio funciona em dispositivos com o Gemini Nano V4 e versões mais recentes. Você pode testar o modo de pensamento pelo Programa de prévia para desenvolvedores em qualquer dispositivo com AICore.
Ativar o modo de raciocínio
Para usar o modo de pensamento, ative-o definindo a flag enableThinking
como true na função de builder generateContentRequest:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Acessar pensamentos
O SDK do Kit de ML oferece diferentes maneiras de acessar os pensamentos que precedem a resposta de um modelo, dependendo se você está usando uma implementação com ou sem streaming.
Modo sem streaming
Em chamadas padrão sem streaming, o processo de raciocínio é retornado como parte
da resposta completa. É possível acessar esse processo usando a propriedade thoughtProcess (que contém uma lista de objetos Candidate) no objeto GenerateContentResponse.
try {
val response = generativeModel.generateContent(request)
// 1. Access the main response
val answer = response.candidates.firstOrNull()?.text
println("Final Answer: $answer")
// 2. Access the separated thought process
println("Thought Process:")
response.thoughtProcess.forEach { thoughtCandidate ->
print(thoughtCandidate.text)
}
} catch (e: GenAiException) {
// Handle SDK-specific exceptions
}
Modo de streaming
Para oferecer suporte ao feedback em tempo real, a interface StreamingCallback foi
atualizada para incluir o método onNewThought. Isso permite que o app processe
blocos de pensamento de streaming conforme são gerados pelo modelo.
val callback = object : StreamingCallback {
override fun onNewText(additionalText: String) {
// Called for regular response chunks
print(additionalText)
}
override fun onNewThought(additionalThought: String) {
// Called for thought chunks before final text arrives
// Update a separate reasoning UI or status indicator
print("[Thinking: $additionalThought]")
}
}
try {
generativeModel.generateContent(request, callback)
} catch (e: GenAiException) {
// Handle exception
}
Práticas recomendadas
Confira algumas práticas recomendadas para usar o modo de raciocínio:
- Indicadores de interface: como as etapas de raciocínio podem levar tempo para serem geradas, mostrar os pensamentos ou um indicador de "pensamento" no modo de streaming pode melhorar significativamente a percepção de desempenho, mostrando ao usuário que o modelo está ativo.
- Implementação seletiva: se você não quiser expor o raciocínio bruto aos
usuários finais, ignore o campo
thoughtProcessou omita a implementação deonNewThought. O métodoonNewThoughttem uma implementação vazia padrão para ajudar a garantir a compatibilidade com versões anteriores.
Para mais dicas, consulte Modo de raciocínio no Gemma. No momento, as conversas em vários turnos não são compatíveis com o AICore.