Skip to main content

LedgerProof adapter for the OpenAI Python SDK — emits Article 50 transparency receipts as a side channel.

Project description

ledgerproof-openai

LedgerProof adapter for the official OpenAI Python SDK. Emits signed EU AI Act Article 50 transparency receipts as a side channel — your OpenAI response is returned unmodified.

pip install ledgerproof-openai

5-minute quickstart

from ledgerproof_openai import LedgerProofOpenAI

client = LedgerProofOpenAI(
    deployer_id="urn:eu:deployer:acme-bank-de",
    regulatory_context={"schema": "chatbot_session/v1", "jurisdiction": "EU"},
)

resp = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
)

print(resp.choices[0].message.content)
# A signed receipt has been emitted to the configured emitter
# (stdout LogEmitter by default).

Three integration patterns

1. Client wrapper (recommended)

from ledgerproof_openai import LedgerProofOpenAI, LedgerProofAsyncOpenAI

client = LedgerProofOpenAI(deployer_id="urn:eu:deployer:acme")
async_client = LedgerProofAsyncOpenAI(deployer_id="urn:eu:deployer:acme")

Works with both non-streaming (stream=False) and streaming (stream=True) chat completions. Streaming uses incremental SHA-256 over each chunk (constraint C6).

2. Decorator

from openai import OpenAI
from ledgerproof_openai import lpr_track

client = OpenAI()

@lpr_track(deployer_id="urn:eu:deployer:acme")
def ask(question: str):
    return client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": question}],
    )

3. Manual emission

from openai import OpenAI
from ledgerproof_openai import emit_receipt

client = OpenAI()
resp = client.chat.completions.create(...)
emit_receipt(resp, deployer_id="urn:eu:deployer:acme")

Custom emitters

from ledgerproof_openai import LedgerProofOpenAI, WebhookEmitter, QueueEmitter

client = LedgerProofOpenAI(
    deployer_id="urn:eu:deployer:acme",
    emitter=WebhookEmitter(url="https://receipts.acme.example/ingest"),
)

Scope and discipline (C1–C8)

This adapter implements the LedgerProof protocol with the following discipline:

  • C1 — No regulator endorsement. This package is not endorsed by the European Commission, EU AI Office, or any national supervisory authority. It does not provide an Article 40 presumption of conformity.
  • C4 — Offline verification. Receipts are verifiable offline against the published protocol public key and Bitcoin OP_RETURN anchor. The adapter does not phone home.
  • C6 — Stream-aware signing. Streaming completions are hashed incrementally so the receipt covers the full reconstructed text.
  • C7 — Side-channel only. This adapter never modifies the OpenAI response. Receipts emit through a separate emitter (log/webhook/queue).

What this adapter does NOT do

  • Does not address Article 9 (risk management), Article 10 (data governance), Article 13 (transparency to deployers), Article 15 (accuracy/robustness/cybersecurity), or Article 72 (post-market monitoring).
  • Does not claim Article 40 presumption of conformity.
  • Does not claim OpenAI Inc. endorsement.
  • Provides the Article 50 evidence layer only for users of the direct OpenAI SDK.

Roadmap

  • v0.2: OpenAI Assistants API (client.beta.threads.runs) coverage via assistant_response/v1 schema.
  • v0.2: Pluggable HSM-backed signer (AWS KMS, GCP KMS, Azure Key Vault, YubiHSM2).
  • v0.3: Built-in Merkle batcher with periodic flush to anchoring service.

License

Apache 2.0. See LICENSE.

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

openai_ledgerproof-0.1.0.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

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

openai_ledgerproof-0.1.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file openai_ledgerproof-0.1.0.tar.gz.

File metadata

  • Download URL: openai_ledgerproof-0.1.0.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for openai_ledgerproof-0.1.0.tar.gz
Algorithm Hash digest
SHA256 48a60f78413fff1cd58c6e401fb4080766190bc04355afbec266176c3f45b27b
MD5 41cb087b69b7bc42fde4ccb62a5a1b66
BLAKE2b-256 436a666c1cfff572fbfb576b5e8405de96650469d0c20ce90c683d27a9a72079

See more details on using hashes here.

File details

Details for the file openai_ledgerproof-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openai_ledgerproof-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1be2549d6eb273e82b715b12c56f930042ed516a718ea3834d82f5bcb91ee01c
MD5 f4e94ee35505f83321f64345185e41a4
BLAKE2b-256 7ba38a55a9f815a4d70f44f8fb0725589d5a3320458029e7bcec7f1e6e943d50

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