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 Distributions

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

qae_safety-0.1.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (368.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

qae_safety-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (369.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

File details

Details for the file qae_safety-0.1.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qae_safety-0.1.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 880dc07da8e80fc669ece1cc28235768db3df42e596d83ed601fd5240a1c6e1e
MD5 f1a6ffedcfe7493a6451a7712b02824a
BLAKE2b-256 3ea4910b50da477418670649a7f00069efb3a7d91724ff13efeec742c95b6734

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qae_safety-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 caa9930b7cd6aa3fed0a61ba930d9c738d739e9845bc70da452ff8c2dbd425d8
MD5 f33de877b549f7922b66702792f578f3
BLAKE2b-256 582966ef1ae805b313c6f20cfd83c7e05d7115dd577bee48b93b9abd8245a215

See more details on using hashes here.

File details

Details for the file qae_safety-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qae_safety-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f39eafa611ce7c094c19eebd793bc00563ab473bd798de2a03c0450669a11254
MD5 dfd77b8e8be8fba3f9ad7e305f526c11
BLAKE2b-256 5c8184566f220b97ebaef5889720853bf3a6722d64ffd68055b589c19d361820

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