Files
drhider/History/2026-07-12-sonnet-query-v4-hybrid.md
T

3.6 KiB
Raw Blame History

Запрос к Соннету — нумерация vs фейки для downstream LLM (2026-07-12)

Контекст

Я делаю сервис DrHider — обфускация документов. Находит ПДн → заменяет. После обфускации документы идут на дальнейшую LLM-обработку — сверка спецификаций (другой сервис contracts, извлекает типы/номера/даты/контрагентов через LLM).

Сейчас генерация фейков: Иванов И.И.Петров А.С., ООО «Ромашка»ООО «Спектр».

Проблема: для неизвестных типов (адреса, нестандартные ID) — character-class замена даёт абракадабру: ул. Стекольнаяиг. 8ц Лжчюсвхшбр. Downstream LLM не может это обработать.

Варианты замены

А. Чистая нумерация

Иванов И.И.Лицо_0042, ООО «Ромашка»Компания_0003, ул. ЛенинаАдрес_0015

Плюс: никакой абракадабры. Минус: LLM теряет контекст («Лицо_0042 заключил договор» — не понимает семантику).

Б. Фейки (сейчас)

Иванов И.И.Петров А.С., ООО «Ромашка»ООО «Спектр»

Плюс: LLM понимает роли. Минус: сложно (11 генераторов), ложное ощущение реальности, для неизвестных типов — абракадабра.

В. Гибрид: шаблон + номер

Иванов И.И.Иванов_5677, ООО «Ромашка»ООО_Технология_0034, ул. Стекольная, д.7ул_Ленина_0015, +7 (495) 789-41-35+7_495_000_0042, info@nubes.ruemail_0007@fake

Плюс: LLM видит что это человек/компания/адрес, номер гарантирует уникальность и обфускацию. Минус: всё равно нужны шаблоны для каждого типа.

Вопросы

  1. Какой вариант лучше для downstream LLM-обработки (извлечение контрагентов, дат, номеров)?
  2. Вариант В — достаточно ли LLM поймёт что Иванов_5677 это персональные данные?
  3. Для неизвестных типов — [Данные_NNNN] как fallback, ок?
  4. Глобальная нумерация (сквозная через все документы пакета) vs локальная (в рамках одного файла)?
  5. Стоит ли сохранять частичную структуру (например телефон +7_495_000_0042 сохраняет формат номера)?

Downstream задача (для контекста)

LLM в сервисе contracts получает текст документа и должна извлечь:

  • Контрагент («с кем договор»)
  • Номер и дату договора
  • Список услуг с ценами (таблица)

Промпт для contracts LLM (фрагмент):

Извлеки из текста: тип документа, номер, дату, контрагента.
Верни JSON: {"type":"договор","number":"...","date":"...","counterparty":"..."}