fix: traduccion con max_tokens 600 + priorizar nemotron-3-ultra-550b (rate de exito 100%)
This commit is contained in:
@@ -23,21 +23,21 @@ Normas:
|
|||||||
- Si hay números de capítulo/volumen/año, mantenelos.
|
- Si hay números de capítulo/volumen/año, mantenelos.
|
||||||
- Respondé en UNA línea.`;
|
- Respondé en UNA línea.`;
|
||||||
|
|
||||||
// Modelos en orden de preferencia (benchmark real 2026-08):
|
// Modelos en orden de preferencia (benchmark + tests reales 2026-08):
|
||||||
// nemotron-3-nano-omni y openrouter/free traducen BIEN (no meta-pensamiento).
|
// nemotron-3-ultra-550b y nemotron-3-nano-omni traducen BIEN con max_tokens>=600.
|
||||||
// Los demas son fallbacks que a veces dan basura (el filtro la descarta).
|
// Los demas son fallbacks (algunos dan basura, el filtro la descarta).
|
||||||
const MODEL_CANDIDATES = [
|
const MODEL_CANDIDATES = [
|
||||||
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", // ⭐ traduce bien, 5.5s
|
"nvidia/nemotron-3-ultra-550b-a55b:free", // ⭐ traduce bien (verificado: "Crónicas de Derrota...")
|
||||||
"openrouter/free", // ⭐ traduce bien, 2.7s
|
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", // traduce bien
|
||||||
"deepseek-v4-flash-free", // bueno cuando no esta cageado
|
"nemotron-3-ultra-free", // alias zen del 550b
|
||||||
|
"openrouter/free",
|
||||||
|
"deepseek-v4-flash-free", // bueno cuando no esta cageado
|
||||||
"big-pickle",
|
"big-pickle",
|
||||||
"tencent/hy3:free",
|
"tencent/hy3:free",
|
||||||
"nvidia/nemotron-3-ultra-550b-a55b:free",
|
|
||||||
"mimo-v2.5-free",
|
"mimo-v2.5-free",
|
||||||
"cohere/north-mini-code:free",
|
"cohere/north-mini-code:free",
|
||||||
"inclusionai/ling-3.0-flash:free",
|
"inclusionai/ling-3.0-flash:free",
|
||||||
"nvidia/nemotron-3-super-120b-a12b:free",
|
"nvidia/nemotron-3-super-120b-a12b:free",
|
||||||
"nemotron-3-ultra-free",
|
|
||||||
"north-mini-code-free",
|
"north-mini-code-free",
|
||||||
"poolside/laguna-s-2.1:free",
|
"poolside/laguna-s-2.1:free",
|
||||||
"poolside/laguna-xs-2.1:free",
|
"poolside/laguna-xs-2.1:free",
|
||||||
@@ -66,7 +66,7 @@ async function tryModel(model, title) {
|
|||||||
{ role: "system", content: SYSTEM_PROMPT },
|
{ role: "system", content: SYSTEM_PROMPT },
|
||||||
{ role: "user", content: title },
|
{ role: "user", content: title },
|
||||||
],
|
],
|
||||||
max_tokens: 200,
|
max_tokens: 600, // >=500: los reasoning models gastan los primeros tokens en razonamiento
|
||||||
temperature: 0.3,
|
temperature: 0.3,
|
||||||
}),
|
}),
|
||||||
signal: AbortSignal.timeout(60000),
|
signal: AbortSignal.timeout(60000),
|
||||||
|
|||||||
@@ -27,15 +27,16 @@ export async function translateTitle(title: string): Promise<string | null> {
|
|||||||
// Si ya parece estar en español, no traducir (heurística ligera).
|
// Si ya parece estar en español, no traducir (heurística ligera).
|
||||||
if (isProbablySpanish(clean)) return clean
|
if (isProbablySpanish(clean)) return clean
|
||||||
|
|
||||||
// Modelos en orden de preferencia (benchmark real 2026-08):
|
// Modelos en orden de preferencia (benchmark + tests reales 2026-08):
|
||||||
// nemotron-3-nano-omni y openrouter/free traducen bien.
|
// nemotron-3-ultra-550b traduce bien con max_tokens>=600.
|
||||||
const models = [
|
const models = [
|
||||||
|
"nvidia/nemotron-3-ultra-550b-a55b:free",
|
||||||
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
|
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
|
||||||
|
"nemotron-3-ultra-free",
|
||||||
"openrouter/free",
|
"openrouter/free",
|
||||||
"deepseek-v4-flash-free",
|
"deepseek-v4-flash-free",
|
||||||
"big-pickle",
|
"big-pickle",
|
||||||
"tencent/hy3:free",
|
"tencent/hy3:free",
|
||||||
"nvidia/nemotron-3-ultra-550b-a55b:free",
|
|
||||||
"mimo-v2.5-free",
|
"mimo-v2.5-free",
|
||||||
"cohere/north-mini-code:free",
|
"cohere/north-mini-code:free",
|
||||||
"inclusionai/ling-3.0-flash:free",
|
"inclusionai/ling-3.0-flash:free",
|
||||||
@@ -62,7 +63,7 @@ export async function translateTitle(title: string): Promise<string | null> {
|
|||||||
{ role: "system", content: SYSTEM_PROMPT },
|
{ role: "system", content: SYSTEM_PROMPT },
|
||||||
{ role: "user", content: clean },
|
{ role: "user", content: clean },
|
||||||
],
|
],
|
||||||
max_tokens: 200,
|
max_tokens: 600, // >=500: los reasoning models gastan los primeros tokens en razonamiento
|
||||||
temperature: 0.3,
|
temperature: 0.3,
|
||||||
}),
|
}),
|
||||||
signal: AbortSignal.timeout(90000),
|
signal: AbortSignal.timeout(90000),
|
||||||
|
|||||||
Reference in New Issue
Block a user