# Ответ Соннета v2 — улучшение LLM-промпта (2026-07-12)

## Q1. Как научить LLM определять Исполнителя из контекста?

**Двухфазная инструкция в промпте:**
- STEP 1: определи кто «Исполнитель» — его данные НЕ трогать
- STEP 2: найди всё остальное ПДн

Убирает хардкод `НУБЕС` из кода. Работает на любом договоре.

## Q2. Точная классификация типов

Вместо `"Invent the type label yourself"` → **фиксированный список:**
`person_name, company, phone, email, address, inn, kpp, ogrn, bik, passport, contract_number, bank_account, other_id`

Если сомневаешься — НЕ включай.

## Q3. Примеры что НЕ является ПДн

Обязательно добавить блок:
```
NOT PII:
- Юридические роли: Исполнитель, Заказчик, Стороны
- Термины договора: Услуги, Приложение, Договор, НДС
- Должности: Генеральный директор
- Сама компания-Исполнитель
```

## Q4. Передавать LLM уже найденное regex'ом

`scan_llm_ner` получает `mapping.keys()` → промпт: "Already captured (skip these): ..."
Исключает дублирование, экономит токены.

## Q5. Язык промпта

Гибрид: структурные инструкции на английском, NOT PII и роли — на русском.

---

## План реализации (scanner.py)

1. Убрать хардкод `НУБЕС` из `scan_regex`
2. `scan_llm_ner` — передавать `mapping.keys()` как "Already captured"
3. Новый промпт:
   - Фиксированный список типов
   - Блок NOT PII (русский)
   - Двухфазная инструкция (STEP 1: Исполнитель, STEP 2: остальное)
