84 lines
4.6 KiB
Markdown
84 lines
4.6 KiB
Markdown
# Запрос к Соннету — анализ результатов 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]}
|
||
```
|