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:
- Denkprozess: Die internen Überlegungen oder Planungsschritte des Modells.
- 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
thoughtProcessignorieren oder die Implementierung vononNewThoughtweglassen. Die MethodeonNewThoughthat 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.