TPTito Pinardo Gutiérrez
← Artículos
English

Razonar solo donde aporta: un modelo local de 8B, de 4,7 a 0,7 segundos al redactar

En un turno real, la llamada que solo redactaba la respuesta generó 954 tokens de razonamiento: 96 de los 141 segundos. Apagar el razonamiento justo ahí bajó esa llamada de 4,7 a 0,7 s, pero hubo que volver a encenderlo en dos casos concretos.

  • LLM locales (Ollama, Qdrant, RAG)
  • Python

El problema

qwen3 puede responder «pensando» (genera un razonamiento interno antes de contestar) o directo. Pensar multiplicaba por seis el tiempo de una llamada.

En un turno con herramientas hay al menos dos llamadas al modelo: una que decide qué herramienta usar y con qué argumentos, y otra que redacta la respuesta con el resultado delante. La segunda estaba gastando cientos de tokens en pensar algo que ya tenía resuelto.

La regla

  • Ninguna herramienta ejecutada todavía: pensar. Elegir herramienta y calcular argumentos lo necesita: sin razonamiento, el modelo calculaba mal fechas relativas e inventaba duraciones.
  • Resultado con datos y sin avisos: directo. Solo queda redactar.
  • Resultado vacío o con error: pensar otra vez. Hay que decidir otro paso.
  • Se ha inyectado un aviso junto al resultado: pensar. El aviso pide decidir algo.
  • Si la llamada directa pide otra herramienta, se repite pensando.

Lo que se rompió al principio

La primera versión apagaba el razonamiento después de la primera herramienta, sin más. Ganó velocidad y perdió dos cosas que la batería tardó en enseñar:

  • Tras una búsqueda vacía, nunca intentaba otra fuente: respondía «no he encontrado nada» con el dato a una llamada.
  • Ignoraba los avisos que el código añade al resultado: seguía dando una dirección sin puerto aunque el aviso dijera que faltaba.

Resultado

En los 9 casos de interpretación con 5 semillas: 45/45 en los dos modos, con 31 tokens de salida en vez de 258. Turnos completos entre un 25 % y un 40 % más rápidos, y la batería entera de 10,1 a 8,0 minutos.