В режиме «Размышление» модель должна вывести ход своих рассуждений, прежде чем сгенерировать окончательный ответ. Режим «Размышление» повышает точность вызова функций моделью и хорошо подходит для математических задач, решения проблем и других сложных задач, требующих логического мышления.
При включении режима обдумывания выходные данные модели делятся на две части:
- Процесс мышления: внутренние этапы рассуждения или планирования, которые предпринимает модель.
- Ответ: Окончательный ответ, сгенерированный для пользователя.
Предварительные требования
Режим «Размышление» работает на устройствах под управлением Gemini Nano V4 и выше. Вы можете протестировать режим «Размышление» в рамках программы Developer Preview на любом устройстве с поддержкой AICore.
Включите режим мышления
Для использования режима обдумывания необходимо включить его, установив флаг enableThinking в true в функции generateContentRequest :
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Доступ к мыслям
SDK ML Kit предоставляет различные способы доступа к мыслительным процессам, предшествующим ответу модели, в зависимости от того, используете ли вы реализацию без потоковой обработки данных или с потоковой обработкой.
Режим без потоковой передачи
В стандартных вызовах без потоковой передачи данных процесс обработки возвращается как часть полного ответа. Вы можете получить доступ к этому процессу, используя свойство thoughtProcess , которое содержит список объектов Candidate , в объекте 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
}
режим потоковой передачи
Для поддержки обратной связи в реальном времени интерфейс StreamingCallback был обновлен и теперь включает метод onNewThought . Это позволяет вашему приложению обрабатывать потоковые фрагменты мыслей по мере их генерации моделью.
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
}
Передовые методы
Вот несколько рекомендаций по использованию режима мышления:
- Индикаторы пользовательского интерфейса: Поскольку этапы рассуждения могут занимать время, отображение мыслей или индикатора «размышления» в потоковом режиме может значительно улучшить воспринимаемую производительность, показывая пользователю, что модель активна.
- Выборочная реализация: Если вы не хотите показывать конечным пользователям исходные данные рассуждений, вы можете игнорировать поле
thoughtProcessили опустить реализацию методаonNewThought. МетодonNewThoughtимеет пустую реализацию по умолчанию, чтобы обеспечить обратную совместимость.
Дополнительные советы см. в разделе «Режим размышления» в Gemma . Обратите внимание, что многоходовые диалоги в AICore в настоящее время не поддерживаются.