Security and moderation tools for the Jazzmine AI ecosystem
Project description
Jazzmine Security
Production-ready security and moderation toolkit for AI applications
Jazzmine Security provides a comprehensive suite of tools for protecting AI applications from malicious inputs, toxic outputs, and unsafe content. Built with performance in mind, it combines Python flexibility with Rust speed through optimized bindings.
Features
Input Moderation
- Jailbreak Detection: Identify and block prompt injection attacks
- Toxic Content Detection: Multi-class toxicity classification with SHAP explainability
- Batch Processing: High-throughput classification with GPU acceleration
- HuggingFace Integration: Load pre-trained models directly from the Hub
Output Moderation
- Response Validation: Ensure AI-generated content meets safety guidelines
- Chunk-based Analysis: Handle long-form content with intelligent chunking
- Confidence Scoring: Get detailed confidence metrics for each prediction
Content Sanitization
- PDF Sanitization: Remove JavaScript, embedded files, and malicious content
- CSV Sanitization: Prevent formula injection and XSS attacks
- HTML Sanitization: Strip dangerous tags and attributes while preserving content
Performance
- Rust-Powered: Critical text processing operations accelerated with Rust
- GPU Support: Automatic CUDA acceleration when available
- Async Support: Non-blocking operations for high-concurrency environments
Installation
From PyPI (Recommended)
pip install jazzmine-security
With GPU Support
pip install jazzmine-security torch --index-url https://download.pytorch.org/whl/cu121
From Source
git clone https://github.com/yourorg/jazzmine-security.git
cd jazzmine-security
pip install .
Quick Start
Input Moderation
from jazzmine.security import JazzmineInputModerator
from jazzmine.logging import ConsoleLogger
# Initialize with HuggingFace model
logger = ConsoleLogger()
moderator = JazzmineInputModerator(
"nourmedini1/jazzmine-input-safeguard-v2",
logger=logger
)
# Classify single input
text = "How can I hack into a system?"
label, confidence = moderator.classify(text)
if label == "LABEL_1": # Toxic/Jailbreak detected
print(f"Warning: Blocked - Confidence {confidence:.2%}")
else:
print(f"Safe: Confidence {confidence:.2%}")
# Batch processing
requests = [
{"text": "Tell me a joke"},
{"text": "How to bypass security"},
{"text": "What's the weather like?"}
]
results = moderator.classify_batch(requests, batch_size=32)
Output Moderation
from jazzmine.security import JazzmineOutputModerator
# Initialize output validator
output_mod = JazzmineOutputModerator(
"nourmedini1/jazzmine-response-validator-v2"
)
# Validate AI response
ai_response = "Here's how to create a secure password..."
label, confidence = output_mod.classify(ai_response)
if label == "LABEL_1": # Unsafe content
print("Response blocked due to safety concerns")
else:
print("Response approved")
Content Sanitization
from jazzmine.security import (
JazzminePDFSanitizer,
JazzmineCSVSanitizer,
JazzmineHTMLSanitizer
)
# Sanitize PDF
pdf_sanitizer = JazzminePDFSanitizer()
safe_pdf = pdf_sanitizer.sanitize("document.pdf")
# Sanitize CSV (prevent formula injection)
csv_sanitizer = JazzmineCSVSanitizer()
safe_csv = csv_sanitizer.sanitize("data.csv")
# Sanitize HTML
html_sanitizer = JazzmineHTMLSanitizer()
safe_html = html_sanitizer.sanitize("<script>alert('xss')</script><p>Safe content</p>")
# Output: "<p>Safe content</p>"
Toxicity Detection with Explainability
from jazzmine.security.toxic_content_detector import JazzmineToxicityDetector
# Initialize detector
detector = JazzmineToxicityDetector()
# Train on your data
detector.train(
csv_path="training_data.csv",
text_column="text",
label_column="is_toxic"
)
# Make predictions
text = "This is a test message"
prediction = detector.predict(text)
print(f"Toxic: {prediction['is_toxic']}")
print(f"Confidence: {prediction['confidence']:.2%}")
# Get SHAP explanations
explanation = detector.explain(text, num_samples=100)
print(f"Top contributing features: {explanation['top_features']}")
Architecture
Jazzmine Security is built with a hybrid Python-Rust architecture:
- Python Layer: High-level APIs, model management, ML workflows
- Rust Layer: Text normalization, TF-IDF extraction, semantic analysis
- HuggingFace Integration: Seamless model loading and caching
- PyO3 Bindings: Zero-copy data transfer between Python and Rust
Models
Pre-trained Models on HuggingFace
-
Input Safeguard:
nourmedini1/jazzmine-input-safeguard-v2- Detects jailbreaks, prompt injections, and malicious inputs
- Fine-tuned on diverse attack patterns
-
Response Validator:
nourmedini1/jazzmine-response-validator-v2- Validates AI-generated content for safety
- Identifies unsafe, biased, or harmful outputs
Custom Models
You can train and use your own models:
from jazzmine.security.toxic_content_detector import JazzmineToxicityDetector
detector = JazzmineToxicityDetector()
detector.train("your_data.csv", text_column="text", label_column="label")
detector.save("my_custom_model")
# Later use
detector = JazzmineToxicityDetector()
detector.load("my_custom_model")
Configuration
Logging Integration
from jazzmine.logging import BaseLogger, RequestContext
class MyLogger(BaseLogger):
def info(self, message: str, **kwargs):
print(f"[INFO] {message}: {kwargs}")
moderator = JazzmineInputModerator(
"nourmedini1/jazzmine-input-safeguard-v2",
logger=MyLogger()
)
GPU Configuration
import torch
# Check GPU availability
if torch.cuda.is_available():
print(f"Using GPU: {torch.cuda.get_device_name(0)}")
else:
print("Using CPU")
# Models automatically use GPU when available
Chunking Configuration
moderator = JazzmineInputModerator("model-name")
# Adjust chunk size for long texts
moderator.chunk_size = 512 # tokens
moderator.overlap = 50 # token overlap between chunks
Testing
# Run all tests
pytest tests/
# Run with coverage
pytest --cov=jazzmine.security tests/
# Run specific test file
pytest tests/test_input_moderator.py
Performance
Benchmark on NVIDIA RTX 3090:
| Operation | Throughput | Latency (p50) | Latency (p99) |
|---|---|---|---|
| Input Moderation (batch=32) | 450 texts/sec | 71ms | 120ms |
| Output Validation (batch=32) | 420 texts/sec | 76ms | 130ms |
| Toxicity Detection | 800 texts/sec | 1.2ms | 5ms |
| PDF Sanitization | 15 docs/sec | 65ms | 150ms |
Contributing
We welcome contributions! Please see our Contributing Guide for details.
# Setup development environment
git clone https://github.com/yourorg/jazzmine-security.git
cd jazzmine-security
pip install -e ".[dev]"
# Build Rust components
cd bindings
maturin develop --release
# Run tests
pytest tests/
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built on Transformers by HuggingFace
- Rust bindings powered by PyO3
- Explainability via SHAP
Support
- Documentation: https://jazzmine-security.readthedocs.io
- Issues: GitHub Issues
- Email: mohamednour.medini@etudiant-isi.utm.tn
Roadmap
- Multi-language support (French, Arabic, Spanish)
- Real-time monitoring dashboard
- Additional sanitizers (JSON, XML, Markdown)
- Model distillation for edge deployment
- Integration with popular LLM frameworks (LangChain, LlamaIndex)
Made with care by the Jazzmine Team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jazzmine_security-0.1.10.tar.gz.
File metadata
- Download URL: jazzmine_security-0.1.10.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38721c96ca769d485566a4457368c85172e67b0c29a2e208803b7ca66beff27c
|
|
| MD5 |
9758f6a02355b1f04089eb62bf75aac2
|
|
| BLAKE2b-256 |
cc39c80ca478e9541ab50c4b1021aec5467bb68bac11d688d14bf75650d5b57b
|
File details
Details for the file jazzmine_security-0.1.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 4.0 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cba772959766ae15ab304c1e402761b7c3b4ab1cb464ea92484a06fbcbda8e9f
|
|
| MD5 |
806a8eeb0681a7b211475cbb25e67b65
|
|
| BLAKE2b-256 |
55790cf3ed03324b94cbd414d4b0b1ffe5566484bedebdd99ea3ca0bf963566c
|
File details
Details for the file jazzmine_security-0.1.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.0 MB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32e6e567e2524939c7eeb8b53422cffa89d9b49b8535cce58621f2292121e41d
|
|
| MD5 |
88839609cd5252e8879b235cb35db511
|
|
| BLAKE2b-256 |
b39c63a583ff1752355a404bed70606d5b58e3f597c057ccf6727e162880d785
|
File details
Details for the file jazzmine_security-0.1.10-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd0a3ccf3b37aecd9ffb08ea000c8549c81fa4cc8e8358ec7f47976c5ee6dd81
|
|
| MD5 |
5cf8cdcf49b41a7a68614fbaab5128ea
|
|
| BLAKE2b-256 |
e3801e5e45ca8d1ef9159159f73b24b5f0171226d810612aa6c1a1592926dbe6
|
File details
Details for the file jazzmine_security-0.1.10-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f615ebad62362fafcadad0da7d64ad50ae97b773c6e52725da36965116601df
|
|
| MD5 |
34878d67116b44d249231acb7eff1dbe
|
|
| BLAKE2b-256 |
d253c2f244a1297402365b8f54c5dded10dd0ca818dae0974326fccbf55f2b91
|
File details
Details for the file jazzmine_security-0.1.10-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26fd59811ad563b876bc835144a1b7cdd97c6231750e9ee13077977c83381720
|
|
| MD5 |
e9bff87b5e2b311a164e4868038b820c
|
|
| BLAKE2b-256 |
e7a95727549449a17c93b556cd47aaf0e42fe1aa97a5967657be01b2d298475f
|
File details
Details for the file jazzmine_security-0.1.10-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
896cb13b3b912c33f8cfb24c18326f536c21c458e46a536092ea5947f2c44236
|
|
| MD5 |
f1b010d89fe9c37f70828b6191cfefd0
|
|
| BLAKE2b-256 |
468e5f472dd0c96b3eb978298f01b39cdd398b5ec91c02bfe6f5ea90c7cacbf0
|
File details
Details for the file jazzmine_security-0.1.10-cp38-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: jazzmine_security-0.1.10-cp38-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.8+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
262e160b7613388662bd785829d69ebfe76ed7d5eaec872c2476627d81ac73aa
|
|
| MD5 |
a9cec1c17c0e1c671699e64bf62996ac
|
|
| BLAKE2b-256 |
4bbe9dbbc1da437a476f2c9d2c04c846a246a540ac2c5bb2fba169f52e0fae84
|