v3.2.0: новый LLM-промпт (STEP 1/2, фикс. типы, NOT PII, already_found), убран хардкод НУБЕС
Deploy drhider / validate (push) Waiting to run
Deploy drhider / validate (push) Waiting to run
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Ответ Соннета 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: остальное)
|
||||
Reference in New Issue
Block a user