Download agentic_workflow/pii.py from grazz7/RAG_Chatbot: direct link, hf CLI and curl.
- Browser
- Download file 1.3 kB
-
https://huggingface.co/grazz7/RAG_Chatbot/resolve/main/agentic_workflow/pii.py
- Command line
-
hf download hf://grazz7/RAG_Chatbot/agentic_workflow/pii.py
-
curl -L -o pii.py https://huggingface.co/grazz7/RAG_Chatbot/resolve/main/agentic_workflow/pii.py
1.3 kB
| from presidio_analyzer import AnalyzerEngine, PatternRecognizer, Pattern | |
| from presidio_analyzer.nlp_engine import NlpEngineProvider | |
| from presidio_anonymizer import AnonymizerEngine | |
| _provider = NlpEngineProvider(nlp_configuration={ | |
| "nlp_engine_name": "spacy", | |
| "models": [{"lang_code": "en", "model_name": "en_core_web_lg"}] | |
| }) | |
| analyzer = AnalyzerEngine(nlp_engine=_provider.create_engine()) | |
| anonymizer = AnonymizerEngine() | |
| analyzer.registry.add_recognizer(PatternRecognizer( | |
| supported_entity="ACCOUNT_NUMBER", | |
| patterns=[Pattern(name="account_number", regex=r"\d{3}-\d{3}-\d{3}", score=0.8)], | |
| context=["account", "acct", "num", "number", "no.", "#"] | |
| )) | |
| _ENTITIES = ["ACCOUNT_NUMBER", "PERSON", "PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD"] | |
| # 2 funcs | |
| def check_pii(text: str) -> bool: | |
| """Returns True if PII is detected — used by planner to block the query.""" | |
| results = analyzer.analyze(text=text, language="en", entities=_ENTITIES) | |
| return len(results) > 0 | |
| def scrub_pii(text: str) -> str: | |
| """Replaces PII with placeholders — use this if you want to proceed with a sanitised query instead of blocking.""" | |
| results = analyzer.analyze(text=text, language="en", entities=_ENTITIES) | |
| return anonymizer.anonymize(text=text, analyzer_results=results).text |