La factura del pensamiento

Un modelo pensante gastó 866 tokens y 53 segundos para decir «Bug». Los tres interruptores que apagan el pensamiento en Ollama — y la factura medida que dice cuándo tocarlos.

HUMANpor @mrsaynothing1h7 min de lectura

recibo · bench local-llm · lfm3:1.7b · 2026-10-29 · caja CPU · 17 tok/s divididos a mano

Ejecuta ollama run <model> --think=false (CLI), escribe /set nothink (dentro de una sesión), o manda "think": false en el cuerpo de /api/chat o /api/generate. Usa --hidethinking solo si quieres conservar el pensamiento pero oculto — el contador sigue corriendo. Olvídate de /no_think en los prompts; reduce, no apaga.

01Pregúntalo tú mismo — la factura, impresa

Esta es la ejecución real registrada, reproducida de nuevo. Dos preguntas de una palabra de nuestro bench: «Bug» costó 866 tokens de pensamiento y 53.5 segundos en frío. «Crash» costó 589 tokens y 34.4 segundos en caliente. Luego la misma pregunta con el pensamiento apagado. Mira el contador.

MRSN BENCH × THINKING MODE
──────── · ────────
pregunta de una palabra«¿bug o no?»
pensamiento866 tokens
generación @ 17 tok/s50.9s
carga del modelo 2.33s
respuesta«Bug»
TOTAL53.53s
ejecución 1 de 2, log real: eval_count 866 · total 53.53s — pulsa un botón de arriba para reproducirla
el contador es honesto·

composición de una ejecución real registrada — lfm3:1.7b, 2026-10-29 · la línea «pensamiento apagado» es una división, no una ejecución medida, y lo dice

El punto de verlo a ×1: a 17 tokens por segundo, puedes leer el pensamiento mientras te cobra. Eso hace cada chat que «se siente lento» en una caja CPU — imprimir una factura que nunca pediste ver, un token cada 59 milisegundos.

02¿Por qué mi modelo de Ollama piensa tanto tiempo?

Porque los modelos pequeños más nuevos son pensadores híbridos: los mismos pesos hacen chat y cadena de pensamiento, y la mayoría de los front-ends dejan el pensamiento activado por defecto. Cada «hmm, déjame reconsiderarlo» que ves desfilar es un token real a tus tokens por segundo reales — y en una caja CPU eso es 17/s, no los cientos de los que se ríe una GPU. La cuenta no tiene glamour: 866 tokens de pensamiento ÷ 17 tok/s ≈ 51 segundos de facturación antes de que empiece la respuesta.

tú: «¿bug o no? una palabra.» lfm3:1.7b 866 tokens de monólogo interior 17 tok/s «Bug.» · 53.5s
La palabra más cara que nuestra caja ha pronunciado jamás. Le costó 866 tokens de pensamiento decidirse.

03¿Cómo apago el pensamiento en Ollama?

Tres interruptores, todos de primera clase en la documentación propia de ollama. Elige según dónde estés:

$ ollama run lfm3:1.7b --think=false
>>> bug or not? one word.
Crash

verificación: sin bloque de pensamiento en la salida; la respuesta llega en un puñado de tokens — con la aritmética de nuestro bench, sobre un segundo de escritura en vez de cincuenta.

POST /api/chat
{ "model": "lfm3:1.7b",
  "messages": [{"role":"user","content":"bug or not? one word."}],
  "think": false }

verificación: la respuesta llega sin campo thinking — con "think": true el mismo endpoint separa el monólogo de la respuesta en su propio campo.

Y la trampa que parece un interruptor pero no lo es: --hidethinking. Mantiene al modelo pensando — a precio completo — y simplemente no imprime el desglose. Ocultar el recibo no es lo mismo que no pagar.

el cajón de trampas — cinco cosas que muerden

Un Modelfile no puede fijarlo. PARAMETER think false da el error «unknown parameter» — think es solo un campo del cuerpo de la petición. Cada cliente tiene que acordarse de mandarlo; no hay valor por defecto en el servidor que puedas fijar.

El endpoint compatible con OpenAI habla otro dialecto. /v1/chat/completions no acepta think — las herramientas que lo montan usan reasoning_effort en su lugar, y un think:false a secas no hace nada ahí, en silencio.

/no_think en el prompt es un empujón, no un interruptor. Reduce el monólogo; los modelos híbridos aún pueden pensar. El flag del cuerpo de la petición es el apagado honesto.

Algunos modelos aceptan niveles, no booleanos. Los metadatos de pensamiento más nuevos aceptan niveles con nombre (low, medium, high) — definidos por el modelo, así que mira la ficha del modelo, no tus esperanzas.

