Skip to main content

TruthVouch Python SDK

Drop-in LLM governance for Python. Route OpenAI, Anthropic, and Google AI calls through the TruthVouch Governance Gateway for automatic policy enforcement, PII detection, and hallucination monitoring.

Installation

pip install truthvouch

Optional extras:

pip install "truthvouch[telemetry]"   # OpenTelemetry + Prometheus
pip install "truthvouch[adapters]"    # LangGraph + CrewAI integrations
pip install "truthvouch[all]"         # Everything

Quick Start — Gateway Proxy

from truthvouch import TruthVouch

async with TruthVouch(gateway_url="https://gateway.truthvouch.com", api_key="tv_live_...") as client:
    # OpenAI drop-in
    resp = await client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "What is quantum computing?"}],
    )
    print(resp.choices[0].message.content)
    print(resp.governance.verdict)       # "allowed" | "blocked" | "flagged"
    print(resp.governance.pii_detected)  # False

Provider Facades

# Anthropic
resp = await client.anthropic.messages.create(
    model="claude-3-5-sonnet-20241022",
    messages=[{"role": "user", "content": "Hello"}],
    max_tokens=512,
)
print(resp.text)

# Google AI
resp = await client.google.generate_content(
    model="gemini-1.5-pro",
    contents=[{"role": "user", "parts": [{"text": "Hello"}]}],
)
print(resp.text)

Streaming

async for chunk in await client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True,
):
    print(chunk.content, end="", flush=True)
    if chunk.done:
        print(f"\nVerdict: {chunk.governance_report.verdict}")

Batch Scanning

job = await client.batch.submit(source_url="s3://my-bucket/prompts.jsonl", format="jsonl")
status = await client.batch.get_status(job.id)
print(status.status)  # "completed"

Governance Guards

For fine-grained input/output evaluation with local and remote guards:

from truthvouch.governance import GovernanceClient

client = GovernanceClient(api_key="vt_live_...")

result = client.evaluate_input("My SSN is 123-45-6789", model="gpt-4o")
if result.blocked:
    print("Blocked:", result.block_reasons)

# Async usage
from truthvouch.governance import AsyncGovernanceClient

async with AsyncGovernanceClient(api_key="vt_live_...") as client:
    result = await client.evaluate_input("Hello!", model="gpt-4o")

Built-in Guards

Guard Type Description
pii_regex Local Regex PII detection (SSN, CC, email, phone, passport, address)
banned_phrases Local Case-insensitive banned phrase matching
injection Local 2-layer prompt injection heuristic detector
cost Local Token estimation + budget enforcement
truth Remote Truth nugget verification
pii_remote Remote Full Presidio PII scan

Framework Adapters

LangGraph / LangChain:

from truthvouch.governance.adapters.langgraph import TruthVouchCallbackHandler

handler = TruthVouchCallbackHandler(client, model="gpt-4o")
result = chain.invoke(inputs, config={"callbacks": [handler]})

CrewAI:

from truthvouch.governance.adapters.crewai import TruthVouchMiddleware

middleware = TruthVouchMiddleware(client)
llm = middleware.wrap_llm(ChatOpenAI(model="gpt-4o"))
agent = Agent(llm=llm, role="Analyst", goal="...", backstory="...")

Error Handling

from truthvouch.exceptions import (
    PolicyBlockedError,
    AuthenticationError,
    QuotaExceededError,
    GatewayUnreachableError,
)

try:
    resp = await client.chat.completions.create(model="gpt-4o", messages=[...])
except PolicyBlockedError as e:
    print(f"Blocked: {e.governance_report}")
except AuthenticationError:
    print("Invalid API key")
except QuotaExceededError as e:
    print(f"Rate limited, retry after {e.retry_after_seconds}s")
except GatewayUnreachableError:
    print("Gateway down — call went direct to LLM (fail-open mode)")

Configuration

from truthvouch import TruthVouch

client = TruthVouch(
    gateway_url="https://gateway.truthvouch.com",
    api_key="tv_live_...",
    fail_mode="open",         # "open" (bypass) or "closed" (raise error)
    timeout=30.0,             # HTTP timeout in seconds
    max_retries=3,            # Retry attempts with exponential backoff
    circuit_breaker_threshold=5,          # Failures before circuit opens
    circuit_breaker_recovery_seconds=60,  # Seconds before recovery probe
    verify_ssl=True,          # TLS certificate verification
)

License

Apache-2.0

Release files for truthvouch 1.0.0

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

Source distribution (sdist)

Source distribution for truthvouch 1.0.0
File Size Uploaded
truthvouch-1.0.0.tar.gz 74.9 kB Details

Built distribution (wheel)

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

Total release size: 145.2 kB

Release files / truthvouch-1.0.0.tar.gz

Download URL truthvouch-1.0.0.tar.gz
Size 74.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c1f52afb4725e1ab1409fbcde313254023e8b093e6d5379e5cca2107967d74e5
BLAKE2b-256 checksum
How to use checksums
106e8c5f6e864bd5db788662092675d56e5410bc8ec87d10e86e97f6ce5445ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / truthvouch-1.0.0-py3-none-any.whl

Download URL truthvouch-1.0.0-py3-none-any.whl
Size 70.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b58ed15de198a81af2144ea8f9bfc6977851a657df465a6963e871bd10df6016
BLAKE2b-256 checksum
How to use checksums
e8f6312f1c861f362e3649190eb5f452bd553b0605462268502a71834a4be888
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.0.0 This release

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