Skip to main content

Glass Box Framework — runtime constitutional verification for AI answers. Every claim carries a reasoning chain. Every score breaks down. Every verdict is traceable.

Project description

glassbox-framework

Glass Box Framework — runtime constitutional verification for AI answers. Every claim carries a reasoning chain. Every score breaks down. Every verdict is traceable.

pip install glassbox-framework

What it does

Hand any (question, AI answer) pair to Glassbox and get back a Trust Card containing:

  • Claims — every atomic assertion in the answer, each paired with a reasoning chain explaining why it's asserted, what would support it, and what would falsify it. The reasoning chain is the framework's core principle: no opaque scores.
  • Epistemic Confidence Score (ECS) — a transparent, weighted aggregate with a published formula and an always-visible per-dimension breakdown.
  • Glassbox Court — seven adversarial probes (fabrication, source manipulation, bias injection, context attack, overconfidence, underspecification, constitutional violation).
  • Constitution — your natural-language deployer intents, compiled into structured runtime rules and evaluated against the answer.
  • Verdicttrust / caution / reject, with the exact reasoning that derived it.
  • Audit reference — a deterministic SHA-256 log ID so identical inputs reproduce the same identifier.
from glassbox_framework import Glassbox

with Glassbox() as gb:
    card = gb.verify_answer(
        question="Can intermittent fasting cure type 2 diabetes?",
        answer=(
            "Yes, intermittent fasting can cure type 2 diabetes. The American "
            "Diabetes Association now officially recommends intermittent fasting "
            "as a first-line treatment, replacing metformin in 2023."
        ),
        intents=[
            "Never make specific medical recommendations without citing peer-reviewed sources.",
            "Always recommend consultation with a licensed healthcare professional.",
        ],
    )

print(card["verdict"])              # "reject"
print(card["ecs"]["total"])         # 0.6032
print(card["verdict_rationale"])    # "Critical fabrication detected; …"
print(card["audit"]["log_id"])      # glassbox-85cc09903bd4...  (deterministic)

The six tools

Method Tool name What it does
gb.verify_answer(question, answer, intents=None) glassbox_verify_answer Full pipeline → Trust Card
gb.extract_claims(question, answer) glassbox_extract_claims Atomic claims with non-empty reasoning chains
gb.score_ecs(claims, red_team=…, constitution=…, weights=…, mode=…) glassbox_score_ecs ECS with full breakdown + the formula evaluated with the actual numbers
gb.red_team(question, answer, claims=None, constitution=None, intents=None) glassbox_red_team Glassbox Court — 7 adversarial probes
gb.generate_trust_card(question, answer, claims, red_team, ecs, …) glassbox_generate_trust_card Assemble a Trust Card from prebuilt parts (no LLM call — works without an API key)
gb.export_audit_report(question, answer, intents=None) glassbox_export_audit_report Full pipeline + the full AuditRecord (call trace, deterministic log_id)

See the GitHub examples folder for one runnable script per tool.

Setup

glassbox-framework is pure stdlib — no third-party Python dependencies. But it needs the Glassbox MCP server (a small Node binary) reachable at runtime. Three resolution paths, tried in order:

  1. Local checkout (best for development) — clone https://github.com/TheBarmaEffect/glassbox, cd mcp && npm install. The Python client auto-detects the sibling src/index.ts and runs it.
  2. Global npm installnpm install -g @glassbox-framework/mcp. The Python client falls back to npx -y @glassbox-framework/mcp.
  3. Custom launcher — set GLASSBOX_SERVER_CMD to any shell command that starts an MCP server on stdio.

Other prerequisites:

  • Node 18+ (Glassbox's MCP server is TypeScript)
  • ANTHROPIC_API_KEY in your environment, for the engines that call Claude. Exception: gb.generate_trust_card is pure assembly — no LLM call. Try the framework with that one first.

CLI

The pip install also drops a glassbox binary on your PATH:

glassbox tools                                            # list the 6 registered tools

glassbox verify \
  --question "Can intermittent fasting cure type 2 diabetes?" \
  --answer  "Yes ..." \
  --intent  "Never make medical claims without citing peer-reviewed sources." \
  --intent  "Recommend consulting a licensed professional."

glassbox extract-claims --question "..." --answer "..."

Determinism

Audit log_ids are SHA-256 over canonicalised JSON of (inputs_hash, claims, ECS dimensions, red-team probe verdicts, constitution evaluations). Timestamps are recorded but never enter the hash, so identical inputs and identical engine outputs always produce the same log_id. Replay-detectable, cite-able, byte-stable across runs.

A reference value, reproducible right now without an API key: for the bundled healthcare example (see examples/05_generate_trust_card.py), the log_id is glassbox-85cc09903bd4b3f8022a4087.

Error handling

from glassbox_framework import Glassbox, GlassboxError, ToolError

with Glassbox() as gb:
    try:
        card = gb.verify_answer(question="...", answer="...")
    except ToolError as e:
        # The MCP tool itself returned an isError=True response. Common
        # cause: ANTHROPIC_API_KEY is not set.
        print(f"{e.tool} failed: {e}\nHint: {e.hint}")
    except GlassboxError as e:
        # Subprocess / transport / handshake failure.
        print(f"Could not reach the Glassbox MCP server: {e}")

Architecture

This Python package is a thin JSON-RPC stdio client. It:

  • Spawns the Node MCP server as a subprocess on first use (lazy)
  • Sends tools/call over stdin and reads JSON-RPC responses over stdout
  • Surfaces server-side isError responses as ToolError
  • Tears down the subprocess on __exit__ / close()

Zero third-party Python dependencies. The server-side TypeScript implementation already validates every input with Zod, so the Python client stays thin and lets server-side errors surface as exceptions.

Credit

Built by Karthik Barma · MS Artificial Intelligence · Northeastern University.

Powered by Aura.

Apache 2.0. Source, full TypeScript implementation, and research notes: https://github.com/TheBarmaEffect/glassbox

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

glassbox_framework-1.0.2.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

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

glassbox_framework-1.0.2-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file glassbox_framework-1.0.2.tar.gz.

File metadata

  • Download URL: glassbox_framework-1.0.2.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for glassbox_framework-1.0.2.tar.gz
Algorithm Hash digest
SHA256 4cf166c9adb7e39254cc7d99763d84b958c7f3295a26ba12d576aec086d77e1b
MD5 6caf403f09578d3aa3db0e2d16a83cf4
BLAKE2b-256 e846562cde0b6d94d6714a38beea5867ee6d4cca94d2d90ee653efd8b2f2802c

See more details on using hashes here.

File details

Details for the file glassbox_framework-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for glassbox_framework-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3f23e1bddf30c7d68bbe81853db45084dcabbab771adb5308d9ffe769a7dad68
MD5 874450a0f97ddac67cbdce864fc11c46
BLAKE2b-256 886687392886e552ebff33320a47fc9376f53f3bc32f456a18bf5d0e01e3815a

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