Skip to content

Les modèles capables de réflexion émettent un champ thinking qui sépare leur trace de raisonnement de la réponse finale.

Utilisez cette fonctionnalité pour auditer les étapes du modèle, animer la réflexion du modèle dans une UI, ou masquer entièrement la trace lorsque vous n'avez besoin que de la réponse finale.

Modèles pris en charge

Activer la réflexion dans les appels API

Définissez le champ think dans les requêtes de chat ou de génération. La plupart des modèles acceptent des booléens (true/false) ou des niveaux (low, medium, high, max), où max demande le niveau de réflexion le plus élevé.

GPT-OSS attend quant à lui l'une des valeurs low, medium ou high pour ajuster la longueur de la trace.

Le champ message.thinking (point de terminaison de chat) ou thinking (point de terminaison de génération) contient la trace de raisonnement, tandis que message.content / response contient la réponse finale.

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)
```

Remarque

GPT-OSS nécessite que le champ think soit défini sur "low", "medium" ou "high". Le passage de true/false est ignoré pour ce modèle.

Diffuser la trace de raisonnement

Les flux de réflexion entrelacent les jetons de raisonnement avant les jetons de réponse. Détectez le premier chunk thinking pour afficher une section de « réflexion », puis passez à la réponse finale une fois que message.content arrive.

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()
```

Référence rapide CLI

  • Activer la réflexion pour une seule exécution : ollama run deepseek-r1 --think "Where should I visit in Lisbon?"
  • Désactiver la réflexion : ollama run deepseek-r1 --think=false "Summarize this article"
  • Masquer la trace tout en utilisant un modèle de réflexion : ollama run deepseek-r1 --hidethinking "Is 9.9 bigger or 9.11?"
  • Dans les sessions interactives, basculez avec /set think ou /set nothink.
  • GPT-OSS n'accepte que des niveaux : ollama run gpt-oss --think=low "Draft a headline" (remplacez low par medium ou high selon vos besoins).

Remarque

La réflexion est activée par défaut dans le CLI et l'API pour les modèles pris en charge.