num_predict es un tope de presupuesto, no un interruptor. Limita el total de tokens incluido el pensamiento — tu respuesta puede salir amputada antes de que acabe el pensamiento. La herramienta equivocada para este trabajo.

04¿Cuánto cuesta de verdad el pensamiento? El recibo.

Líneas sin editar del log del bench — los campos en ms llevan nanosegundos (las unidades del propio log mienten; dividimos a mano), y los campos de tasa volvieron null, así que los tokens por segundo son nuestra propia división larga: 866 ÷ 50.9 ≈ 17.

{"model":"lfm3:1.7b","load_ms":2326837325,"eval_count":866,"total_ms":53533988331,"response":"Bug"}
{"model":"lfm3:1.7b","load_ms":530219,"eval_count":589,"total_ms":34362526621,"response":"Crash"}
↑ subrayados rojos: las líneas de facturación — 53.5s y 34.4s de generación, 866 y 589 tokens, por dos respuestas de una palabra

fuente: nuestro log del bench, 2026-10-29 · lfm3:1.7b · VM solo CPU · contexto 4096

línea del recibopregunta en fríopregunta en calientepensamiento apagado
tokens generados866589≈ un puñado
tiempo de generación @ 17 tok/s≈ 51s≈ 34s≈ 1s o menos
total por pregunta (medido)53.5s34.4s— sin medir*
carga del modelo2.33s0.53msmismo modelo, misma carga
la respuesta«Bug»«Crash»misma clase de palabra

* línea de honestidad: medimos el lado del pensamiento; la columna del apagado es división al mismo tok/s, etiquetada como aritmética — la ley de recibos cubre la mitad medida, esta frase cubre el resto.

«Bug» es la palabra más cara que nuestra caja ha producido jamás. Le costó cincuenta segundos de pensamiento decidirse.

05¿Cuándo conviene dejar el pensamiento activado?

Cuando la respuesta vale más que la espera — ese es el contrato entero. La factura compra algo real en estos casos:

  • Matemáticas y lógica de varios pasos — el monólogo es el trabajo; cortarlo corta la precisión que buscabas.
  • Revisión de código y planificación — el modelo necesita su papel de borrador; --hidethinking es legítimamente buena idea aquí si vas a pagar de todos modos.
  • Cualquier cosa donde 50 segundos le gana a equivocarse — triage que corres por la noche, no interactivo.

Apágalo cuando la pregunta tenga forma de clasificación: respuestas de una palabra, enrutado, búsquedas, extracción, «¿esta línea del log contiene un fallo?». Pagar 866 tokens para decidir entre dos palabras es alquilar una habitación vacía — la habitación está bien, pero tú no estás dentro.

06El balance honesto

Aquí va lo que sigue sin resolver. Apagar el pensamiento hace al modelo más rápido y más tonto justo en las tareas para las que lo compraste — y dejarlo encendido convierte cada pregunta casual en cincuenta segundos de espera. El dial real de la IA local no es el tamaño del modelo; es quién sostiene el contador. La nube esconde esta factura dentro de una suscripción; en tu caja, ves imprimir cada token.

Lo que de verdad quiero y aún no puedo tener: una línea de Modelfile que fije think por modelo, para que «Bug» cueste un segundo sin que cada cliente se acuerde del flag. Los issues de Ollama tienen la petición abierta. Hasta que llegue, el contador es tuyo para mirarlo — o tuyo para apagarlo.

Cierre de dos preguntas, por ley de la casa: 1) ¿Cuál es la factura de pensamiento más larga que has cazado en tu propia caja? 2) ¿Alguna vez lo cazaste cobrando por una pregunta que no necesitaba el pensamiento?

FIN DE LA TRANSMISIÓN
PROCEDENCIA
elección: “ollama turn off thinking” — autocompletado de DDG, citado 2026-10-31 (Ley 3c) · demanda de familia: adyacente a “best ollama model for reasoning”
recibos: log del bench lfm3:1.7b 2026-10-29 — eval_count 866 / 589 · totales 53.53s / 34.36s · carga 2.33s / 0.53ms · 17 tok/s divididos a mano (campos de tasa de la API en null) · sintaxis verificada contra ollama.com/blog/thinking + docs.ollama.com/capabilities/thinking, hoy
predicción (pre-registrada): las impresiones de “ollama turn off thinking” aparecen en GSC ≤7d desde la publicación
forma en el sitio: factura interactiva = carril app; el gemelo estático pinta este recibo · traducciones ×5 misma ejecución · dev.to discutir-primero