Modelle mit Denkfunktion geben ein thinking-Feld aus, das ihre Gedankenspur von der endgültigen Antwort trennt.
Nutzen Sie diese Funktion, um die Schritte des Modells zu prüfen, das Denken des Modells in einer UI zu animieren oder die Spur vollständig auszublenden, wenn Sie nur die endgültige Antwort benötigen.
Unterstützte Modelle
- Qwen 3
- GPT-OSS (verwenden Sie die
think-Stufenlow,medium,high– die Spur kann nicht vollständig deaktiviert werden) - DeepSeek-v3.1
- DeepSeek R1
- Durchsuchen Sie die neuesten Ergänzungen unter Denkmodellen
Denken in API-Aufrufen aktivieren
Setzen Sie das Feld think in Chat- oder Generierungsanfragen. Die meisten Modelle akzeptieren Boolesche Werte (true/false) oder Stufen (low, medium, high, max), wobei max die höchste Denkstufe anfordert.
GPT-OSS erwartet stattdessen eine der Stufen low, medium oder high, um die Länge der Spur anzupassen.
Das Feld message.thinking (Chat-Endpunkt) bzw. thinking (Generierungs-Endpunkt) enthält die Gedankenspur, während message.content / response die endgültige Antwort enthält.
cURL
```shell
curl http://localhost:11434/api/chat -d '{
"model": "qwen3",
"messages": [{
"role": "user",
"content": "How many letter r are in strawberry?"
}],
"think": true,
"stream": false
}'
```
Python
```python
from ollama import chat
response = chat(
model='qwen3',
messages=[{'role': 'user', 'content': 'How many letter r are in strawberry?'}],
think=True,
stream=False,
)
print('Thinking:\n', response.message.thinking)
print('Answer:\n', response.message.content)
```
JavaScript
```javascript
import ollama from 'ollama'
const response = await ollama.chat({
model: 'deepseek-r1',
messages: [{ role: 'user', content: 'How many letter r are in strawberry?' }],
think: true,
stream: false,
})
console.log('Thinking:\n', response.message.thinking)
console.log('Answer:\n', response.message.content)
```
Hinweis
GPT-OSS erfordert, dass think auf "low", "medium" oder "high" gesetzt ist. Die Übergabe von true/false wird für dieses Modell ignoriert.
Gedankenspur streamen
Denk-Streams mischen Denk-Token vor Antwort-Token. Erkennen Sie den ersten thinking-Chunk, um einen „Denken“-Abschnitt darzustellen, und wechseln Sie zur endgültigen Antwort, sobald message.content eintrifft.
Python
```python
from ollama import chat
stream = chat(
model='qwen3',
messages=[{'role': 'user', 'content': 'What is 17 × 23?'}],
think=True,
stream=True,
)
in_thinking = False
for chunk in stream:
if chunk.message.thinking and not in_thinking:
in_thinking = True
print('Thinking:\n', end='')
if chunk.message.thinking:
print(chunk.message.thinking, end='')
elif chunk.message.content:
if in_thinking:
print('\n\nAnswer:\n', end='')
in_thinking = False
print(chunk.message.content, end='')
```
JavaScript
```javascript
import ollama from 'ollama'
async function main() {
const stream = await ollama.chat({
model: 'qwen3',
messages: [{ role: 'user', content: 'What is 17 × 23?' }],
think: true,
stream: true,
})
let inThinking = false
for await (const chunk of stream) {
if (chunk.message.thinking && !inThinking) {
inThinking = true
process.stdout.write('Thinking:\n')
}
if (chunk.message.thinking) {
process.stdout.write(chunk.message.thinking)
} else if (chunk.message.content) {
if (inThinking) {
process.stdout.write('\n\nAnswer:\n')
inThinking = false
}
process.stdout.write(chunk.message.content)
}
}
}
main()
```
CLI-Kurzreferenz
- Denken für einen einzelnen Lauf aktivieren:
ollama run deepseek-r1 --think "Where should I visit in Lisbon?" - Denken deaktivieren:
ollama run deepseek-r1 --think=false "Summarize this article" - Spur ausblenden, während weiterhin ein Denkmodell verwendet wird:
ollama run deepseek-r1 --hidethinking "Is 9.9 bigger or 9.11?" - In interaktiven Sitzungen können Sie es mit
/set thinkoder/set nothinkumschalten. - GPT-OSS akzeptiert nur Stufen:
ollama run gpt-oss --think=low "Draft a headline"(ersetzen Sielowbei Bedarf durchmediumoderhigh).
Hinweis
Denken ist in der CLI und API für unterstützte Modelle standardmäßig aktiviert.
Wait wait, let's check the original's spacing after the code blocks: the original has two empty lines after the cURL code block before ### Python, right? Let's see: original has:
```shell
...
```
Python
Yes, so in the translation, we have the same: after the cURL code block, two line breaks, then ### Python, correct. Same for the other code blocks.
Also, the tip boxes have the same indentation as original, right? Yes, the original has the tip content indented, we kept that.
All links are intact, all code is unchanged, all technical identifiers are kept in English, terminology is consistent. Perfect.