Privacy Filter - це Laravel-пакет, який виявляє приватні сутності: імена, електронні адреси та іншу персональну інформацію у довільному тексті. Він обгортає бінарний файл командного рядка privacy-filter.cpp - GGML-движок інференсу для моделей класифікації токенів privacy-filter від OpenAI - і надає результати через PHP API.
Класифікація тексту на сутності
Основна точка входу - метод entities(), який прогоняє модель через рядок і повертає екземпляри Entity. Кожна сутність містить свій тип, знайдений текст, початкове та кінцеве байтове зміщення, а також оцінку впевненості:
use DirectoryTree\PrivacyFilter\Facades\PrivacyFilter;
$entities = PrivacyFilter::entities('Contact John Doe at jdoe@example.com.');
foreach ($entities as $entity) {
echo $entity->type; // private_email
echo $entity->text; // jdoe@example.com
}
Оскільки зміщення є точними UTF-8 байтовими позиціями, ви можете прив'язати кожну виявлену сутність до її розташування в оригінальному тексті, замість того щоб покладатися лише на збіг рядків.
Пороги впевненості
Класифікації за замовчуванням використовують поріг впевненості 0.5. Ви можете підвищити або знизити його для кожного виклику, щоб збалансувати повноту охоплення та точність - вищий поріг повертає менше, але більш певних сутностей:
$entities = PrivacyFilter::entities(
text: 'Contact John Doe at jdoe@example.com.',
threshold: 0.75,
);
Редагування виявленого тексту
Пакет виявляє сутності, а те, що ви з ними робите - ваша справа. Процес редагування є операцією reduce над поверненими сутностями:
$redacted = collect($entities)->reduce(function (string $text, $entity) {
return str_replace($entity->text, '[redacted]', $text);
}, $text);
Фейкові класифікації в тестах
Запуск бінарного файлу та завантаження моделі в тестовому середовищі відбувається повільно, тому Privacy Filter постачається з методом fake(), який повертає заздалегідь визначені сутності без виклику бінарного файлу:
use DirectoryTree\PrivacyFilter\Entity;
use DirectoryTree\PrivacyFilter\Facades\PrivacyFilter;
PrivacyFilter::fake([
new Entity(type: 'private_email', start: 20, end: 36, score: 0.98),
]);
Ваш код під тестом отримає ці сутності так, ніби їх згенерувала модель.
Встановлення та налаштування
Встановіть пакет через Composer, потім запустіть інсталятор, щоб завантажити скомпільований бінарний файл для вашої операційної системи та необхідну GGUF-модель:
composer require directorytree/privacy-filter
php artisan privacy-filter:install
Попередньо зібрані бінарні файли для Linux, macOS (включно з ARM64) та Windows розповсюджуються через PrivacyFilterBinaries. Передайте параметр --force, щоб перезаписати існуючі файли.
Щоб налаштувати шлях до бінарного файлу, шлях до моделі, таймаут процесу, URL моделі або джерело релізу, опублікуйте конфігураційний файл:
php artisan vendor:publish --tag=privacy-filter-config
Рекомендації щодо продакшену
Кожна класифікація завантажує модель у пам'ять, тому пакет рекомендує запускати класифікації на виділених queue workers у продакшені, щоб зберігати передбачуване споживання пам'яті.
Вихідний код та документацію можна знайти на GitHub.