docs: запрос Sonnet — «токены» заменены на «коды замены»
Deploy drhider / validate (push) Waiting to run

This commit is contained in:
2026-07-13 12:35:16 +04:00
parent 70226d8c39
commit 8c59c4b7e0
@@ -4,11 +4,11 @@
--- ---
**Задача:** Найти причину расхождения между ожидаемыми токенами и реальными заменами. **Задача:** Найти причину расхождения между ожидаемыми кодами замен и реальными заменами.
## Ожидаемое поведение ## Ожидаемое поведение
`_next_token()` в `drhider/scanner.py` генерирует токены формата: `_next_token()` в `drhider/scanner.py` генерирует коды замен формата:
- `Технология_0001`, `Прогресс_0002` (для компаний) - `Технология_0001`, `Прогресс_0002` (для компаний)
- `+7_000_000_0001` (для телефонов) - `+7_000_000_0001` (для телефонов)
- `email_0001` (для email) - `email_0001` (для email)
@@ -19,15 +19,15 @@
``` ```
тип_данных,оригинал,замена тип_данных,оригинал,замена
phone,+7 (495) 789-41-35,+7 (495) 906-87-80 ← НЕ токен, реальный номер phone,+7 (495) 789-41-35,+7 (495) 906-87-80 ← НЕ код замены, реальный номер
email,info@nubes.ru,ypiorej@company.local ← НЕ токен, реальный email email,info@nubes.ru,ypiorej@company.local ← НЕ код замены, реальный email
company,ЗАО ****XXX****001****,АО «Прогресс» ← НЕ токен, реальное название company,ЗАО ****XXX****001****,АО «Прогресс» ← НЕ код замены, реальное название
company,ЗАО XXX001,ООО «Альянс» ← НЕ токен, реальное название company,ЗАО XXX001,ООО «Альянс» ← НЕ код замены, реальное название
inn_ul,ИНН 9706005293,ИНН 1846691249 ← НЕ токен, реальный ИНН inn_ul,ИНН 9706005293,ИНН 1846691249 ← НЕ код замены, реальный ИНН
kpp,КПП 772401001,КПП 350443068 ← НЕ токен, реальный КПП kpp,КПП 772401001,КПП 350443068 ← НЕ код замены, реальный КПП
ks,Кор/сч 30101810400000000225,Кор/сч 30101201490272090211 ← НЕ токен ks,Кор/сч 30101810400000000225,Кор/сч 30101201490272090211 ← НЕ код замены
ogrn,ОГРН 1207700098759,ОГРН 1048672318430 ← НЕ токен ogrn,ОГРН 1207700098759,ОГРН 1048672318430 ← НЕ код замены
company,ООО "НУБЕС",ООО «Спектр» ← НЕ токен company,ООО "НУБЕС",ООО «Спектр» ← НЕ код замены
text,Исполнителем Заказчику Сторонами,Кузнецов О.В. text,Исполнителем Заказчику Сторонами,Кузнецов О.В.
text,"Обязанности Заказчика\nСвоевременно",Степанов А.В. text,"Обязанности Заказчика\nСвоевременно",Степанов А.В.
text,"Обязанности Исполнителя\nОказывать",Петров П.Е. text,"Обязанности Исполнителя\nОказывать",Петров П.Е.
@@ -36,7 +36,7 @@ text,"Ответственность Исполнителя\nИсполните
company,ПАО Сбербанк,АО «Формат» company,ПАО Сбербанк,АО «Формат»
``` ```
**Ни одного токена формата `XXX_0000` в колонке «замена».** **Ни одного кода замены формата `XXX_0000` в колонке «замена».**
## Реальный результат — `TMP/договор-XXX001-03700_obfuscated.md` (первые строки) ## Реальный результат — `TMP/договор-XXX001-03700_obfuscated.md` (первые строки)
@@ -59,7 +59,7 @@ company,ПАО Сбербанк,АО «Формат»
**Прочитать для контекста:** **Прочитать для контекста:**
5. `TMP/mapping.csv` — полный результат 5. `TMP/mapping.csv` — полный результат
6. `TMP/договор-XXX001-03700_obfuscated.md` — обфусцированный файл 6. `TMP/договор-XXX001-03700_obfuscated.md` — обфусцированный файл
7. `TMP/примеры_договоров_для_ИИ/договор-XXX001-03700.docx` — оригинал (для сверки адресов/имён) 7. `TMP/примеры_договоров_для_ИИ/договор-XXX001-03700.docx` — оригинал (для сверки)
**Не лезть:** `builder.py`, `extractor.py`, `replacer.py`, `session.py`, `templates/`, docs/, History/. **Не лезть:** `builder.py`, `extractor.py`, `replacer.py`, `session.py`, `templates/`, docs/, History/.
@@ -84,7 +84,7 @@ def _next_token(entity_type, counters):
mapping[original] = _next_token(entity_type, counters) mapping[original] = _next_token(entity_type, counters)
``` ```
Всегда вызывает `_next_token`. Результат должен быть токеном. Всегда вызывает `_next_token`. Результат должен быть кодом замены.
### 3. `scanner.py` — `scan_llm_ner()` (стр. 109-179) ### 3. `scanner.py` — `scan_llm_ner()` (стр. 109-179)
@@ -92,7 +92,7 @@ mapping[original] = _next_token(entity_type, counters)
mapping[val] = _next_token(ent_type, counters) mapping[val] = _next_token(ent_type, counters)
``` ```
Тоже вызывает `_next_token`. Результат должен быть токеном. Тоже вызывает `_next_token`. Результат должен быть кодом замены.
### 4. `obfuscator.py` — порядок вызова (стр. 86-92) ### 4. `obfuscator.py` — порядок вызова (стр. 86-92)