Build & Deploy ResearchOwl / build-and-push (push) Successful in 8s
`_raw` mandaba `temperature=0.0` a `messages.create`, y anthropic 1.2.0 dejó de aceptarlo: los parámetros de muestreo se movieron a `output_config`, que sólo expone `effort` y `format`. El `except` de abajo convertía el TypeError en un warning, así que el reintento NUNCA ocurría: se quedaba el primer intento y entraba el recortador mecánico. Se vio generando el artículo EN de Trans-en-Provence: `custom_excerpt` quedó en 389 caracteres contra un tope de 300, porque el recorte limpio lo habría dejado demasiado corto y el reintento que debía acortarlo con criterio estaba muerto. Lo que hacía vincular el reintento no era la temperatura: es el turno de edición —se le devuelve su propio JSON para que lo acorte, en vez de re-tirar de cero— y un `max_tokens` más corto. Los dos siguen. Y el `except` deja de disfrazar un error de programación: un TypeError se registra como error, no como aviso. Así fue como esto vivió en silencio. Los kwargs salen a `_create_kwargs()` para que un test los compare con la firma del SDK instalado. ⚠️ Ese test NO puede fallar hoy en local: el host tiene anthropic 0.102.0 y el pod 1.2.0, porque requirements.txt pone un suelo (`>=0.40.0`) y el CI no corre los tests. Verificado a mano dentro del pod: con `temperature` la firma lo rechaza, sin él pasa. El pin y el pytest en CI van aparte. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHakatofHeJAzdXL26Q5bq