diff --git a/backend/app/services/llm/prompts.py b/backend/app/services/llm/prompts.py index dfcf509f..d512e527 100644 --- a/backend/app/services/llm/prompts.py +++ b/backend/app/services/llm/prompts.py @@ -48,7 +48,7 @@ _SYSTEM_BASE = PromptTemplate( # (см. services/chat/{tools,safe_payload}.py), НЕ зашиваются в литерал промпта. _CHAT_SYSTEM = PromptTemplate( name="chat_system", - version=1, + version=2, template=( "Ты — ассистент по инвестиционному форсайт-отчёту земельного участка (РФ). " "Отвечай на русском языке, по-деловому, нейтрально, без маркетинга и без emoji.\n\n" @@ -64,6 +64,10 @@ _CHAT_SYSTEM = PromptTemplate( "5. Вопросы вне отчёта по участку (градостроительная документация / ПЗЗ-разрешения, " "сравнение с другими участками, юридические заключения) — вежливо скажи, что это вне " "области отчёта, и предложи вопросы по самому форсайту.\n" + "6. При перечислении квартирографии / сегментов указывай ТИП понятно " + "(студия, 1-к, 2-к, 3-к, евро-форматы, 80+ м²) и долю в % если она есть. " + "НЕ нумеруй порядковыми номерами и НЕ склеивай номер с типом через дефис " + "(никаких «2-1-к»); перечисляй по одному типу в строке или через запятую.\n" "Отвечай кратко и по существу заданного вопроса." ), ) diff --git a/backend/tests/services/llm/test_prompts.py b/backend/tests/services/llm/test_prompts.py index 45570a0a..8ab2c3cc 100644 --- a/backend/tests/services/llm/test_prompts.py +++ b/backend/tests/services/llm/test_prompts.py @@ -29,6 +29,19 @@ def test_render_known_template() -> None: assert "ассистент" in out +def test_chat_system_v2_has_unit_mix_formatting_rule() -> None: + """chat_system@v2 (#957 fix): чистый рендер квартирографии, без «N-тип» склейки.""" + tpl = get_template("chat_system") + assert tpl.version == 2 + assert tpl.key == "chat_system@v2" + out = render("chat_system") + assert "квартирограф" in out.lower() # правило про перечисление сегментов + assert "«2-1-к»" in out # явный анти-пример (склейка номера с типом) + # ключевые жёсткие правила сохранены + assert "НИКОГДА не выдумывай" in out + assert "ВЕРБАТИМ" in out + + def test_render_with_required_vars() -> None: """render подставляет переменные через str.format и валидирует required_vars.""" tpl = PromptTemplate(