ai-audit-sdk


Nameai-audit-sdk JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/aiaudit/python-sdk
SummarySDK for logging AI/ML decisions with compliance tracking
upload_time2025-09-09 22:39:08
maintainerNone
docs_urlNone
authorAI Audit Trail
requires_python>=3.7
licenseMIT
keywords ai audit compliance gdpr ai-act logging ml openai
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # AI Audit Trail SDK - Python

Drop-in SDK for logging AI/ML decisions with compliance tracking. Get GDPR and EU AI Act compliant audit trails in under 15 minutes.

## Installation

```bash
pip install ai-audit-sdk
```

## Quick Start

```python
from ai_audit_sdk import AuditLogger
import openai

```python
# Initialize the logger with your API key
logger = AuditLogger(api_key="your_api_key")
```

For development and testing, use your sandbox API key:
```python
# Development/Testing with sandbox tenant
logger = AuditLogger(api_key="your_sandbox_api_key")
```

# Your existing OpenAI code
client = openai.OpenAI()
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello, world!"}]
)

# Log the decision for compliance
logger.log_decision(
    input_text="Hello, world!",
    output_text=response.choices[0].message.content,
    model_name="gpt-4",
    metadata={
        "user_id": "user123",
        "session_id": "session456"
    }
)
```

## Features

- **Asynchronous Logging**: Won't slow down your application
- **Compliance Ready**: GDPR Article 22 and EU AI Act support
- **Multi-Model Support**: Works with any AI/ML model
- **Secure**: API key authentication with encrypted transmission
- **Reliable**: Built-in error handling and timeout management

## API Reference

### AuditLogger

Main class for logging AI decisions.

```python
logger = AuditLogger(api_key="your_key")
```

**Production:**
```python
logger = AuditLogger(api_key="prod_api_key_xxx")
```

**Development/Testing:**
```python
logger = AuditLogger(api_key="sandbox_api_key_xxx")
```

> **Note**: All traffic goes through the production infrastructure at `https://explainableai.azurewebsites.net`. Tenant isolation is handled via API keys, not URLs.

#### Methods

##### `log_decision(input_text, output_text, ...)`

Log an AI decision asynchronously (recommended).

```python
logger.log_decision(
    input_text="The input prompt",
    output_text="The AI response",
    model_name="gpt-4",  # optional, defaults to 'unknown'
    metadata={  # optional
        "user_id": "user123",
        "session_id": "session456",
        "tags": ["production", "chat"]
    },
    confidence=0.95,  # optional, 0.0 to 1.0
    response_time=1200,  # optional, in milliseconds
    provider="openai",  # optional
    model_version="2024-02-01",  # optional
    risk_level="low",  # optional: 'low', 'medium', 'high'
    prompt_tokens=100,  # optional
    completion_tokens=50,  # optional
    total_tokens=150,  # optional
    cost_micros=1000,  # optional, cost in millionths of currency unit
    external_ref="req_123",  # optional, your internal reference
    data_subject_id="user_123",  # optional, for GDPR compliance
    lawful_basis="consent",  # optional, GDPR lawful basis
    automated_decision=True,  # optional, GDPR Article 22
    redact_pii=False,  # optional, redact PII from stored data
    priority="normal"  # optional: 'low', 'normal', 'high'
)
```

Log an AI decision asynchronously (recommended).

**Parameters:**
- `input_text` (str): The input prompt or data
- `output_text` (str): The AI model's output
- `model_name` (str): Name of the AI model used
- `metadata` (dict): Additional context (user_id, session_id, etc.)
- `confidence` (float): Model confidence score (0.0 to 1.0)
- `response_time` (int): Response time in milliseconds

##### `log_decision_sync(...)` 

Same as `log_decision()` but blocks until complete. Returns `True` if successful.

### Simple Function

For one-off logging:

```python
from ai_audit_sdk import log_ai_decision

log_ai_decision(
    api_key="your_key",
    input_text="prompt",
    output_text="response",
    model_name="gpt-4"
)
```

## Configuration

Set your API key as an environment variable:

```bash
export AI_AUDIT_API_KEY="your_api_key"
```

Then use it in your code:

```python
import os
from ai_audit_sdk import AuditLogger

logger = AuditLogger(api_key=os.getenv("AI_AUDIT_API_KEY"))
```

## Error Handling

The SDK uses fire-and-forget async logging by default. Errors are logged to stdout but won't crash your application.

For critical applications, use synchronous logging:

```python
success = logger.log_decision_sync(input_text, output_text)
if not success:
    # Handle logging failure
    print("Failed to log decision")
```

## Examples

### OpenAI Integration

