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