Files
researchowl/tests
ChemaVXandClaude Opus 5 32f0b2c1ab
Build & Deploy ResearchOwl / build-and-push (push) Successful in 8s
fix(seo): el reintento estricto llevaba meses sin ejecutarse
`_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
2026-09-02 08:53:28 +00:00
..
2026-04-27 13:49:07 +00:00