Top Secret: Automatically filter sensitive information
Top Secret — новая open-source библиотека от thoughtbot для удаления чувствительных данных из произвольного текста.
Проблема: регулярки не ловят всё (имена, адреса, карты). Решение: смесь regex и NER (распознавание именованных сущностей) через гем mitie-ruby.
Как работает:
TopSecret::Text.filter
заменяет сущности на токены[PERSON_1]
,[LOCATION_1]
и возвращаетmapping
.- После ответа LLM вызываем
TopSecret::FilteredText.restore
, чтобы вернуть реальные значения.
Пример:
input = "Ralph lives in Boston."
filtered = TopSecret::Text.filter(input)
#=> "[PERSON_1] lives in [LOCATION_1]."
mapping = { PERSON_1: "Ralph", LOCATION_1: "Boston" }
response = "Hi [PERSON_1]! How is the weather in [LOCATION_1]?"
TopSecret::FilteredText.restore(response, mapping: mapping)
#=> "Hi Ralph! How is the weather in Boston?"
Подходит для чат-ботов, где нужно скрыть персональные данные, но сохранить контекст.
Код и демо: GitHub и стрим.