fix(assistant): не обрезать пошаговые решения посреди формулы

Лимит ответа был 420 токенов — длинное решение обрывалось внутри $$…$$,
незакрытый блок показывался сырым LaTeX. Теперь лимит по режиму
(ответ 1200, проверка 900, подсказка 320), а рендер отбрасывает
незакрытый хвост $$ (ставит «…») вместо сырого кода.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-04 21:33:07 +03:00
parent 6e0a00fd8b
commit b9d63b0776
2 changed files with 8 additions and 2 deletions
@@ -405,7 +405,9 @@ async function askModel(q, hits, context, history, role, mode) {
const msgs = [{ role: 'system', content: sys }];
(history || []).forEach(m => { if (m && (m.role === 'user' || m.role === 'assistant') && m.content) msgs.push({ role: m.role, content: String(m.content).slice(0, 1500) }); });
msgs.push({ role: 'user', content: user });
return callLLMFailover(msgs, 420);
// подсказка короткая; ответ/проверка — длиннее, чтобы пошаговое решение с формулами не обрезалось на середине
const cap = mode === 'hint' ? 320 : (mode === 'check' ? 900 : 1200);
return callLLMFailover(msgs, cap);
}
/* ── POST /api/assistant/ask { q, context?, history? } ── «Спроси Квантика» ─