LLM 0.32: trazas de razonamiento visibles, herramientas servidor y mejor registro para modelos
La versión 0.32 de LLM introduce trazas de razonamiento visibles, herramientas ejecutadas en servidor, un sistema de logs content-addressable y mejoras en la API Python para streaming de eventos. Estas novedades facilitan integraciones, debugging y la construcción de agentes capaces de combinar herramientas.
Resumen de la actualización
El 4 de agosto de 2026 se publicó LLM 0.32, una actualización relevante que cambia tanto la experiencia de usuario en la CLI como las capacidades de la API Python. Entre las novedades más destacadas están las trazas de razonamiento visibles, soporte para herramientas server-side de distintos proveedores, un nuevo sistema de logs orientado al contenido y mejoras en el manejo de eventos y mensajes en la API. Además, el ecosistema de plugins —en particular llm-anthropic— recibe actualizaciones importantes.
Trazas de razonamiento visibles (pero controladas)
Para quienes depuran prompts o investigan comportamientos de modelos, una novedad clave es que LLM ahora muestra las trazas de razonamiento de modelos orientados al razonamiento en la salida de error estándar (stderr). Eso significa que pueden ver qué “está pensando” el modelo sin que esa información contamine la salida estándar que podrían canalizar a otra herramienta.
Si no desean ver estas trazas, se puede desactivar con la opción -R o --hide-reasoning. Esta separación entre salida principal y trazas de razonamiento es útil en pipelines donde la salida final debe permanecer limpia, mientras que la introspección queda disponible para el desarrollador o el registro.
Soporte para modelos y nuevo valor por defecto
LLM 0.32 incluye soporte inmediato para la familia de modelos GPT-5.6. El modelo por defecto usado por el comando llm prompt ahora es gpt-5.6-luna, descrito como una opción económica pero capaz. Esto facilita empezar a trabajar sin especificar explícitamente un modelo en cada ejecución.
Herramientas ejecutadas en servidor (server-side tools)
Una de las mejoras funcionales más prácticas es la capacidad de invocar herramientas que se ejecutan en el lado del proveedor y que complementan a los modelos. Por ejemplo, OpenAI ofrece ahora un entorno de ejecución de código como herramienta server-side, lo que permite comandos como:
llm --tool CodeInterpreter 'Show current python and SQLite versions'
Además, OpenAI también proporciona una herramienta de WebSearch. Por su parte, el plugin llm-anthropic incorpora múltiples herramientas server-side: WebSearch, WebFetch, CodeExecution y AnthropicMCP. Un ejemplo con Anthropic sería:
llm -m claude-sonnet-5 -T 'AnthropicMCP("https://datasette.simonwillison.net/-/mcp")' \
'how many rows in the blog_blogmark table?'
En ese caso Anthropic ejecuta llamadas MCP contra el plugin datasette-mcp como parte de una única interacción de request/response con su API.
También se añadió el comando llm openai endpoint, que facilita ejecutar prompts contra cualquier endpoint compatible con OpenAI con una sola línea, útil para pruebas puntuales contra instancias locales o terceros que implementen el API de LLM.
Un ejemplo práctico mostrado por el autor es ejecutar prompts contra Gemma 4 12B en un LM Studio local a través de uvx, mezclando además el plugin llm-tools-quickjs:
uvx --with llm-tools-quickjs \
llm openai endpoint http://localhost:1234/v1 -m google/gemma-4-12b \
-T QuickJS 'Use QuickJS to multiply 3434 * 2434' --td
(Esta línea muestra que se pueden combinar herramientas y endpoints sin necesidad de instalar LLM localmente.)
Mejoras en la API Python: mensajes y eventos
Antes, la API Python de LLM obligaba a crear una conversación y a enviar mensajes uno por uno, ocultando la naturaleza real de cada petición (que suele contener todo el historial). LLM 0.32 introduce model.prompt(messages=[]), que permite enviar una lista completa de mensajes en una sola llamada. Ejemplo de uso:
import llm
from llm import user, assistant, system
model = llm.get_model('gpt-5.6-luna')
response = model.prompt(messages=[
system('You are a helpful pirate.'),
user('What is the capital of France?'),
assistant('Paris, matey.'),
user('And Germany?')
])
print(response.text())
Otro cambio importante es que la respuesta ya no se modela únicamente como una secuencia de strings. Muchos modelos modernamente devuelven una mezcla de razonamiento, textos finales, llamadas a herramientas y hasta adjuntos. La API ahora soporta stream_events() para iterar sobre eventos de distintos tipos (por ejemplo reasoning, text) y tratarlos de forma diferenciada:
for event in model.prompt('Explain cats').stream_events():
if event.type == 'reasoning':
print(f"[thinking] {event.chunk}", end='', flush=True)
elif event.type == 'text':
print(event.chunk, end='', flush=True)
else:
print(f"Other event: {event}")
Esto abre la puerta a interfaces más ricas y a manejar interacciones mixtas donde el modelo puede ejecutar herramientas y emitir texto en la misma sesión.
Logging rediseñado: almacenamiento content-addressable
Mantener un historial de conversaciones sin duplicar grandes cantidades de JSON repetido por cada turno era un reto. La solución en 0.32 es un almacén de mensajes content-addressable, inspirado en Git, que evita replicar la secuencia completa en cada registro. Las herramientas llm logs y llm logs --json convierten ese formato en algo fácil de consumir.
Este enfoque ayuda tanto a reducir el tamaño del almacenamiento como a mantener trazabilidad eficiente cuando las conversaciones crecen en longitud o cuando se reutilizan partes del historial.
Compatibilidad de plugins y ecosistema
Las notas de lanzamiento indican que la mayoría de plugins existentes seguirán funcionando, pero los que añaden modelos deben actualizarse a 0.32 para participar plenamente en el nuevo sistema de eventos por streaming. Hay una guía para implementar plugins con mensajes estructurados y eventos en streaming en la documentación.
Entre las actualizaciones del propio autor, llm-anthropic 0.26 añade soporte para la familia Claude 5 y las herramientas mencionadas. Otros plugins como llm-gemini, llm-openrouter y llm-mistral están en camino de actualización.
¿LLM como framework de agentes?
El autor reconoce que LLM empieza a parecerse a un framework de agentes: la capacidad de ejecutar herramientas en bucle para alcanzar objetivos, pausar para aprobación humana y reanudar desde un historial almacenado hace que sea natural pensar en LLM como base para agentes. Parte de los cambios en la release fueron impulsados por las necesidades del proyecto Datasette Agent.
Relevancia para América Latina
Para equipos en América Latina que construyen productos basados en LLMs, estas mejoras representan ventajas prácticas: mejor visibilidad durante la depuración, integración más simple con herramientas server-side (útil cuando se prefiere no ejecutar todo localmente por limitaciones de infraestructura), y un logging más eficiente ante regulaciones o auditoría. La capacidad de combinar modelos locales o de terceros a través de llm openai endpoint facilita experimentación con instancias en la nube regional o proveedores locales.
Además, la API de eventos y el soporte para llamadas a herramientas facilitan construir asistentes empresariales que integren fuentes de datos internas, sistemas de BI o flujos de trabajo humanos, común en organizaciones latinoamericanas que requieren control y auditoría.
Conclusión
LLM 0.32 es una actualización ambiciosa que impulsa la observabilidad (trazas de razonamiento), la integración con herramientas server-side, un logging más eficiente y una API Python más flexible para manejar eventos complejos. Si trabajan en productos o POCs con LLMs en la región, conviene evaluar la migración y revisar los plugins que usen para aprovechar las nuevas capacidades y evitar incompatibilidades.
Para más detalles, las notas de la release 0.32 y sus candidatas (0.32rc, 0.32rc2, 0.32a*) documentan los cambios finos y ofrecen guías para adaptarse al nuevo modelo de plugins y eventos.
Fuente original: Simon Willison