Skip to navigation

Python Examples

Python Examples

Integrate GovernanceAI with Python applications.

Installation

pip install requests python-dotenv

Basic Setup

import requests
import os
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv('GOVERNANCEAI_API_KEY')
ORG_ID = os.getenv('GOVERNANCEAI_ORG_ID')
BASE_URL = 'https://api.governanceai.com/v1'
headers = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
}

Evaluate Guardrails

def evaluate_guardrails(user_message, user_id):
"""Evaluate a message against guardrails"""
payload = {
"messages": [
{"role": "user", "content": user_message}
],
"context": {
"org_id": ORG_ID,
"user_id": user_id
}
}
response = requests.post(
f'{BASE_URL}/guardrails/evaluate',
headers=headers,
json=payload
)
if response.status_code == 200:
result = response.json()
return {
'decision': result['decision'],
'risk_score': result.get('risk_score', 0),
'violations': result.get('policy_violations', [])
}
else:
raise Exception(f"API error: {response.status_code}")
# Usage
result = evaluate_guardrails("My credit card is 4532-1111-2222-3333", "user_123")
print(f"Decision: {result['decision']}")
print(f"Risk Score: {result['risk_score']}")

Create Policy

def create_policy(policy_name, guardrail_ids):
"""Create a new policy"""
payload = {
"name": policy_name,
"guardrail_ids": guardrail_ids,
"scope": "organization",
"enforcement": {
"mode": "blocking",
"log_violations": True
}
}
response = requests.post(
f'{BASE_URL}/policies',
headers=headers,
json=payload
)
return response.json()
# Usage
policy = create_policy(
"Production Safety",
["guardrail_pii", "guardrail_toxic"]
)
print(f"Policy created: {policy['policy_id']}")

Run Scan

def run_scan(scan_type, repositories):
"""Run a code scan"""
payload = {
"scan_type": scan_type,
"repositories": repositories
}
response = requests.post(
f'{BASE_URL}/scans',
headers=headers,
json=payload
)
scan = response.json()
return scan['scan_id']
# Usage
scan_id = run_scan("code_scan", ["repo_1", "repo_2"])
print(f"Scan started: {scan_id}")

Error Handling

def make_request(method, endpoint, data=None):
"""Make API request with error handling"""
try:
if method == 'GET':
response = requests.get(f'{BASE_URL}{endpoint}', headers=headers)
elif method == 'POST':
response = requests.post(f'{BASE_URL}{endpoint}', headers=headers, json=data)
if response.status_code == 401:
raise ValueError("Invalid API key")
elif response.status_code == 403:
raise PermissionError("Insufficient permissions")
elif response.status_code >= 500:
raise RuntimeError("Server error")
return response.json()
except requests.RequestException as e:
print(f"Network error: {e}")
return None

Next Steps