Skip to content

Los modelos con capacidad de pensamiento emiten un campo thinking que separa su traza de razonamiento de la respuesta final.

Utilice esta capacidad para auditar los pasos del modelo, animar el pensamiento del modelo en una interfaz de usuario u ocultar la traza por completo cuando solo necesite la respuesta final.

Modelos compatibles

Habilitar el pensamiento en llamadas a la API

Establezca el campo think en las solicitudes de chat o generación. La mayoría de los modelos aceptan valores booleanos (true/false) o niveles (low, medium, high, max), donde max solicita el nivel de pensamiento más alto.

Por el contrario, GPT-OSS espera uno de los valores low, medium o high para ajustar la longitud de la traza.

El campo message.thinking (endpoint de chat) o thinking (endpoint de generación) contiene la traza de razonamiento, mientras que message.content / response almacena la respuesta final.

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

Nota

GPT-OSS requiere que el campo think se establezca en "low", "medium" o "high". El envío de valores true/false se ignora para este modelo.

Transmitir la traza de razonamiento

Las transmisiones de pensamiento intercalan tokens de razonamiento antes de los tokens de respuesta. Detecte el primer fragmento thinking para mostrar una sección de "pensamiento", luego cambie a la respuesta final una vez que llegue message.content.

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

Referencia rápida de CLI

  • Habilitar el pensamiento para una ejecución única: ollama run deepseek-r1 --think "Where should I visit in Lisbon?"
  • Deshabilitar el pensamiento: ollama run deepseek-r1 --think=false "Summarize this article"
  • Ocultar la traza mientras se usa un modelo de pensamiento: ollama run deepseek-r1 --hidethinking "Is 9.9 bigger or 9.11?"
  • En sesiones interactivas, alterne con /set think o /set nothink.
  • GPT-OSS solo acepta niveles: ollama run gpt-oss --think=low "Draft a headline" (reemplace low por medium o high según sea necesario).

Nota

El pensamiento está habilitado de forma predeterminada en la CLI y la API para los modelos compatibles.