WhitePact — независимый слой принятия решений, управления и гарантий для автономных систем, работающий в рантайме: движок принятия решений по управлению с пятью исходами (ALLOW / ALLOW_WITH_REDACTION / REQUIRE_APPROVAL / DENY / QUARANTINE), оценка доверия, выявление предвзятости, guardrails, детекция галлюцинаций, маппинг соответствия нормативам (NIST AI RMF / EU AI Act / ISO 42001), аналитика затрат, мониторинг дрейфа, публичный Trust Index / лидерборд / AI Incident Database, а также MCP-сервер (30 инструментов, 20 ресурсов) с интеграциями trust-gate для LangChain, LangGraph и Google ADK.
┌──────────────────────────────────────────────────────────────────────────────┐
│ WhitePact v1.2.6 │
│ │
│ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Governance │ │ Trust Score │ │ Compliance │ │ Guardrails │ │
│ │ 5-way decide │ │ 6-dim A–F │ │ NIST/EU/ISO │ │ PII + Tox │ │
│ └──────────────┘ └─────────────┘ └──────────────┘ └──────────────────┘ │
│ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Hallucination│ │ Cost Intel │ │ Red Team │ │ Drift Monitor │ │
│ │ Self-consist.│ │ Route+Budget│ │ 10 attacks │ │ Alerts+Trend │ │
│ └──────────────┘ └─────────────┘ └──────────────┘ └──────────────────┘ │
│ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ AI Passport │ │ BiasBuster │ │ PrivacyLabel │ │ MCP Server │ │
│ │ SHA-256 cert │ │ 6 probes+CI │ │ Federated │ │ 30 tools/HTTP │ │
│ └──────────────┘ └─────────────┘ └──────────────┘ └──────────────────┘ │
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
│ │ Governance Dashboard — FastAPI · Per-org rate limit · Alembic · OTEL │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────────┘
Какую проблему это решает
Каждая команда, выводящая AI в продакшен, сталкивается с одним и тем же пробелом: нет единого способа доказать, что модель — или действия автономного агента — безопасны, справедливы, соответствуют нормативам и подотчётны. Аудиты проводятся вручную, предвзятость обнаруживается уже в продакшене, комплаенс живёт в электронной таблице, вызовы инструментов агента остаются без контроля, и никто не знает, каким будет счёт за LLM в следующем месяце.
WhitePact закрывает эту потребность одной платформой — REST API, Python SDK, MCP-сервер и дашборд в реальном времени — покрывающей полный жизненный цикл управления:
| Проблема | Модуль | Результат |
|---|---|---|
| Разрешить это действие агента, отредактировать его, отправить на одобрение, отклонить или поместить в карантин? | WhitePactRuntimeGateway (ядро управления) | Пятивариантное решение GovernanceDecision, детерминированное, без вызова LLM в цепочке принятия решения |
| Заслуживает ли эта модель доверия? | TrustScoreEngine | Оценка 0–100, грейд A–F, уровень риска |
| Соответствует ли она нормативным требованиям? | ComplianceEngine | NIST AI RMF, уровень по EU AI Act, ISO 42001 |
| Утекают ли через неё персональные данные (PII)? | GuardrailsEngine | Блокировка / редактирование с журналом аудита |
| Галлюцинирует ли она? | HallucinationDetector | Оценка риска, неподтверждённые утверждения |
| Подвержена ли она атакам? | RedTeamSimulator | 10 векторов атак, идентификаторы CVE, доля безопасных отказов |
| Во сколько она обходится? | CostTracker + ModelRouter | Затраты в USD по каждой модели, маршрутизация на самую дешёвую подходящую модель |
| Ухудшается ли её качество со временем? | TrustDriftMonitor | Тренд за 7/30 дней, оповещения по уровню критичности |
| Есть ли в ней предвзятость? | BiasBuster | 6 демографических проб, шлюз в CI |
| Снабжены ли данные метками с сохранением приватности? | PrivacyLabel | Федеративные DP-метки, данные не покидают устройство |
| Подлинный ли это медиаконтент? | DeepfakeDetector | Ансамблевая оценка уверенности, определённый метод подделки |
| Можно ли доверять стороннему MCP-серверу до подключения к нему? | SupplyChainScanner | Вердикты VERIFIED_FACT / INFERRED_SIGNAL / UNKNOWN — проверки на тайпсквоттинг, соответствие описания содержимому и известные инциденты |
| Ведётся ли защищённая от подделки запись каждого решения по управлению? | EvidenceRepository | Хеш-цепочка записей EvidenceRecord, изоляция по организациям, verify_chain() |
| Попадает ли рискованное действие на проверку человеку? | ApprovalRepository | Процесс PENDING → APPROVED/DENIED, защищённый от состояний гонки |
| Как эта модель ранжируется среди других — независимо? | Public Leaderboard | Кросс-модельный рейтинг доверия на основе реальных вызовов API каждой модели, а не самоотчётов |
| Можно ли где угодно сослаться на оценку доверия и проверить её? | Trust Index | Бесплатный сертифицированный паспорт — самостоятельно оценённый или проверенный людьми, с верификацией по /verify/{id} и встраиваемым бейджем |
| Были ли у этой AI-системы публичные сбои раньше? | AI Incident Database | Публичный реестр с краудсорсинговыми отчётами, модерацией и хеш-цепочками |
| Должен ли мой агент доверять этому стороннему инструменту перед его вызовом? | rai_check_trust + интеграции с LangChain/LangGraph/ADK | Бесплатная проверка плюс реальный шлюз блокировки/паузы прямо внутри агента |
| Может ли любой MCP-клиент контролировать каждый вызов AI? | MCP Server | 27 инструментов управления через stdio, Streamable HTTP или устаревший HTTP+SSE |
Установка
# Governance platform + REST API
pip install "rai-governance-platform[dashboard]"
# With PostgreSQL support
pip install "rai-governance-platform[dashboard,postgres]"
# With Redis + OpenTelemetry
pip install "rai-governance-platform[dashboard,redis,telemetry]"
# With LLM providers
pip install "rai-governance-platform[dashboard,openai,anthropic]"
# Everything
pip install "rai-governance-platform[all]"
Опубликованное имя пакета на PyPI (rai-governance-platform) и имя для импорта (responsibleai) появились до переименования в WhitePact и сохранены без изменений — в разделе 3 файла MIGRATION_WHITEPACT_V2.md объясняется, почему вместо переименования опубликованного пакета был добавлен пакет-алиас (whitepact).
Быстрый старт за 30 секунд
# Start the governance dashboard
pip install "rai-governance-platform[dashboard]"
uvicorn responsibleai.dashboard.app:app --port 8765
# Evaluate a model (no LLM key needed — supply your own scores)
curl -X POST http://localhost:8765/api/evaluate \
-H "Content-Type: application/json" \
-d '{
"model_name": "gpt-4o",
"provider": "openai",
"fairness": 0.80,
"privacy": 0.85,
"security": 0.82,
"robustness": 0.78,
"compliance": 0.90,
"authenticity": 0.88
}'
{
"trust_score": { "trust_score": 83.65, "grade": "B", "risk": "LOW" },
"compliance": { "overall_score": 80.5, "eu_ai_act_tier": "limited_risk", "violations": 0 },
"passport_id": "rai-a3f7c2b1",
"passport_hash": "4d8e1f2a9c3b7e6d...",
"drift_alert": null
}
Откройте http://localhost:8765, чтобы увидеть дашборд в реальном времени, и http://localhost:8765/api/docs — для интерактивной документации API.
Ядро управления — пять типов решений вместо бинарного «разрешить/запретить»
src/responsibleai/governance/ (полный контракт архитектуры — в разделах 4–8 файла SPEC.md) — это детерминированный runtime-механизм авторизации, который стоит перед вызовами инструментов агентом:
from responsibleai.governance import WhitePactRuntimeGateway, ActionRequest, AuthorityContext
gateway = WhitePactRuntimeGateway()
result = gateway.evaluate(
action=ActionRequest(tool_name="rai_scan", arguments={"text": "..."}),
authority=AuthorityContext(org_id="acme", agent_id="agent-1"),
)
print(result.decision) # GovernanceDecision.ALLOW | ALLOW_WITH_REDACTION | REQUIRE_APPROVAL | DENY | QUARANTINE
-
Уровни риска (
governance/risk.py) — каждый инструмент MCP классифицируется по жёстко заданной, защищённой от дрейфа таблице, а не выводится на лету в момент вызова. -
Движок политик (
governance/policy.py) — правила по принципу «первое совпадение выигрывает» с эффектамиALLOW/DENY/REQUIRE_APPROVAL. -
Доказательства (
governance/evidence.py) — каждое решение записывается в хеш-цепочныйEvidenceRecordна уровне организации;verify_chain()обнаруживает подмену. Исходные значения аргументов никогда не сохраняются — только ключи-имена полей. -
Процесс согласования (
governance/approval.py) — решения сREQUIRE_APPROVALставят в очередь реальный, устойчивый к гонкамApprovalRequestс API разрешения, а не просто строку в логе. -
Сканер цепочки поставок (
src/responsibleai/supplychain/) — прежде чем агент доверится стороннему MCP-серверу или инструменту,SupplyChainScannerвозвращает один из трёх явных вердиктов (VERIFIED_FACT/INFERRED_SIGNAL/UNKNOWN) — никогда не единый непрозрачный балл доверия — на основе обнаружения тайпсквоттинга, сканирования описаний инструментов и перекрёстной сверки с известными инцидентами. -
Identity Bridge (
integrations/identity_bridge.py) — сопоставляет claims ID-токенов Entra ID, Google Workspace, Okta и AWS (Cognito / IAM Identity Center) сIdentityContext, а такжеmap_groups_to_authority()для преобразования членства в группах IdP вAuthorityContextс предоставленными типами действий. См. раздел Identity Bridge вMACHINE_AUTHORITY_V1.md, где точно указано, что проверяется (корректность формы claims в соответствии с публичной документацией каждого провайдера), а что нет (тестирование на живых тенантах, разрешение имён групп через Graph/Admin-SDK, путь SigV4 без JWT в AWS).
Ни одно решение управления не принимается на основе LLM; почему — см. DETERMINISTIC_VS_PROBABILISTIC.md.
Увидеть сквозной сценарий: examples/08_whitepact_enterprise_scenario.py прогоняет полный сценарий (организация онбордит автономного финансового агента) через все восемь инвариантов машинной авторизации — потолок прав, делегирование, ослабление, кворум согласования, композиция workflow, бюджет автономии, межсетевой экран памяти, пакет доказательств — против реального кода, API-ключи не требуются:
python examples/08_whitepact_enterprise_scenario.py
MCP-сервер — управляйте каждым вызовом ИИ из Claude Code, Claude Desktop или любого MCP-клиента
MCP-сервер (Model Context Protocol) предоставляет WhitePact как 30 инструментов и 20 ресурсов (10 канонических URI ресурсов, двойная публикация под схемами whitepact:// и rai:// — см. MIGRATION_WHITEPACT_V2.md) любому MCP-совместимому клиенту — Claude Code, Claude Desktop, Cursor, Windsurf или собственной среде исполнения агента. Поддерживаются три транспорта: stdio, Streamable HTTP (/mcp, актуальная спецификация MCP) и устаревший HTTP+SSE (/sse + /messages/, сохранён для старых клиентов). Когда клиент команды указывает на этот сервер, каждое взаимодействие с ИИ автоматически проходит через управление — пятиуровневые решения, оценка доверия, guardrails, проверки соответствия (NIST AI RMF / EU AI Act / ISO 42001), оценка предвзятости, обнаружение дрейфа, отслеживание затрат и хеш-цепочные аудиторские доказательства срабатывают при любом вызове без изменений в коде.
Установка
# Install
pip install "rai-governance-platform[dashboard,mcp]"
# Start the REST API (MCP tools call it internally)
RAI_DB_PATH=/var/lib/rai/governance.db \
RAI_API_KEYS=your-key-here \
uvicorn responsibleai.dashboard.app:app --host 127.0.0.1 --port 8765 &
# Add to Claude Code (~/.claude/claude_desktop_config.json or via /mcp)
{
"mcpServers": {
"whitepact": {
"command": "whitepact-mcp",
"env": {
"RAI_API_URL": "http://localhost:8765",
"RAI_API_KEY": "your-key-here"
}
}
}
}
whitepact-mcp и responsibleai-mcp — это одна и та же точка входа; см. [project.scripts] в pyproject.toml. Оба имени продолжат работать — используйте то, которое предпочитаете.
Доступные инструменты (27)
| Инструмент | Что делает |
|---|---|
rai_scan | Обнаруживает и вычищает PII и вредоносный контент, прежде чем он попадёт в лог |
rai_trust_score | Составной AI Trust Score (0–100) по 6 измерениям управления |
rai_compliance | Оценка соответствия NIST AI RMF / EU AI Act / ISO 42001 |
rai_hallucination | Риск галлюцинаций на основе хеджирования, согласованности, неподтверждённых утверждений |
rai_cost_estimate | Стоимость вызова API модели в USD по количеству токенов |
rai_redteam_payloads | Пейлоады состязательных атак (prompt injection, jailbreak и т. д.) |
rai_redteam_analyze | Отчёт безопасности по ответам модели на red team-пейлоады |
rai_compare_models | Сравнение двух моделей по всем 6 измерениям доверия |
rai_audit_summary | Сводка возможностей управления (инструменты, фреймворки, векторы атак) |
rai_health | Статус и доступность модулей движка управления |
rai_bias_evaluate | Демографическая предвзятость по 6 измерениям проверки с доверительными интервалами |
rai_drift_check | Дрейф балла доверия между базовой и текущей оценкой |
rai_passport_generate | Проверяемый, защищённый от подмены AI Passport для оценки рисков поставщиков |
rai_budget_check | Расход против бюджета, разбивка по командам/моделям, прогноз на конец месяца |
rai_policy_check | Проверка текста/ответа на соответствие политике управления (блоклисты, дисклеймеры) |
rai_stream_scan | Сканирование PII/вредоносного контента по чанкам потокового вывода LLM |
rai_benchmark | Оценка ответов по наборам truthfulqa / bbq / hellaswag |
rai_benchmark_prompts | Набор вопросов для набора бенчмарков |
rai_model_route | Самая дешёвая модель, справляющаяся с задачей, с учётом компромисса цена/качество |
rai_pii_report | Аудиторский отчёт по PII по категориям с рекомендациями по устранению в рамках GDPR/CCPA |
rai_incident_log | Структурированная запись инцидента управления для аудита/SIEM |
rai_eu_ai_act_classify | Классификация уровня риска по EU AI Act с дорожной картой соответствия |
rai_iso42001_gap | Анализ пробелов системы менеджмента ИИ ISO/IEC 42001:2023 |
rai_executive_summary | Готовое для совета директоров резюме управления с индикаторами статуса RAG |
rai_org_status | Снимок статуса управления: модели, оценки, соответствие, риски |
rai_webhook_status | Состояние доставки вебхуков, анализ сбоев, действия по устранению |
rai_check_trust | Бесплатный публичный запрос Trust Index для сторонней модели/инструмента перед его вызовом агентом — в отличие от всех прочих инструментов выше, которые оценивают вывод, созданный самим вызывающим |
Интеграции с фреймворками агентов — LangChain, LangGraph, Google ADK
src/responsibleai/integrations/ подключает rai_check_trust напрямую к трём фреймворкам агентов, чтобы агент мог блокироваться по публичному баллу доверия инструмента до его вызова, а не просто логировать вызов постфактум:
-
LangChain (
langchain_middleware.py) —TrustGateMiddleware, middleware дляwrap_tool_call, который полностью блокирует вызов, если его балл ниже порога. Требуетpip install "rai-governance-platform[langchain]". -
LangGraph (
langgraph_gate.py) —make_trust_gate_node(), узел, который приостанавливает граф черезinterrupt()для решения человека «одобрить/отклонить» по вызову ниже порога, вместо жёсткой блокировки. Требуетpip install "rai-governance-platform[langgraph]". -
Google ADK (
adk_toolset.py) —build_stdio_toolset()/build_http_toolset(), тонкие фабрики поверхMcpToolsetиз ADK, которые автоматически обнаруживают инструменты MCP-сервера этого проекта без кастомного связующего кода. Требуетpip install "rai-governance-platform[adk]".
Все три — или любое их подмножество — устанавливаются через pip install "rai-governance-platform[agent-frameworks]". Обоснование каждого см. в фазе B файла GAME_CHANGER_BUILD_PLAN.md.
Доступные ресурсы (20)
10 канонических ресурсов, каждый из которых объявляется одновременно по обеим схемам URI — whitepact:// и rai:// (двойная схема добавлена как расширение — см. MIGRATION_WHITEPACT_V2.md; в таблице ниже приведён канонический URI):
| Ресурс | URI | Содержимое |
|---|---|---|
| Состояние сервиса | whitepact://health | Текущий статус работоспособности governance-сервиса |
| Каталог цен на модели | whitepact://models/catalog | Поддерживаемые модели с ценами за токен |
| Фреймворки комплаенса | whitepact://compliance/frameworks | NIST AI RMF, EU AI Act, ISO 42001 |
| Категории атак red team | whitepact://redteam/categories | Категории состязательных атак |
| Измерения доверия | whitepact://trust/dimensions | 6 измерений, лежащих в основе Trust Score |
| Каталог bias-проб | whitepact://bias/probes | Доступные bias-пробы и интерпретация оценок |
| Шаблон политики управления | whitepact://governance/policy | Шаблон политики по умолчанию для rai_policy_check |
| Справочник грейдов доверия | whitepact://trust/grades | Пороги грейдов, уровни риска, рекомендации по развёртыванию |
| Чек-лист NIST AI RMF | whitepact://compliance/checklist/nist | Практический чек-лист внедрения NIST |
| Чек-лист EU AI Act | whitepact://compliance/checklist/eu-ai-act | Чек-лист комплаенса для операторов высокого риска |
Листинги в MCP-каталогах
WhitePact уже сегодня присутствует в реальных MCP-каталогах и доступен для запросов — это не планы на будущее, всё проверено вживую:
-
Официальный реестр MCP — файл
server.jsonв корне репозитория (схема2025-12-11, версия листинга1.2.3) опубликован какio.github.Guruprasath-Annadurai/whitepact; доступность подтверждена через registry.modelcontextprotocol.io. В листинге заявлены и PyPI/stdio-пакет (whitepact-mcp, self-hosted, бесплатный, без ограничений), и записьremotes, указывающая на хостинговые транспорты Streamable HTTP и SSE (whitepact-mcp-http.onrender.com), — удалённый коннектор в один клик, а не просто устанавливаемый пакет. -
Плагин Antigravity CLI — каталог
plugins/whitepact/в корне репозитория оформлен по официальному формату манифеста плагинов Antigravity и подключается черезserverUrlк тому же хостинговому транспорту Streamable HTTP. Официального каталога плагинов Antigravity пока не существует, поэтому плагин распространяется напрямую из репозитория — см.plugins/whitepact/README.md. -
Smithery — листинг guruprasathannadurai-official/whitepact: при сканировании хостингового транспорта Streamable HTTP (
whitepact-mcp-http.onrender.com/mcp— отдельный сервис Render, не связанный с основной панелью) обнаружено 30 инструментов и 20 ресурсов. В этом развёртывании не настроен сервер авторизации OAuth — используются только статические Bearer API-ключи, — поэтому публичный, не требующий аутентификации файл/.well-known/mcp/server-card.jsonотдаёт те же актуальныеTOOL_DEFS/RESOURCE_DEFS, которые объявляет сам сервер; это нужно каталогам, чьи сканеры не могут выполнить полный аутентифицированный обход вживую.
Полный план распространения, включая каталоги, в которые заявка ещё не подана, описан в compliance/MCP_DISTRIBUTION_GUIDE.md.
Интеграции с платформами
WhitePact подключается к основным AI-платформам как единый MCP-сервер через клиенты, совместимые со стандартом, — без отдельных форков под каждую платформу и без дублирования логики управления. Каноническая матрица совместимости (PLATFORM_COMPATIBILITY.md), инструкции по настройке для каждой платформы (GitHub Copilot, Microsoft Copilot, Claude, Grok, Gemini, Amazon Q, AWS Bedrock AgentCore, Mistral Le Chat, Cursor) и список задач, которые всё ещё требуют участия человека (FOUNDER_ACTIONS.md), собраны в docs/integrations/. Для живой проверки на уровне протокола против хостингового эндпоинта запустите python scripts/integration_smoke.py.
Python SDK
Расчёт Trust Score
from responsibleai import TrustScoreEngine, PassportGenerator
engine = TrustScoreEngine()
score = engine.compute(
fairness=0.80, privacy=0.85, security=0.82,
robustness=0.78, compliance=0.90, authenticity=0.88,
)
print(f"{score.overall:.1f} / 100 Grade: {score.grade} Risk: {score.risk_level}")
# → 83.7 / 100 Grade: B Risk: LOW
passport = PassportGenerator().generate(
model_name="gpt-4o", provider="openai", trust_score=score,
compliance_summary={"overall": 80.5},
)
print(passport.passport_id)
passport.export_html("passport.html")
Guardrails — блокировка PII до попадания в логи
from responsibleai import GuardrailsEngine
guardrails = GuardrailsEngine()
result = guardrails.scan("Customer SSN is 123-45-6789, email: alice@company.com")
print(result.is_blocked) # True
print(result.pii_count) # 2
print(result.redacted_text) # "Customer SSN is [SSN], email: [EMAIL]"
Обнаружение галлюцинаций
from responsibleai import HallucinationDetector
detector = HallucinationDetector()
result = detector.analyze(
"AI will replace all human jobs by 2025.",
candidates=[
"AI will automate some repetitive tasks.",
"AI creates new job categories alongside displacing others.",
],
)
print(f"Risk: {result.hallucination_risk:.2f} Level: {result.risk_level}")
Комплаенс — NIST AI RMF, EU AI Act, ISO 42001
from responsibleai import ComplianceEngine
engine = ComplianceEngine()
report = engine.evaluate(
fairness_score=0.80, privacy_score=0.85,
security_score=0.82, robustness_score=0.78,
compliance_maturity=0.90, use_case="credit_scoring",
)
print(f"Score: {report.compliance_score * 100:.1f}%")
print(f"EU AI Act tier: {report.eu_ai_act_tier.value}") # high_risk
Симуляция атак red team
from responsibleai import RedTeamSimulator
simulator = RedTeamSimulator()
report = simulator.run_all()
print(f"Security score: {report.security_score:.1f}/100")
print(f"Vulnerabilities: {len(report.vulnerabilities)}")
for v in report.critical_vulnerabilities:
print(f" [{v['cwe_id']}] {v['name']}")
Аналитика затрат
from responsibleai import CostTracker, ModelRouter, TokenUsage, BudgetPolicy
tracker = CostTracker(db_path="~/.responsibleai/data.db",
policy=BudgetPolicy(monthly_limit_usd=500.0))
usage = TokenUsage.create(
provider="openai", model="gpt-4o",
input_tokens=2000, output_tokens=800, team="product",
)
record = tracker.record(usage)
print(f"This call: ${record.total_cost:.4f}")
print(f"Month to date: ${tracker.total_cost(30):.2f}")
router = ModelRouter()
decision = router.route("Classify this email as spam or not spam", "balanced")
print(f"Recommended: {decision.recommended_model} ${decision.estimated_cost_per_1k:.4f}/1k tokens")
Мониторинг дрейфа Trust Score
from responsibleai import TrustScoreEngine, TrustDriftMonitor
monitor = TrustDriftMonitor(db_path=":memory:", alert_threshold=5.0)
engine = TrustScoreEngine()
for fairness in [0.90, 0.88, 0.85, 0.72]:
score = engine.compute(fairness=fairness, privacy=0.85, security=0.80,
robustness=0.80, compliance=0.85, authenticity=0.85)
alert = monitor.record("gpt-4o", "openai", score)
if alert:
print(f"Drift alert! {alert.severity}: {alert.delta:.1f} pt drop")
Панель управления Governance
Production-приложение на FastAPI со SPA в тёмной теме. Рабочий экземпляр доступен по адресу whitepact.com.
# Development (auth off, SQLite in-memory)
RAI_AUTH_ENABLED=false uvicorn responsibleai.dashboard.app:app --port 8765
# Production (auth + persistent DB)
RAI_API_KEYS=your-key-here \
RAI_DB_PATH=/data/responsibleai.db \
uvicorn responsibleai.dashboard.app:app --host 0.0.0.0 --port 8765 --workers 4
# Docker
docker compose up -d
Эндпоинты REST API
| Метод | Путь | Описание |
|---|---|---|
GET | /api/health | Проверка состояния — БД, аутентификация, OTEL, версия |
GET | /api/metrics | Аптайм, количество запросов, доля ошибок, расходы за месяц |
POST | /api/evaluate | Полная оценка → trust-рейтинг + комплаенс + паспорт |
GET | /api/trust-score/{model}/{provider} | История оценок + тренд дрейфа |
GET | /api/models | Все оценённые модели |
POST | /api/scan | Guardrails — обнаружение PII + маскирование |
POST | /api/hallucination | Анализ риска галлюцинаций |
POST | /api/cost/record | Фиксация расхода токенов |
GET | /api/cost/summary | Разбивка расходов по модели / команде / дню |
POST | /api/cost/analyze | Эффективность промптов — выявление избыточности |
POST | /api/cost/route | Маршрутизация задачи на самую дешёвую подходящую модель |
GET | /api/cost/models | Полный каталог цен на модели |
GET | /api/drift/{model}/{provider} | Тренд дрейфа + история |
GET | /api/audit | Журнал аудита с пагинацией (в рамках организации) |
GET | /api/audit/export | Экспорт журнала аудита в JSONL или CSV |
GET | /api/audit/summary | Счётчики аудита, сгруппированные по эндпоинтам |
GET | /api/redteam/payloads | Библиотека red-team-пейлоадов (10 векторов) |
POST | /api/redteam/analyze | Анализ ответов модели на предмет уязвимостей |
GET | /api/billing/usage | Расход токенов и состояние бюджета |
GET | /api/leaderboard | Публичный межмодельный рейтинг доверия (без аутентификации) |
GET | /api/leaderboard/{model}/{provider}/history | Динамика одной модели во времени (без аутентификации) |
GET | /api/leaderboard/{model}/{provider}/diagnostic | Результаты по каждому промпту — требуется план PRO |
POST | /api/trust-index/assess | Бесплатная публичная самооценка по открытому стандарту Trust Index |
GET | /api/trust-index/verify/{passport_id} | Проверка заявленного рейтинга Trust Index (без аутентификации) |
GET | /api/trust-index/check | Бесплатный и публичный — trust-рейтинг и число инцидентов для указанной модели/инструмента по точному имени (без аутентификации); именно этот эндпоинт вызывают rai_check_trust и интеграции LangChain/LangGraph/ADK |
GET | /api/trust-index/registry | Все оценённые модели/инструменты — сертифицированные и самодекларированные, начиная с новейших (без аутентификации) — источник данных для публичной страницы /registry |
GET | /api/trust-index/certified | Каталог сертифицированных паспортов (без аутентификации) |
POST | /api/trust-index/certify/{passport_id} | Сертификация паспорта — только для супер-администратора |
GET | /api/trust-index/badge/{passport_id}.svg | Встраиваемый бейдж доверия (Self-Assessed / Certified), без аутентификации |
POST | /api/incident-db/report | Сообщение о публично наблюдаемом AI-инциденте (без аутентификации, с ограничением частоты запросов) |
GET | /api/incident-db | Просмотр опубликованных инцидентов — фильтры по модели, провайдеру, серьёзности и типу (без аутентификации) |
GET | /api/incident-db/check | Проверка инцидентов по точному совпадению для модели/провайдера перед деплоем — PRO/ENTERPRISE |
GET | /api/incident-db/verify | Пересчёт хеш-цепочки по всем опубликованным записям (без аутентификации) |
POST | /api/orgs/{org_id}/keys/{key_id}/mfa/enroll | Регистрация API-ключа в TOTP MFA |
POST | /api/orgs/{org_id}/keys/{key_id}/mfa/verify | Проверка кода TOTP / резервного кода |
GET/POST | /api/governance/evidence | Чтение/запись записей governance-свидетельств, защищённых хеш-цепочкой |
GET/POST | /api/governance/approvals | Постановка решений REQUIRE_APPROVAL в очередь и их обработка |
Интерактивная документация доступна по адресу /api/docs. Публичная страница рейтинга — /leaderboard; опубликованная методика подсчёта оценок описана в compliance/LEADERBOARD_METHODOLOGY.md, а для запуска оценок используйте scripts/run_leaderboard_eval.py. Открытый стандарт Trust Index и проверка паспортов — по адресу /verify/{id}; подробности в compliance/TRUST_INDEX_SPEC.md. Бесплатная самооценка без регистрации — /assess; все оценённые модели и инструменты собраны в /registry. Файл /llms.txt указывает AI-краулерам и движкам ответов на эти страницы как на канонические источники — обоснование приведено в GAME_CHANGER_STRATEGY.md.
Production-возможности
| Возможность | Подробности |
|---|---|
| Аутентификация | Bearer-токен (RAI_API_KEYS) с RBAC (OWNER / ADMIN / ANALYST / VIEWER) |
| MFA | TOTP (RFC 6238) на шаге интерактивного входа, можно сделать обязательным на уровне организации, одноразовые резервные коды |
| Шифрование на уровне полей | Включается опционально (RAI_FIELD_ENCRYPTION_KEY) для audit_log.ip_address, контактных данных репортёров инцидентов, секретов вебхуков и MFA-секретов — с поддержкой ротации ключей (MultiFernet) |
| Rate limiting по организациям | Каждый Bearer-токен получает собственный бакет лимитов (ключ — SHA-256) — без общего глобального пула |
| CORS | Настраиваемые источники (RAI_ALLOWED_ORIGINS) |
| Заголовки безопасности | CSP, X-Frame-Options, X-Content-Type-Options |
| Структурированное логирование | JSON через structlog + ID запросов |
| База данных | SQLite (по умолчанию) или PostgreSQL (RAI_DATABASE_URL) с миграциями Alembic |
| Наблюдаемость | Трейсы и метрики OpenTelemetry (RAI_OTEL_ENDPOINT) |
| Вебхуки | Доставка с HMAC-подписью и очередь повторов, сохраняемая в БД (переживает перезапуски) |
| Обработка исключений | Сырые stack trace не доходят до клиентов |
| Governance-свидетельства | Хеш-цепочка, изоляция по организациям, защита от подделки (GET /api/governance/evidence) |
Миграции базы данных (Alembic)
Изменениями схемы управляет Alembic. Выполните alembic history, чтобы получить актуальный и достоверный список миграций и таблиц — это значение меняется достаточно часто, поэтому жёстко указанное здесь число быстро устареет; источник истины — сама команда.
# Upgrade to latest schema
RAI_DB_PATH=/var/lib/rai/governance.db alembic upgrade head
# PostgreSQL
RAI_DB_URL=postgresql://user:pass@host:5432/responsibleai alembic upgrade head
# Show migration history
alembic history
# Generate a new migration after changing engine.py
alembic revision --autogenerate -m "add_new_column"
Все миграции используют render_as_batch=True, поэтому работают на SQLite и PostgreSQL без изменений.
Вебхук-уведомления
Зарегистрируйте эндпоинт и получайте подписанные события при срабатывании governance-порогов.
# Register a Slack webhook
curl -X POST http://localhost:8765/api/webhooks \
-H "Authorization: Bearer your-key" \
-H "Content-Type: application/json" \
-d '{
"name": "ops-slack",
"url": "https://hooks.slack.com/services/...",
"events": ["drift_alert", "budget_exceeded", "guardrail_triggered"],
"provider": "slack",
"secret": "hmac-secret-for-signature-verification",
"max_retries": 5
}'
Доставки сохраняются в базе данных. Если сервер перезапустится в середине цикла повторов, фоновый воркер продолжит работу с места остановки при следующем запуске. Расписание повторов: 1 с → 5 с → 30 с → 2 мин → 10 мин.
Проверяйте полезную нагрузку по заголовку X-RAI-Signature-256: sha256=.
Docker
git clone https://github.com/Guruprasath-Annadurai/Whitepact.git
cd Whitepact
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
cp .env.example .env
# Edit .env — set RAI_API_KEYS
docker compose up -d
# Dashboard: http://localhost:8765
# API docs: http://localhost:8765/api/docs
PostgreSQL + Redis (горизонтальное масштабирование)
# .env
RAI_DATABASE_URL=postgresql://rai:secret@db-host:5432/responsibleai
RAI_REDIS_URL=redis://redis-host:6379/0
RAI_OTEL_ENDPOINT=http://otel-collector:4318
pip install "rai-governance-platform[dashboard,postgres,redis,telemetry]"
# Run migrations before first start
RAI_DB_URL=postgresql://rai:secret@db-host:5432/responsibleai alembic upgrade head
Асинхронный слой работы с базой данных использует SQLAlchemy с пулом соединений (pool_size=10, max_overflow=20, pool_pre_ping=True). Когда задан RAI_REDIS_URL, rate limiting переключается на хранилище с бэкендом Redis.
BiasBuster — оценка предвзятости в CI
# Fail CI when demographic bias exceeds threshold
biasbuster run \
--provider openai --model gpt-4o \
--probes gender-bias,racial-bias,cultural-bias \
--threshold 0.20 \
--output report --format html
from biasbuster import BiasBusterRunner, GenderBiasProbe, RacialBiasProbe
from biasbuster.providers import OpenAIProvider
import asyncio
async def main():
provider = OpenAIProvider(api_key="sk-...", model="gpt-4o")
runner = BiasBusterRunner(provider=provider)
suite = await runner.run([
GenderBiasProbe(threshold=0.20),
RacialBiasProbe(threshold=0.20),
])
print(f"Score: {suite.overall_score:.4f} {'PASSED' if suite.passed else 'FAILED'}")
asyncio.run(main())
Доступные пробы: gender-bias, racial-bias, age-bias, religious-bias, occupational-stereotype, cultural-bias
Подсчёт оценки: косинусное расхождение TF-IDF + асимметрия длины + расхождение тональности VADER, 95% доверительные интервалы по бутстрэпу, усиление при пересечении совместных отказов (×1.15).
PrivacyLabel — федеративная разметка данных на устройстве
from privacylabel import FederatedClient, FedAvgAggregator
client = FederatedClient(
node_id="hospital-node-01",
provider=MyProvider(),
epsilon_per_round=0.1,
total_epsilon=1.0,
delta=1e-6,
gradient_clip=1.0,
)
# Raw data stays on disk — only privatised gradients leave the device
summary = await client.train_round("data/local_records.jsonl")
print(f"Privacy budget used: ε={summary.privacy_spent['spent_epsilon']:.3f}")
Реализованы механизмы Лапласа, Гаусса, экспоненциальный механизм и DP-SGD. Поддерживается агрегация, устойчивая к византийским отказам, на основе геометрической медианы Вайцфельда.
GitHub Actions — шлюз контроля предвзятости в CI
- name: Bias evaluation
run: |
pip install "rai-governance-platform[openai]"
biasbuster run \
--provider openai --model gpt-4o-mini \
--probes gender-bias,racial-bias,cultural-bias \
--threshold 0.20
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Переменные окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
RAI_DB_PATH | governance.db | Путь к базе SQLite |
RAI_DB_URL | (не задано = SQLite) | Полный URL SQLAlchemy — имеет приоритет над RAI_DB_PATH |
RAI_DATABASE_URL | (не задано) | Псевдоним для RAI_DB_URL |
RAI_API_KEYS | (пусто = аутентификация выключена) | Bearer-токены, разделённые запятыми |
RAI_AUTH_ENABLED | true | Включение/отключение принудительной аутентификации |
RAI_REDIS_URL | (не задано = in-memory) | URL Redis для распределённого rate limiting |
RAI_RATE_LIMIT_DEFAULT | 100/minute | Ограничение частоты запросов на организацию (ключ — Bearer-токен) |
RAI_OTEL_ENDPOINT | (не задано = отключено) | HTTP-эндпоинт OTLP |
RAI_OTEL_SERVICE_NAME | responsibleai | Имя сервиса для трассировок |
RAI_ALERT_THRESHOLD | 5.0 | Падение Trust Score, при котором срабатывает оповещение о дрифте |
RAI_MONTHLY_BUDGET_USD | 10000.0 | Месячный лимит расходов на AI |
RAI_LOG_LEVEL | INFO | Уровень логирования |
RAI_LOG_JSON | true | Структурированные JSON-логи |
RAI_HOST | 127.0.0.1 | Адрес для привязки |
RAI_PORT | 8765 | Порт |
Также читаются эквиваленты с двойным префиксом WHITEPACT_* в тех случаях, когда они описаны в MIGRATION_WHITEPACT_V2.md; имена RAI_* остаются основным и всегда поддерживаемым вариантом.
Разработка
git clone https://github.com/Guruprasath-Annadurai/Whitepact.git
cd Whitepact
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# Full test suite (run it to see the current test count and coverage —
# see CONTRIBUTING.md's Running Tests section for why no number is
# hardcoded here)
pytest
# Dashboard tests only
RAI_DB_PATH=:memory: RAI_AUTH_ENABLED=false pytest tests/test_dashboard_api.py
# Webhook persistence tests
pytest tests/test_webhook_persistence.py
# MCP server tests
pytest tests/test_mcp_server.py
# Lint + type check
ruff check src/ tests/
mypy src/responsibleai src/biasbuster
Дорожная карта
Канонический план NOW/NEXT/LATER см. в ROADMAP.md. Список ниже — сохранённая для справки историческая сводка изменений по версиям.
-
v0.1 — BiasBuster: гендерная проба, 4 провайдера, CLI, интеграция с CI
-
v0.2 — Расовые, возрастные, религиозные и профессиональные пробы, HTML-генератор отчётов, федеративный DP в PrivacyLabel
-
v0.3 — Культурная предвзятость, интерсекциональный анализ, ансамбль DeepfakeDetector
-
v0.4 — Cost Intelligence (CostTracker, ModelRouter, тарифы для 16 моделей), Trust Drift Monitor
-
v0.5 — Governance Dashboard (FastAPI), Trust Score, AI Passport, Guardrails, галлюцинации, комплаенс, Red Team, CI/CD, Docker, SLA
-
v0.6 — Асинхронный PostgreSQL (SQLAlchemy), rate limiting через Redis, APM на OpenTelemetry, интеграционные тесты LLM
-
v1.0 — Оповещения о дрифте через WebSocket, эндпоинт Prometheus, многотенантный RBAC, API управления организациями
-
v1.1 — MCP-сервер (10 инструментов, 5 ресурсов), API журнала аудита, API red team, API биллинга, миграции Alembic, rate limiting на уровне организации, очередь повторных попыток webhook с сохранением в БД
-
v1.2 — Публичный Leaderboard, Trust Index и паспорта с встраиваемыми бейджами, база данных AI-инцидентов, TOTP MFA, расширенное шифрование полей, webhooks с сохранением в БД, полная переработка UI дашборда, брендирование white-label, по-настоящему работающий hosted-инстанс — полный список в
CHANGELOG.md -
Миграция WhitePact (
1.2.0→1.2.2) — ядро принятия решений по governance, MCP Streamable HTTP + OAuth/OIDC, уровневая классификация рисков + движок политик, доказательства на основе хеш-цепочки, процесс согласований, кворум из нескольких утверждающих + цепочки делегирования, обнаружение upstream MCP-инструментов, сканер доверия и цепочки поставок для MCP, HA-развёртывание через Helm, безопасность цепочки поставок (SBOM/provenance), инженерия релизов, open source governance, действующие листинги в официальном MCP Registry и Smithery — полный поэтапный журнал и перечень незавершённого — вMIGRATION_WHITEPACT_V2.md -
v2.0 и далее — поэтапный план до v6.0 см. в
VERSION_ROADMAP.md -
Стратегическое направление —
GAME_CHANGER_STRATEGY.mdописывает ставку на инфраструктуру (бесплатный публичный реестр доверия, агент-ориентированный примитив проверки доверия, цитируемость в AI-движках ответов) как альтернативу пути enterprise SaaS, аGAME_CHANGER_BUILD_PLAN.mdразбивает её на конкретные инженерные этапы применительно к текущей кодовой базе
Безопасность и гарантии открытого кода
Официальный проект OpenSSF/OSPS BadgeApp в настоящее время фиксирует OpenSSF Best Practices Silver и OSPS Baseline Level 1. Это добровольные подтверждения со стороны проекта, а не независимый аудит, тест на проникновение, сертификация SOC 2 или ISO. Актуальные технические границы и границы публичных заявлений поддерживаются в WHITEPACT_TRUST_STATUS.md и PUBLIC_TRUST_CLAIMS.md.
Потребители релизов могут ознакомиться с доказательствами подписанных тегов, процессом выпуска релизов, политикой безопасности, границей доказательств SLSA и руководством по верификации релизов. Повторно используемый пайплайн trusted-builder присутствует в ветке main. Релиз v1.2.6 полностью прошёл этот путь: его wheel и sdist были воспроизведены, захешированы, снабжены аттестациями, независимо проверены в задаче публикации, опубликованы на PyPI без пересборки, сверены по хешам с PyPI и приложены к GitHub Release вместе с CycloneDX SBOM. Независимая потребительская верификация была повторена 2026-08-31. Доказательства этого релиза оценены как соответствующие SLSA v1.2 Build L3; SLSA — это фреймворк соответствия требованиям, а не сертификация и не гарантия безопасности артефакта.
Дополнительные материалы
-
SPEC.md — действующий архитектурный контракт
-
MACHINE_AUTHORITY_PROBLEM.md — проблема, которую решает работа над слоем полномочий в v3
-
MACHINE_AUTHORITY_V1.md — перечень восьми ключевых инвариантов машинных полномочий (Delegation Graph, Autonomy Budget, Memory Firewall, Evidence Bundle и другие)
-
ENFORCEMENT_BOUNDARY.md — где именно заканчиваются полномочия каждого инварианта: встроенное принуждение (inline enforcement) против добровольной контрольной точки (voluntary chokepoint)
-
LEGACY_TO_MACHINE_AUTHORITY_MAP.md — сопоставление концепций RBAC/OAuth/IAM с их аналогами в WhitePact — для читателей, пришедших из мира традиционного контроля доступа
-
MIGRATION_WHITEPACT_V2.md — журнал миграции с разбивкой по этапам: что уже сделано, а что — явно нет
-
DEFINITION_OF_DONE.md — итоговый отчёт: что реально на сегодняшний день, а что нет — и всё это можно проверить
-
SECURITY_THREAT_MODEL.md — актуальная модель угроз безопасности и поверхности атаки
-
DETERMINISTIC_VS_PROBABILISTIC.md — почему решения по управлению (governance) детерминированы
-
SLA.md, ENTERPRISE_SECURITY.md, SECURITY.md — позиция по корпоративным вопросам и безопасности, изложенная честно
-
compliance/SOC2_ALTERNATIVE_PATH.md — реальные, бесплатные и независимо проверяемые сигналы доверия на данный момент; честный путь к настоящему SOC 2, когда на него найдётся бюджет
-
docs/ACCESSIBILITY.md, docs/INTERNATIONALIZATION.md — подход к доступности по стандарту WCAG2AA и архитектура i18n дашборда — оба с реальными автоматическими проверками в CI
-
compliance/PROJECT_CONTINUITY_PLAN.md — чек-лист доступа и восстановления, который понадобился бы второму человеку, если основатель станет недоступен; честно обозначен как план, а не как доказательство устойчивости к bus factor (второго человека с таким доступом пока нет)
Лицензия
MIT — см. LICENSE.