# Ответ Соннета 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: остальное)