Thinking-Modus verwenden

Der Denkmodus fordert das Modell auf, seinen Denkprozess auszugeben, bevor es eine endgültige Antwort generiert. Der Thinking-Modus verbessert die Genauigkeit von Funktionsaufrufen des Modells und eignet sich gut für Mathematik, Problemlösung und andere komplexe Aufgaben, die logisches Denken erfordern.

Wenn der Denkmodus aktiviert ist, wird die Modellausgabe in zwei Teile unterteilt:

  1. Denkprozess: Die internen Überlegungen oder Planungsschritte des Modells.
  2. Antwort: Die endgültige Antwort, die für den Nutzer generiert wurde.

Vorbereitung

Der Denkmodus funktioniert auf Geräten mit Gemini Nano V4 und höher. Du kannst den Denkmodus über das Entwicklervorschau-Programm auf jedem AICore-fähigen Gerät testen.

Thinking-Modus aktivieren

Wenn Sie den Denkmodus verwenden möchten, müssen Sie ihn aktivieren. Setzen Sie dazu in Ihrer generateContentRequest-Builder-Funktion das Flag enableThinking auf true:

val request = generateContentRequest {
    text("Solve this complex riddle: ...")
    enableThinking = true // Enable thinking mode for Gemini Nano V4
}

Auf Gedanken zugreifen

Das ML Kit SDK bietet verschiedene Möglichkeiten, auf die Gedanken zuzugreifen, die der Antwort eines Modells vorausgehen, je nachdem, ob Sie eine Nicht-Streaming- oder eine Streaming-Implementierung verwenden.

Nicht-Streaming-Modus

Bei standardmäßigen Nicht-Streaming-Aufrufen wird der Begründungsprozess als Teil der vollständigen Antwort zurückgegeben. Sie können auf diesen Prozess über die Eigenschaft thoughtProcess (die eine Liste von Candidate-Objekten enthält) im Objekt GenerateContentResponse zugreifen.

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
}

Streamingmodus

Zur Unterstützung von Echtzeit-Feedback wurde die StreamingCallback-Schnittstelle um die onNewThought-Methode erweitert. So kann Ihre Anwendung gestreamte Gedankenblöcke verarbeiten, während sie vom Modell generiert werden.

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
}

Best Practices

Hier sind einige Best Practices für die Verwendung des Denkmodus:

  • UI-Indikatoren: Da die Generierung von Logikschritten einige Zeit in Anspruch nehmen kann, kann die Anzeige der Gedanken oder eines „Denk“-Indikators im Streamingmodus die wahrgenommene Leistung erheblich verbessern, da der Nutzer sieht, dass das Modell aktiv ist.
  • Selektive Implementierung: Wenn Sie Endnutzern die Rohdaten der Argumentation nicht zugänglich machen möchten, können Sie das Feld thoughtProcess ignorieren oder die Implementierung von onNewThought weglassen. Die Methode onNewThought hat eine standardmäßig leere Implementierung, um die Abwärtskompatibilität zu gewährleisten.

Weitere Tipps finden Sie unter Thinking-Modus in Gemma. Beachten Sie, dass mehrstufige Unterhaltungen in AICore derzeit nicht unterstützt werden.