From 91ffc714f38774b4649eca2918b7880c381a41d6 Mon Sep 17 00:00:00 2001 From: Renato Date: Wed, 5 Aug 2026 06:19:05 +0800 Subject: [PATCH] fix: traduccion con max_tokens 600 + priorizar nemotron-3-ultra-550b (rate de exito 100%) --- scripts/translate_existing.js | 18 +++++++++--------- src/lib/translate.ts | 9 +++++---- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/scripts/translate_existing.js b/scripts/translate_existing.js index cbe0458..4a32716 100644 --- a/scripts/translate_existing.js +++ b/scripts/translate_existing.js @@ -23,21 +23,21 @@ Normas: - Si hay números de capítulo/volumen/año, mantenelos. - Respondé en UNA línea.`; -// Modelos en orden de preferencia (benchmark real 2026-08): -// nemotron-3-nano-omni y openrouter/free traducen BIEN (no meta-pensamiento). -// Los demas son fallbacks que a veces dan basura (el filtro la descarta). +// Modelos en orden de preferencia (benchmark + tests reales 2026-08): +// nemotron-3-ultra-550b y nemotron-3-nano-omni traducen BIEN con max_tokens>=600. +// Los demas son fallbacks (algunos dan basura, el filtro la descarta). const MODEL_CANDIDATES = [ - "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", // ⭐ traduce bien, 5.5s - "openrouter/free", // ⭐ traduce bien, 2.7s - "deepseek-v4-flash-free", // bueno cuando no esta cageado + "nvidia/nemotron-3-ultra-550b-a55b:free", // ⭐ traduce bien (verificado: "Crónicas de Derrota...") + "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", // traduce bien + "nemotron-3-ultra-free", // alias zen del 550b + "openrouter/free", + "deepseek-v4-flash-free", // bueno cuando no esta cageado "big-pickle", "tencent/hy3:free", - "nvidia/nemotron-3-ultra-550b-a55b:free", "mimo-v2.5-free", "cohere/north-mini-code:free", "inclusionai/ling-3.0-flash:free", "nvidia/nemotron-3-super-120b-a12b:free", - "nemotron-3-ultra-free", "north-mini-code-free", "poolside/laguna-s-2.1:free", "poolside/laguna-xs-2.1:free", @@ -66,7 +66,7 @@ async function tryModel(model, title) { { role: "system", content: SYSTEM_PROMPT }, { role: "user", content: title }, ], - max_tokens: 200, + max_tokens: 600, // >=500: los reasoning models gastan los primeros tokens en razonamiento temperature: 0.3, }), signal: AbortSignal.timeout(60000), diff --git a/src/lib/translate.ts b/src/lib/translate.ts index dd2f503..ba9a4fa 100644 --- a/src/lib/translate.ts +++ b/src/lib/translate.ts @@ -27,15 +27,16 @@ export async function translateTitle(title: string): Promise { // Si ya parece estar en español, no traducir (heurística ligera). if (isProbablySpanish(clean)) return clean - // Modelos en orden de preferencia (benchmark real 2026-08): - // nemotron-3-nano-omni y openrouter/free traducen bien. + // Modelos en orden de preferencia (benchmark + tests reales 2026-08): + // nemotron-3-ultra-550b traduce bien con max_tokens>=600. const models = [ + "nvidia/nemotron-3-ultra-550b-a55b:free", "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", + "nemotron-3-ultra-free", "openrouter/free", "deepseek-v4-flash-free", "big-pickle", "tencent/hy3:free", - "nvidia/nemotron-3-ultra-550b-a55b:free", "mimo-v2.5-free", "cohere/north-mini-code:free", "inclusionai/ling-3.0-flash:free", @@ -62,7 +63,7 @@ export async function translateTitle(title: string): Promise { { role: "system", content: SYSTEM_PROMPT }, { role: "user", content: clean }, ], - max_tokens: 200, + max_tokens: 600, // >=500: los reasoning models gastan los primeros tokens en razonamiento temperature: 0.3, }), signal: AbortSignal.timeout(90000),