Skip to content

fix(procurement): переносить характеристики из предыдущих реплик в запрос - #845

Merged
ShaerWare merged 1 commit into
mainfrom
local/fix/query-builder-carry-specs
Aug 31, 2026
Merged

ShaerWare merged 1 commit into
mainfrom
local/fix/query-builder-carry-specs

Conversation

@ShaerWare

Copy link
Copy Markdown
Owner

Summary

Хвост к #842/#843. Номинал, напряжение и тип контактов клиент называет один раз — в первом сообщении. На уточнении «нужен промышленный тип» модель-нормализатор в половине прогонов теряла их:

0 ('контактор промышленный 20А 2НО АС220/230В 50Гц', ['модульный'])   ← хорошо
1 ('контактор промышленный', ['модульный'])                            ← потеряла
2 ('контактор промышленный', ['модульный'])                            ← потеряла

Без номинала поиск отдавал самые дешёвые контакторы — 6–12 А вместо нужных 18–25 А. То есть после #843 ответ стал зависеть от того, какой из вариантов вернёт модель.

Что сделано

Промпт теперь прямо требует переносить все названные ранее характеристики (номинал тока, напряжение, число и тип контактов, сечение, длину, серию, бренд), пока клиент их не отменил, и содержит пример такого переноса.

Проверено на прод-модели, 3 прогона на каждом диалоге:

контактор 0  {"query": "контактор силовой 20А 2НО 220/230В 50Гц", "exclude": ["модульный"]}
контактор 1  {"query": "контактор силовой 20А 2НО 220В 50Гц",     "exclude": ["модульный"]}
контактор 2  {"query": "контактор силовой 20А 2НО 220В 50Гц",     "exclude": ["модульный"]}
кабель 0     {"query": "кабель ВВГнг 4х2.5 200 метров", "exclude": []}
кабель 1     {"query": "кабель ВВГнг 4х2.5 200 метров", "exclude": []}
кабель 2     {"query": "кабель ВВГнг 4х2.5, 200 метров", "exclude": []}

На постороннем диалоге пример из промпта не копируется: сечение меняется на новое, длина переносится.

NEWS

⚡ Ассистент помнит характеристики из начала разговора

Если клиент назвал номинал, напряжение или тип контактов в первом сообщении, а потом уточнил что-то другое, ассистент больше не теряет эти параметры и подбирает позиции нужного размера.

Test plan

  • tests/unit/test_offer_query_builder.py — 9 passed
  • ruff check + ruff format --check — чисто
  • Стабильность промпта на прод-модели: 3/3 на целевом диалоге, 3/3 на контрольном
  • После деплоя: повторить диалог, убедиться, что предлагаются контакторы 18–25 А

🤖 Generated with Claude Code

…прос

Номинал, напряжение и тип контактов клиент называет один раз — в первом
сообщении. На уточнении «нужен промышленный тип» модель-нормализатор в
половине прогонов теряла их и возвращала просто «контактор промышленный»,
после чего поиск отдавал самые дешёвые контакторы на 6–12 А вместо
нужных 18–25 А.

Промпт теперь прямо требует переносить все названные ранее
характеристики, пока клиент их не отменил, и содержит пример такого
переноса. Проверено на прод-модели: 3/3 прогона сохраняют «20А 2НО 220В
50Гц»; на постороннем диалоге («кабель ВВГнг 3х2.5» → «давайте лучше
4х2.5») пример не копируется, сечение меняется, длина переносится.

## NEWS

⚡ **Ассистент помнит характеристики из начала разговора**

Если клиент назвал номинал, напряжение или тип контактов в первом
сообщении, а потом уточнил что-то другое, ассистент больше не теряет
эти параметры и подбирает позиции нужного размера.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ShaerWare
ShaerWare merged commit 7d18622 into main Aug 31, 2026
3 checks passed
@ShaerWare
ShaerWare deleted the local/fix/query-builder-carry-specs branch August 31, 2026 22:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant