v3.2.0: новый LLM-промпт (STEP 1/2, фикс. типы, NOT PII, already_found), убран хардкод НУБЕС
Deploy drhider / validate (push) Waiting to run

This commit is contained in:
2026-07-12 11:11:43 +04:00
parent 0c2b636d31
commit 5c426cb037
18 changed files with 682 additions and 14 deletions
+83
View File
@@ -0,0 +1,83 @@
# Запрос к Соннету — анализ результатов DrHider v3 (2026-07-12)
## Контекст
DrHider v3 — обфускация документов через LLM + Markdown. Результаты уже есть.
Покажи Соннету реальный mapping.csv и фрагмент обфусцированного .md.
## Промпт для Соннета
Вот текущий LLM-промпт в scanner.py:
```
You are a PII detector. Find ALL sensitive or private information in the text below.
Return a JSON array. Each item must have:
- "type": short snake_case label describing the entity
(e.g. person_name, phone, email, address, inn, company, passport,
contract_number, employee_id, bank_account — WHATEVER you see)
- "value": the EXACT string from the text (copy verbatim)
Rules:
- Copy value VERBATIM — same spaces, punctuation, case as in text
- If same value appears multiple times — include only once
- Invent the type label yourself based on what you see
- Return ONLY the JSON array, no other text, no markdown wrapping
```
Результат mapping.csv (первые 10 строк):
```csv
тип_данных,оригинал,замена
text,"""****XXX****001****""","""****IPD****084****"""
text,"""НУБЕС""","""ФИОЩЦ"""
phone,+7 (495) 789-41-35,+7 (343) 986-75-93
email,info@nubes.ru,bxkuno@company.local
company,"ЗАО ""****XXX****001****""",ООО «Спектр»
company,"ЗАО ""XXX001""",ЗАО «Меридиан»
inn_ul,ИНН 9706005293,ИНН 9325731296
text,Исполнителем Заказчику Сторонами,Морозов М.П.
kpp,КПП 772401001,КПП 051543039
```
Фрагмент обфусцированного .md:
```markdown
**ООО «Спектр»** именуемое в дальнейшем "Заказчик", в лице Генерального директора ФИО,
действующего на основании Устава, и **ООО **"**НУБЕС**"**, именуемое в дальнейшем
"Исполнитель", в лице Генерального директора Степанов Н.М.
```
## Проблемы
1. **Контекстная роль Исполнителя** — сервис должен быть УНИВЕРСАЛЬНЫМ, без хардкода конкретных названий. LLM должна из контекста понимать: «вот эта компания — Исполнитель (сторона договора, оказывающая услуги), её НЕ заменяем». Как научить LLM этому без указания конкретных имён?
2. **Тип "text" для многих сущностей** — LLM не всегда правильно определяет тип (например, "Исполнителем Заказчику Сторонами" — это не ПДн, а просто текст договора)
3. **Regex находит структурированное (ИНН, телефон), LLM — остальное** — есть дублирование
## Вопросы
1. Как научить LLM определять Исполнителя из контекста договора (без хардкода имён) и НЕ заменять его данные?
2. Как заставить LLM точнее определять тип сущности (не "text" для всего подряд)?
3. Нужно ли добавить в промпт примеры того что НЕ является ПДн (юридические термины, роли сторон)?
4. Стоит ли передавать LLM уже найденное regex'ом чтобы избежать дублирования?
5. Правильно ли что промпт на английском, а документы на русском?
## Текущий промпт (полностью)
```
You are a PII (Personally Identifiable Information) detector.
Find ALL sensitive or private information in the text below.
Return a JSON array. Each item must have:
- "type": short snake_case label describing the entity
(e.g. person_name, phone, email, address, inn, company, passport,
contract_number, employee_id, bank_account — WHATEVER you see)
- "value": the EXACT string from the text (copy verbatim)
Rules:
- Copy value VERBATIM — same spaces, punctuation, case as in text
- If same value appears multiple times — include only once
- Invent the type label yourself based on what you see
- Return ONLY the JSON array, no other text, no markdown wrapping
Text:
{combined[:8000]}
```