Skip to main content

Deterministic safety certification kernel for AI agents, finance, and beyond

Project description

qae-safety

Deterministic safety certification kernel for AI agents, finance, and beyond.

Built with Rust for performance, exposed to Python via PyO3.

Installation

pip install qae-safety

Quick Start

from qae_safety import SafetyCertifier, AgenticAdapter, SimpleAction, StateDelta

# Create an adapter with budget and rate constraints
adapter = AgenticAdapter(budget_limit=100.0, rate_limit=50.0)

# Create a certifier
certifier = SafetyCertifier(adapter)

# Define an action
action = SimpleAction(
    action_id="act-1",
    agent_id="my-agent",
    state_deltas=[
        StateDelta("budget_utilization", from_value=0.0, to_value=50.0),
    ],
)

# Certify the action
cert = certifier.certify(action)
print(cert.decision)  # e.g. "Certified"
print(cert.zone)      # e.g. "Safe"
print(cert.margins)   # e.g. {"budget": 0.8, "rate": 0.95}

Convenience Function

For one-off certifications without creating a SafetyCertifier:

from qae_safety import AgenticAdapter, certify_action

adapter = AgenticAdapter(budget_limit=100.0, rate_limit=50.0)
cert = certify_action(
    adapter,
    action_id="action-1",
    agent_id="my-agent",
    deltas={"budget_utilization": 0.5},
)
print(cert.decision)

Custom Domain Adapters

Extend the kernel to any domain by subclassing DomainAdapter and ConstraintChannel:

from qae_safety import DomainAdapter, ConstraintChannel, SafetyCertifier, SimpleAction

class TemperatureChannel(ConstraintChannel):
    def name(self) -> str:
        return "temperature"

    def evaluate(self, state: list[float]) -> float:
        # Return margin in [0, 1]; 1 = safe, 0 = at boundary
        temp = state[0]
        return max(0.0, 1.0 - temp / 100.0)

    def dimension_names(self) -> list[str]:
        return ["temperature"]

class RoboticsAdapter(DomainAdapter):
    def domain_name(self) -> str:
        return "robotics"

    def constraint_channels(self) -> list:
        return [TemperatureChannel()]

    def map_action_to_state(self, action) -> list[float]:
        for delta in action.state_deltas:
            if delta.dimension == "temperature":
                return [delta.to_value]
        return [0.0]

    def detect_regime_change(self, current, proposed) -> bool:
        return False

adapter = RoboticsAdapter()
certifier = SafetyCertifier(adapter)

License

BSL-1.1 (Business Source License 1.1). Converts to Apache 2.0 on 2032-01-01.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

qae_safety-0.1.1-cp314-cp314-macosx_11_0_arm64.whl (313.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

File details

Details for the file qae_safety-0.1.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for qae_safety-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5aa26e743bcb13cd4b635a7b78f1c0ff8afc9499ceeff80051a08b68d80a3770
MD5 204b2f3d8a92de39337885d112074e1f
BLAKE2b-256 f5d859c658425408177f1d1fc6b3b7d51406bcfceb739911639921238e2636ac

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