feat(assistant): «Спроси» через бесплатную LLM (Groq по умолчанию), грунтовка по FAQ
ask() умеет вызывать OpenAI-совместимую модель: топ-FAQ как контекст, краткий ответ на русском (source:'model'), таймаут 12с, при ошибке/без ключа — мягкий откат на FAQ. Конфиг через ENV (ASSISTANT_LLM_URL/KEY/MODEL): дефолт — Groq (бесплатный ключ), поддержан и локальный Ollama без ключа. Фронт показывает ответ модели сверху, FAQ и поиск по платформе — ниже. .env.example дополнен. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -389,9 +389,15 @@
|
||||
LS.assistantAsk(q).catch(function () { return { answers: [] }; }),
|
||||
(LS.globalSearch ? LS.globalSearch(q, 'all', 4) : Promise.resolve({ results: [] })).catch(function () { return { results: [] }; }),
|
||||
]).then(function (res) {
|
||||
var modelAnswer = res[0] && res[0].answer;
|
||||
var ans = (res[0] && res[0].answers) || [];
|
||||
var found = (res[1] && res[1].results) || [];
|
||||
var html = '';
|
||||
if (modelAnswer) {
|
||||
html += '<div class="asst-ans"><div class="asst-ans-q">Квантик</div>' +
|
||||
'<div style="white-space:pre-line">' + esc(modelAnswer) + '</div></div>';
|
||||
if (ans.length) html += '<div class="asst-ans-sec">Из справки</div>';
|
||||
}
|
||||
if (ans.length) {
|
||||
html += ans.map(function (a) {
|
||||
return '<div class="asst-ans"><div class="asst-ans-q">' + esc(a.q) + '</div>' + esc(a.a) +
|
||||
|
||||
Reference in New Issue
Block a user