Skip to main content

Security and moderation tools for the Jazzmine AI ecosystem

Project description

Jazzmine Security

Production-ready security and moderation toolkit for AI applications

Python 3.10+ PyPI version License: MIT

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

Support

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jazzmine_security-0.1.11.tar.gz (2.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

jazzmine_security-0.1.11-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

jazzmine_security-0.1.11-cp38-abi3-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.8+Windows x86-64

jazzmine_security-0.1.11-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

jazzmine_security-0.1.11-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

jazzmine_security-0.1.11-cp38-abi3-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

jazzmine_security-0.1.11-cp38-abi3-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file jazzmine_security-0.1.11.tar.gz.

File metadata

  • Download URL: jazzmine_security-0.1.11.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for jazzmine_security-0.1.11.tar.gz
Algorithm Hash digest
SHA256 1a5c700c9d69311b5978e152806d2034344861f786ce35141f9a28c5cde2af79
MD5 37fefaacc3728cce93adf098126be85e
BLAKE2b-256 e09a974eb2035101098c12a0aae84203f403c48b7cf72efdd2ce91967ee8765e

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ffdedf4b6987ec70dc7b1e2e41516d980568471cad37fabdf0e90bfacdd480d
MD5 c1e0bf2e81235c1b1b56a1205fbdf621
BLAKE2b-256 3bcf7c896b83a5226cf380b8a78676725e83e605f9c464ec6b4e407742b0a9b9

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7feabc9fb57130af0563bbee9c2d215b89987293092b6f94c6a0dd843bb9a899
MD5 24abf73df5464b425a0f3f2b306a4c10
BLAKE2b-256 0c048e55e888b9551d251ffd690fba39e1786dc474cc62739b9ac659b7dfdbe7

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 891fc053e4856ce0d2cf2fbf5f18b877e2d088e691c2beabd87a483bcc153cf6
MD5 d63963a97235b13d39679feef506d768
BLAKE2b-256 403df858d5edc86e149ca98a74821b2301b7193967400a8e3190bb8059b532c3

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be8e39a42c3b92e8f8253b27b116ab8a2c81780aeb9d5e413c03e2d7a965698c
MD5 dd70481d1c5c3e4897fd352ed5d12cb1
BLAKE2b-256 8c3b7775c70b8f6c88513825b5e11f5794428f74038872baf49f5f0cee4cdc65

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd48d1f2aaa0026a08352f85822ddd9d0b214a4024e4b99a04bcc3824d2f94d6
MD5 3b85637bb4794c9cc368ab6e0af66c1c
BLAKE2b-256 700bc358b028a3f26a9a9120115a08cc716d455355884e70d9ff6d46dd8cde05

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c62c674c02cf814fe052dad53ba42b746ffc6d02318d7ace14c758c6ec90f5f
MD5 a92091e34648ee73e9004258251eb77c
BLAKE2b-256 6704f3176754cff226667f01f408186c5c10731620628079a28dd3b4a77b29b2

See more details on using hashes here.

File details

Details for the file jazzmine_security-0.1.11-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jazzmine_security-0.1.11-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f26f1af32765cba0aa01d3627b009dbc58ab7a9bc699863812735afc0704a09
MD5 5133fa6b974e73448712fce8266dfc49
BLAKE2b-256 8afd073be5befc730c856f95abeab36743592ad4b55883bd66086b67cf44dec8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page