Skip to main content

Gibs Python SDK

Official Python SDK for the Gibs multi-regulation compliance API. Classify AI system risk levels, check regulatory obligations, and get answers to compliance questions -- all with source citations to EU legislation (AI Act, GDPR, DORA).

Installation

pip install gibs

Quick Start

from gibs import GibsClient

client = GibsClient(api_key="gbs_live_xxx")

# Classify an AI system's risk level
result = client.classify("Facial recognition system for airport security")
print(result.risk_level)   # "high"
print(result.confidence)   # 0.92
print(result.reasoning)    # Detailed explanation with article references
print(result.sources)      # [SourceCitation(article_id="Article 6", ...)]

# Ask a compliance question (auto-detects regulation)
answer = client.check("What are the transparency obligations for chatbots?")
print(answer.answer)
print(answer.confidence_score)  # 0.87
print(answer.sources)           # [SourceCitation(article_id="Article 50", ...)]

# Get structured (machine-readable) response
answer = client.check(
    "What are the risk management obligations for high-risk AI?",
    response_format="structured",
)
print(answer.structured.summary)       # Direct 1-2 sentence answer
print(answer.structured.requirements)  # ["Implement risk management per Article 9", ...]
print(answer.structured.articles_cited)  # ["Article 9", "Article 6", ...]
print(answer.confidence_score)         # 0.89

# DORA: ICT resilience for financial entities
dora = client.check("What are the ICT incident reporting timelines under DORA?")
print(dora.answer)         # Timeline with Article 19 citations

Async Support

from gibs import AsyncGibsClient

client = AsyncGibsClient(api_key="gbs_live_xxx")

result = await client.classify("CV screening tool for recruitment")
answer = await client.check("Does GDPR apply to employee monitoring?")

# Use as async context manager
async with AsyncGibsClient(api_key="gbs_live_xxx") as client:
    result = await client.classify("...")

Authentication

Get your API key at gibs.dev. Pass it directly or set the GIBS_API_KEY environment variable:

export GIBS_API_KEY=gbs_live_xxx
# Reads from GIBS_API_KEY automatically
client = GibsClient()

API Reference

client.classify(description, **kwargs)

Classify an AI system's risk level under EU regulation.

result = client.classify(
    "Emotion detection system for job interviews",
    data_types=["biometric", "behavioral"],
    decision_scope="employment",
    sector="recruitment",
    jurisdiction="EU",
)

print(result.risk_level)      # "prohibited" | "high" | "limited" | "minimal"
print(result.confidence)      # 0.0 - 1.0
print(result.reasoning)       # Detailed explanation
print(result.obligations)     # List of compliance obligations
print(result.sources)         # Source citations to legislation
print(result.corpus_version)  # Version of the legal corpus used

client.check(question, **kwargs)

Ask a compliance question and get an answer with citations. The API automatically detects which regulation(s) the question targets (AI Act, GDPR, DORA) and routes to the correct corpus.

answer = client.check(
    "What data protection impact assessment is required for high-risk AI?",
    system_context={"type": "recommendation engine", "sector": "healthcare"},
)

print(answer.answer)            # Detailed answer with [Article X] citations
print(answer.confidence)        # "high" | "medium" | "low"
print(answer.confidence_score)  # 0.89 (numeric, 0.0–1.0)
print(answer.sources)           # Source citations
print(answer.should_abstain)    # True if out of scope
print(answer.corpus_version)    # Corpus version used

Structured response mode

Pass response_format="structured" to get machine-readable parsed sections alongside the full answer:

answer = client.check(
    "What are the transparency requirements for chatbots?",
    response_format="structured",
)

print(answer.structured.summary)         # Direct 1-2 sentence answer
print(answer.structured.legal_basis)     # Legal basis with article references
print(answer.structured.requirements)    # ["Disclose AI interaction per Article 50(1)", ...]
print(answer.structured.timeline)        # ["Applies from 2 August 2026"]
print(answer.structured.articles_cited)  # ["Article 50", "Article 52"]

Confidence score

Every /check response includes a numeric confidence_score (0.0–1.0) for programmatic decisions:

Score Meaning
0.8–1.0 High confidence — well-sourced, specific answer
0.5–0.8 Medium — partial sources or hedged language
0.0–0.5 Low — limited sources, verify with legal counsel
if answer.confidence_score >= 0.7:
    apply_compliance_rules(answer.structured.requirements)
else:
    flag_for_human_review(answer)

client.health()

Check API health status.

health = client.health()
print(health.status)       # "healthy"
print(health.components)   # {"qdrant": "ok", "postgres": "ok", ...}

Account Management

# List API keys
keys = client.list_keys()

# Create a new key
new_key = client.create_key("CI Pipeline")
print(new_key.api_key)  # Full key shown once

# Revoke a key
client.delete_key(key_id=2)

Error Handling

from gibs import GibsClient, GibsAuthError, GibsRateLimitError, GibsAPIError

client = GibsClient(api_key="gbs_live_xxx")

try:
    result = client.classify("...")
except GibsAuthError:
    print("Invalid API key")
except GibsRateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except GibsAPIError as e:
    print(f"API error {e.status_code}: {e.message}")

The SDK automatically retries on rate limits and transient network errors with exponential backoff (3 retries by default).

Configuration

client = GibsClient(
    api_key="gbs_live_xxx",          # Required (or set GIBS_API_KEY env var)
    base_url="https://api.gibs.dev", # Default
    timeout=120.0,                    # Seconds (default: 120)
    max_retries=3,                    # Retry count (default: 3)
)

Requirements

Metadata

Release files for gibs 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gibs 0.3.1
File Size Uploaded
gibs-0.3.1.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gibs 0.3.1
File Interpreter ABI Platform
gibs-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 24.9 kB

Release files / gibs-0.3.1.tar.gz

Download URL gibs-0.3.1.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a8e6aaf0905c139bc511873237cf01adb207d1e85c44db0765951fca277c2e11
BLAKE2b-256 checksum
How to use checksums
082b9495347e69b0a6784ed20732a8809e9d15bfa28bd4f6ca7893491439593d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.13

Release files / gibs-0.3.1-py3-none-any.whl

Download URL gibs-0.3.1-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5d830ba40358e68da524188f288f5ad140163521bb2476e37b88c1c2aaad6c08
BLAKE2b-256 checksum
How to use checksums
2c91aa18510f388016af8003de1920647973d72abef1629351195c71301a6bba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page