```python
import openai
from ai_audit_sdk import AuditLogger

logger = AuditLogger(api_key="your_audit_key")
client = openai.OpenAI(api_key="your_openai_key")

def get_ai_response(prompt, user_id):
    start_time = time.time()
    
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    
    response_time = int((time.time() - start_time) * 1000)
    
    # Log for compliance
    logger.log_decision(
        input_text=prompt,
        output_text=response.choices[0].message.content,
        model_name="gpt-4",
        metadata={"user_id": user_id},
        response_time=response_time
    )
    
    return response.choices[0].message.content
```

### Context Manager

```python
with AuditLogger(api_key="your_key") as logger:
    logger.log_decision("input", "output", "model")
    # Logger automatically closes when exiting the context
```

## License

MIT License

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aiaudit/python-sdk",
    "name": "ai-audit-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "AI Audit Trail <support@explainable-ai.dev>",
    "keywords": "ai, audit, compliance, gdpr, ai-act, logging, ml, openai",
    "author": "AI Audit Trail",
    "author_email": "AI Audit Trail <support@explainable-ai.dev>",
    "download_url": "https://files.pythonhosted.org/packages/a3/20/088adc758dce689259154648f5db6dcc526be17c604055bd5a648c90b915/ai_audit_sdk-1.0.0.tar.gz",
    "platform": null,
    "description": "# AI Audit Trail SDK - Python\n\nDrop-in SDK for logging AI/ML decisions with compliance tracking. Get GDPR and EU AI Act compliant audit trails in under 15 minutes.\n\n## Installation\n\n```bash\npip install ai-audit-sdk\n```\n\n## Quick Start\n\n```python\nfrom ai_audit_sdk import AuditLogger\nimport openai\n\n```python\n# Initialize the logger with your API key\nlogger = AuditLogger(api_key=\"your_api_key\")\n```\n\nFor development and testing, use your sandbox API key:\n```python\n# Development/Testing with sandbox tenant\nlogger = AuditLogger(api_key=\"your_sandbox_api_key\")\n```\n\n# Your existing OpenAI code\nclient = openai.OpenAI()\nresponse = client.chat.completions.create(\n    model=\"gpt-4\",\n    messages=[{\"role\": \"user\", \"content\": \"Hello, world!\"}]\n)\n\n# Log the decision for compliance\nlogger.log_decision(\n    input_text=\"Hello, world!\",\n    output_text=response.choices[0].message.content,\n    model_name=\"gpt-4\",\n    metadata={\n        \"user_id\": \"user123\",\n        \"session_id\": \"session456\"\n    }\n)\n```\n\n## Features\n\n- **Asynchronous Logging**: Won't slow down your application\n- **Compliance Ready**: GDPR Article 22 and EU AI Act support\n- **Multi-Model Support**: Works with any AI/ML model\n- **Secure**: API key authentication with encrypted transmission\n- **Reliable**: Built-in error handling and timeout management\n\n## API Reference\n\n### AuditLogger\n\nMain class for logging AI decisions.\n\n```python\nlogger = AuditLogger(api_key=\"your_key\")\n```\n\n**Production:**\n```python\nlogger = AuditLogger(api_key=\"prod_api_key_xxx\")\n```\n\n**Development/Testing:**\n```python\nlogger = AuditLogger(api_key=\"sandbox_api_key_xxx\")\n```\n\n> **Note**: All traffic goes through the production infrastructure at `https://explainableai.azurewebsites.net`. Tenant isolation is handled via API keys, not URLs.\n\n#### Methods\n\n##### `log_decision(input_text, output_text, ...)`\n\nLog an AI decision asynchronously (recommended).\n\n```python\nlogger.log_decision(\n    input_text=\"The input prompt\",\n    output_text=\"The AI response\",\n    model_name=\"gpt-4\",  # optional, defaults to 'unknown'\n    metadata={  # optional\n        \"user_id\": \"user123\",\n        \"session_id\": \"session456\",\n        \"tags\": [\"production\", \"chat\"]\n    },\n    confidence=0.95,  # optional, 0.0 to 1.0\n    response_time=1200,  # optional, in milliseconds\n    provider=\"openai\",  # optional\n    model_version=\"2024-02-01\",  # optional\n    risk_level=\"low\",  # optional: 'low', 'medium', 'high'\n    prompt_tokens=100,  # optional\n    completion_tokens=50,  # optional\n    total_tokens=150,  # optional\n    cost_micros=1000,  # optional, cost in millionths of currency unit\n    external_ref=\"req_123\",  # optional, your internal reference\n    data_subject_id=\"user_123\",  # optional, for GDPR compliance\n    lawful_basis=\"consent\",  # optional, GDPR lawful basis\n    automated_decision=True,  # optional, GDPR Article 22\n    redact_pii=False,  # optional, redact PII from stored data\n    priority=\"normal\"  # optional: 'low', 'normal', 'high'\n)\n```\n\nLog an AI decision asynchronously (recommended).\n\n**Parameters:**\n- `input_text` (str): The input prompt or data\n- `output_text` (str): The AI model's output\n- `model_name` (str): Name of the AI model used\n- `metadata` (dict): Additional context (user_id, session_id, etc.)\n- `confidence` (float): Model confidence score (0.0 to 1.0)\n- `response_time` (int): Response time in milliseconds\n\n##### `log_decision_sync(...)` \n\nSame as `log_decision()` but blocks until complete. Returns `True` if successful.\n\n### Simple Function\n\nFor one-off logging:\n\n```python\nfrom ai_audit_sdk import log_ai_decision\n\nlog_ai_decision(\n    api_key=\"your_key\",\n    input_text=\"prompt\",\n    output_text=\"response\",\n    model_name=\"gpt-4\"\n)\n```\n\n## Configuration\n\nSet your API key as an environment variable:\n\n```bash\nexport AI_AUDIT_API_KEY=\"your_api_key\"\n```\n\nThen use it in your code:\n\n```python\nimport os\nfrom ai_audit_sdk import AuditLogger\n\nlogger = AuditLogger(api_key=os.getenv(\"AI_AUDIT_API_KEY\"))\n```\n\n## Error Handling\n\nThe SDK uses fire-and-forget async logging by default. Errors are logged to stdout but won't crash your application.\n\nFor critical applications, use synchronous logging:\n\n```python\nsuccess = logger.log_decision_sync(input_text, output_text)\nif not success:\n    # Handle logging failure\n    print(\"Failed to log decision\")\n```\n\n## Examples\n\n### OpenAI Integration\n\n```python\nimport openai\nfrom ai_audit_sdk import AuditLogger\n\nlogger = AuditLogger(api_key=\"your_audit_key\")\nclient = openai.OpenAI(api_key=\"your_openai_key\")\n\ndef get_ai_response(prompt, user_id):\n    start_time = time.time()\n    \n    response = client.chat.completions.create(\n        model=\"gpt-4\",\n        messages=[{\"role\": \"user\", \"content\": prompt}]\n    )\n    \n    response_time = int((time.time() - start_time) * 1000)\n    \n    # Log for compliance\n    logger.log_decision(\n        input_text=prompt,\n        output_text=response.choices[0].message.content,\n        model_name=\"gpt-4\",\n        metadata={\"user_id\": user_id},\n        response_time=response_time\n    )\n    \n    return response.choices[0].message.content\n```\n\n### Context Manager\n\n```python\nwith AuditLogger(api_key=\"your_key\") as logger:\n    logger.log_decision(\"input\", \"output\", \"model\")\n    # Logger automatically closes when exiting the context\n```\n\n## License\n\nMIT License\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "SDK for logging AI/ML decisions with compliance tracking",
    "version": "1.0.0",
    "project_urls": {
        "Documentation": "https://docs.aiaudit.com",
        "Homepage": "https://github.com/appdroidinc/TrailJustifier",
        "Issues": "https://github.com/appdroidinc/TrailJustifier/issues",
        "Repository": "https://github.com/appdroidinc/TrailJustifier"
    },
    "split_keywords": [
        "ai",
        " audit",
        " compliance",
        " gdpr",
        " ai-act",
        " logging",
        " ml",
        " openai"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8db8185fa7236b03d08d8f9ea37d26684ac7ae837ba982a4a8ed136125c0c73b",
                "md5": "072cb28ddd8d3432a72a1c8813e7b650",
                "sha256": "eb0f43c5e974fa13b4f0b894d13f815ab1437b70414b92fcc6c9956e144cd9b6"
            },
            "downloads": -1,
            "filename": "ai_audit_sdk-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "072cb28ddd8d3432a72a1c8813e7b650",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 11375,
            "upload_time": "2025-09-09T22:39:06",
            "upload_time_iso_8601": "2025-09-09T22:39:06.711411Z",
            "url": "https://files.pythonhosted.org/packages/8d/b8/185fa7236b03d08d8f9ea37d26684ac7ae837ba982a4a8ed136125c0c73b/ai_audit_sdk-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a320088adc758dce689259154648f5db6dcc526be17c604055bd5a648c90b915",
                "md5": "7298a92f72556e8d8d991a72d3c9d46c",
                "sha256": "382d5cf31c04ff25fd2883cf8bb2d3c94dd2a01acc527de05cce622b1ce370f9"
            },
            "downloads": -1,
            "filename": "ai_audit_sdk-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7298a92f72556e8d8d991a72d3c9d46c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 12471,
            "upload_time": "2025-09-09T22:39:08",
            "upload_time_iso_8601": "2025-09-09T22:39:08.154969Z",
            "url": "https://files.pythonhosted.org/packages/a3/20/088adc758dce689259154648f5db6dcc526be17c604055bd5a648c90b915/ai_audit_sdk-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-09 22:39:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aiaudit",
    "github_project": "python-sdk",
    "github_not_found": true,
    "lcname": "ai-audit-sdk"
}
        
Elapsed time: 1.22032s