fix: LLM иногда возвращает пустой текст — raise при пустом content, ретрай в generate_response_with_retry, фронтенд показывает ошибку вместо молчания
This commit is contained in:
1 parent
d757d2f8c7
commit
8ca070ed70
3 files changed
+9
-4
No files matched your search
@@ -90,7 +90,10 @@ def generate_response(llm_config, vacancy, resume_text, style_hint=""):
|
||||
raise RuntimeError(f"LLM ошибка {resp.status_code}: {resp.text[:300]}")
|
||||
|
||||
data = resp.json()
|
||||
return data["choices"][0]["message"]["content"].strip()
|
||||
content = (data["choices"][0]["message"].get("content") or "").strip()
|
||||
if not content:
|
||||
raise RuntimeError("LLM вернул пустой текст — попробуйте ещё раз")
|
||||
return content
|
||||
|
||||
|
||||
def generate_response_with_retry(llm_config, vacancy, resume_text, style_hint="", attempts=2):
|
||||
|
||||
@@ -656,6 +656,8 @@ async function openSendModal(id) {
|
||||
renderTexts();
|
||||
} else if (data.errors && data.errors[id]) {
|
||||
document.getElementById('send-modal-note').textContent = 'Ошибка: ' + data.errors[id];
|
||||
} else {
|
||||
document.getElementById('send-modal-note').textContent = 'Не удалось сгенерировать текст — попробуйте ещё раз';
|
||||
}
|
||||
} catch (e) {
|
||||
document.getElementById('send-loading').classList.add('hidden');
|
||||
|
||||
@@ -31,7 +31,7 @@ from werkzeug.security import check_password_hash, generate_password_hash
|
||||
|
||||
from hh_search import (search_vacancies, fetch_vacancy_details, fetch_my_resumes,
|
||||
parse_cookies, get_proxies)
|
||||
from hh_llm import generate_response
|
||||
from hh_llm import generate_response_with_retry
|
||||
from hh_browser import browser_open, browser_send, browser_close
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
@@ -508,8 +508,8 @@ def api_generate(name):
|
||||
details = fetch_vacancy_details(vid, proxies=get_proxies()) or {}
|
||||
vacancy_full = {**vacancy, **details}
|
||||
try:
|
||||
texts[vid] = generate_response(cfg.get("llm", {}), vacancy_full,
|
||||
resume, cfg.get("style", ""))
|
||||
texts[vid] = generate_response_with_retry(cfg.get("llm", {}), vacancy_full,
|
||||
resume, cfg.get("style", ""))
|
||||
if limit is not None:
|
||||
used += 1
|
||||
bump_llm_usage(current_user())
|
||||
|
||||
Reference in new issue
Block a user