Используйте режим мышления

В режиме «Размышление» модель должна вывести ход своих рассуждений, прежде чем сгенерировать окончательный ответ. Режим «Размышление» повышает точность вызова функций моделью и хорошо подходит для математических задач, решения проблем и других сложных задач, требующих логического мышления.

При включении режима обдумывания выходные данные модели делятся на две части:

  1. Процесс мышления: внутренние этапы рассуждения или планирования, которые предпринимает модель.
  2. Ответ: Окончательный ответ, сгенерированный для пользователя.

Предварительные требования

Режим «Размышление» работает на устройствах под управлением 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 в настоящее время не поддерживаются.