mcpField
C
ComplyEdge TrustLint: offline EU AI Act compliance checks

ComplyEdge TrustLint: offline EU AI Act compliance checks

本地服务
complyedge.io法律与政务42 天前更新

关于 ComplyEdge TrustLint: offline EU AI Act compliance checks

ComplyEdge TrustLint 是用于离线合规检查的命令行工具,可按 EU AI Act、GDPR 和 HIPAA 规则检查项目。它适合需要在本地进行规则审查的开发者;与托管 ComplyEdge API 客户端不同,TrustLint 无需 API 密钥。

主要功能

  1. 01离线检查 EU AI Act 规则
  2. 02覆盖 GDPR 与 HIPAA 规则
  3. 03作为独立命令行工具运行
  4. 04可通过 GitHub Action 使用

适用场景

  1. 01在发布前检查 AI 项目合规项
  2. 02在 CI 流程中运行离线规则检查

MCP 相关

README 未说明 TrustLint 离线命令行工具与 MCP 的关系。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"complyedge-complyedge": {
"command": "npx",
"args": [
"-y",
"@complyedge/mcp"
]
}
}
}
启动命令npx -y @complyedge/mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicomplyedge0.2.23
npm@complyedge/mcp0.2.3

工具

3

收录的工具列表 · 更新于 1 天前

参数类型必填说明
textstring是要评估的非空文本。
jurisdictionenum否可选的语料范围。EU | US | GLOBAL

详细介绍

ComplyEdge Python SDK

证明 AI 做出了什么决定,而不保留它看到的内容。每个请求和回答都会根据引用法律条文的欧盟 AI 法案公开规则进行检查:每项决定一条记录,绝不复制文本。

选择合适的包

complyedge 是用于托管 ComplyEdge 运行时 API 的 Python 客户端。它 会在你的应用中强制执行策略决定,并记录由此产生的 证据链。如需无需 API 密钥的离线命令行检查工具,请改用 TrustLint。

安装

pip install complyedge

快速入门:三行实现欧盟 AI 法案合规

from complyedge import compliance_check

@compliance_check(
    jurisdiction="EU",
    agent_id="my-agent",
    decision_context={  # what only you know, for an ADCR-complete record
        "deciding_system": {"version": "gpt-5.4-2026-08-01"},
        "purpose_ref": "purpose:support-replies",
        "data_categories": ["contact"],
    },
)
def my_agent(prompt):
    return llm.generate(prompt)  # every input and output checked

就是这样。每个输入和输出都会根据欧盟 AI 法案规则集(第 5 条、第 50 条、GPAI)进行检查。违反阻止规则的输入和输出会在到达用户之前被拦截。每次检查都会生成一条记录,其中包含 event_id、触发的规则(如有)、时间戳和文本的密钥哈希;每次规则拦截也会附上相应的法律引文。decision_context 是可选的:不提供时,每次检查仍会运行并记录,但该记录不符合 ADCR 的 Record 类要求(参见告诉记录只有你才知道的信息)。默认故障模式 open 下,API 中断时流量会未经检查且不留记录地通过;设置 COMPLYEDGE_FAIL_MODE=closed,或传入 config=ComplianceConfig(fail_mode="closed"),即可改为抛出 ComplianceUnavailableError。没有 API 密钥时,装饰器始终会在未经检查的情况下运行函数。

分类器(eu-ai-act-* MCP)评估的是系统。ComplyEdge 检查并记录的是这条提示词或输出。此处的第 50 条针对未标注或欺骗性使用,而非 C2PA 水印。

每行都是一种替代方案;选择你需要的即可。

pip install complyedge                               # this SDK: hosted checks and the decorator
pip install 'complyedge[mcp]'                        # plus the MCP server: complyedge-mcp
pip install 'complyedge[agents]'                     # plus the OpenAI Agents guardrail
pip install trustlint                                # offline linter CLI, separate package
npx -y @complyedge/mcp                               # the MCP server on Node, no Python
claude mcp add complyedge -- npx -y @complyedge/mcp  # add the Node MCP server to Claude Code

OpenAI Agents 扩展(托管路径;需要 COMPLYEDGE_API_KEY):from complyedge.agents import create_compliance_guardrail

GitHub Action:uses: complyedge/trustlint-action@v1

默认情况下,装饰器会从 COMPLYEDGE_API_KEY 环境变量读取 API 密钥。传入 api_key_env="MY_VAR" 可使用其他环境变量。

多司法辖区强制执行

jurisdiction 指最终用户所在的位置,而非你的公司注册地:只要 AI 系统的输出在欧盟使用,欧盟 AI 法案就适用,无论提供者或部署者在哪里设立(第 2 条第 1 款 (c) 项)。默认值:EU。

值托管 API 确定性强制执行的内容
EU欧盟 AI 法案:第 5 条禁止的实践,以及第 6 条高风险、第 50 条和 GPAI(第 51 至 55 条)中针对描述缺少控制措施的文本所触发的规则;提示词注入检测;个人数据和机密信息(引用 GDPR)。任何触发的规则都会拦截调用。
US、US-*SEC Regulation FD 选择性披露 + 提示词注入检测

HIPAA、COPPA、TCPA、BIPA、CCPA、NYC LL144 和 ECPA 规则,以及 GDPR YAML 规则(同意、数据最小化、DPIA、擦除、违规通知、数据传输),可通过 TrustLint 离线运行(pip install trustlint),而不在托管的 /v1/check 路径上运行。上述托管个人数据和机密信息规则引用 GDPR 第 5 条第 1 款 (c) 项和第 32 条第 1 款。

@compliance_check(jurisdiction="EU", agent_id="hr-screening")
def hr_screening(candidate: str) -> str:
    return llm.generate(candidate)

按规则限定范围(例如仅检查第 5 条)的功能正在规划中,但尚未在 SDK 中开放:目前会运行所选司法辖区的所有规则。

其他安装选项

# Development setup
pip install 'complyedge[dev]'

# Local development from source
pip install -e ./sdks/python

客户端 API:不使用装饰器

from complyedge import ComplyEdge

ce = ComplyEdge(api_key="your-key")
result = ce.check("AI-generated content", jurisdiction="EU")

if result.allowed:
    print("Content approved")
else:
    for v in result.violations:
        print(f"{v.rule_id}: {v.rule_description}")  # the rule's legal citation
记录每项检查代表谁执行

每条审计记录都有 user_id、user_role 和 session_id。只有在你发送这些字段时才会填入;如果省略,它们在审计导出中的对应列将为空。

# Per call
ce.check(text, user_id="ref_5d81e2c4", user_role="recruiter", session_id="conv_abc")

# Client defaults for an agent that always acts for the same person
ce = ComplyEdge(api_key=api_key, user_id="ref_5d81e2c4", user_role="recruiter", session_id=run_id)

# Decorator: a dict, or a zero-argument function read on every call
@compliance_check(jurisdiction="EU",
                  attribution=lambda: {"user_id": current_user.id, "session_id": request_id})
def answer(prompt: str) -> str:
    ...

ComplyEdgeClient.check_compliance() 和异步客户端接受相同的三个关键字参数;这些参数会覆盖 context 中相同的键。请使用你自己的系统中的稳定标识符,绝不要使用姓名或电子邮件地址。user_id 和 session_id 会使用你账户自己的密钥存储为带密钥的假名(p1:...),而不是以发送时的形式存储;user_role 则按发送内容存储,因此必须填写角色,而不是个人。

切勿在这些字段中发送凭据:登录令牌、会话 Cookie、JWT 或 API 密钥会出现在每条审计记录和导出中。如果你的会话 ID 同时也是登录令牌,请发送其哈希值(例如 SHA-256 的前 16 个十六进制字符)。ComplyEdge 会在写入记录前,将任何看起来像令牌或密钥的值替换为 redacted: 加上其哈希值。

证明某条记录对应给定文本

ComplyEdge 绝不会存储提示词或答案。记录会保留 text_hash,即使用你账户自己的密钥对输入计算的带密钥哈希值(HMAC-SHA-256),因此无法在本地重新计算。请将 event_id 与你自己的文本副本保存在一起,需要证明两者对应关系时向 API 发起请求:

result = ce.check(text)
app_log.info("chat turn", prompt=text, complyedge_event_id=result.event_id)  # your own log
# later, in an audit or a complaint:
assert ce.verify_input(result.event_id, text)  # True only for this exact text

可选:向 ComplyEdge(...) 传入 receipt_journal="/var/lib/app/complyedge-receipts.jsonl"(或自行使用 ReceiptJournal),即可在每次非沙盒检查后,将 event_id、text_hash 和摘要追加到本地。日志不会存储提示词;文本仍保存在你的应用日志中。

完整演练,包括提前删除自己的副本时会发生什么: https://complyedge.io/docs/audit-reconciliation.html

result.text_hash_alg 为 "hmac-sha256-1"; 引入带密钥哈希之前写入的记录没有此字段,并保存普通的 SHA-256;verify_input 也会检查这种哈希。

告诉记录只有你才知道的信息

审计记录可以包含 ComplyEdge 无法知晓的字段:AI 系统的版本、处理目的,以及决策所用的个人数据类别。通过 decision_context 传入这些字段后,它们会作为 ADCR 0.1.0 字段写入记录(https://complyedge.io/producer-profile/)。`decision_context` 是可选的:不提供时,检查仍会运行并记录,但记录不符合 ADCR class Record。传入时,必须提供 deciding_system.version、purpose_ref 和 data_categories(没有类别时传入 []);其他所有键均为可选。check()、is_safe()、全局函数 check() 和 is_safe()、check_compliance(),以及装饰器都支持此参数(可传入字典,或每次调用时读取的无参函数)。

result = ce.check(
    text,
    decision_context={
        "deciding_system": {"version": "gpt-5.4-2026-08-01"},
        "purpose_ref": "purpose:support-replies",
        "data_categories": ["contact"],
    },
)
试用案例而不记录

sandbox=True 会调用 POST /v1/sandbox/check:使用相同的规则、相同的租户设置并给出相同的判定,但不会创建审计记录、产生用量,也不会计入套餐的每日限额(沙盒调用有自己的限额:每分钟 60 次、每天 1,000 次)。可在接入集成前用它测试案例。沙盒结果不能作为证据:result.sandbox 为 True,且 result.audit_logged 为 False。

result = ce.check("Score users based on their social behavior", sandbox=True)
print(result.blocked, result.sandbox)  # True True

或者使用全局便捷函数:

from complyedge import is_safe, check
import os

api_key = os.environ["COMPLYEDGE_API_KEY"]

# Boolean check
if not is_safe(text, api_key=api_key, jurisdiction="EU"):
    raise ValueError("Compliance violation")

# Full result
result = check(text, api_key=api_key, jurisdiction="EU")

轮换密钥

密钥仅在创建时显示一次,并以哈希形式存储:密钥丢失后无法找回,只能替换。按以下顺序轮换,无需停机:

  1. 在控制面板中打开 API Key,并在卡片上点击 Rotate key(或在「其他活动密钥」下的某一行点击 Rotate),然后确认。系统会生成并显示一个新密钥,此时旧密钥仍可使用。
  2. 将新密钥填入集成配置(COMPLYEDGE_API_KEY 或传递给客户端的 api_key),然后部署。
  3. 返回密钥显示页面,点击 Revoke previous key。从那一刻起,使用旧密钥的请求将失败。如果需要更多时间,请选择 Keep both for now,之后可在 API Key 页面撤销旧密钥,该页面会列出所有活动密钥。

密钥泄露时:先撤销密钥(点击卡片上的 Revoke this key,或所在行的 Revoke),然后再轮换。通过 API 执行相同流程时,先调用 POST /v1/account/api-keys,再对旧密钥调用 DELETE /v1/account/api-keys/{key_id}。

公开信任页面上的公司名称

公开的 AI Trust Center 和 Enforcement Seal 会显示同一个公司名称:即控制面板「Account」下「Profile」中设置的名称。PATCH /v1/tenant/trust 中的 display_name 会设置相同的值,因此 API 调用和个人资料中的名称始终一致。电子邮件地址用于登录,无法在控制面板中更改。

区域

有两个区域,每个账户只能选择一个所属区域。注册并创建第一个 API 密钥时选择:EU(eu.api.complyedge.io,密钥前缀为 ce_eu_)或 US(api.complyedge.io,密钥前缀为 ce_)。SDK 会读取前缀并选择主机。之后如需更改区域,请在控制面板中选择 Request a region change;系统会为新区域提供一个新密钥。base_url、region、COMPLYEDGE_API_URL 和 COMPLYEDGE_REGION 只用于选择要调用的主机,不会更改账户所属区域。

你的提示词和审计记录会在所属区域处理和存储。区域不会决定检查哪些法律:这由每次检查中的 jurisdiction 字段决定。没有任何普遍适用的法律要求必须选择其中一个区域。美国法律不要求数据存储在美国;GDPR 允许在采取保障措施(例如标准合同条款(第五章))的情况下向 EU 以外地区传输数据。请根据自己的合同要求或客户要求选择区域。

ce = ComplyEdge(api_key="ce_eu_...")   # -> https://eu.api.complyedge.io
ce = ComplyEdge(api_key="ce_...")      # -> https://api.complyedge.io

覆盖设置按优先级从高到低依次为:base_url=(或 COMPLYEDGE_API_URL)、region="us" | "eu"(或 COMPLYEDGE_REGION)、密钥前缀,最后是 EU。向另一个区域的服务集群提供密钥时,系统会在进行任何查找前拒绝请求,并返回 401 {"detail": {"error": "wrong_region", "use": "<host>"}}。

MCP 服务:将 ComplyEdge 用作 AI Agent 工具

用于根据 ComplyEdge 的 TrustLint 规则库检查提示词和输出,并提供带引用的检查结果的 Agent/MCP 工具:它不是又一个欧盟《人工智能法案》风险等级聊天机器人,也不是法律搜索数据库。

托管的 Streamable HTTP(推荐用于远程客户端): https://mcp.complyedge.io/mcp

本地 stdio,适用于任何兼容 MCP 的宿主(Claude、Cursor、Inspector):

pip install 'complyedge[mcp]>=0.2.8'
python -m complyedge.mcp_server
# or: complyedge-mcp

添加到 MCP 客户端配置中(例如 claude_desktop_config.json):

{
  "mcpServers": {
    "complyedge": {
      "command": "complyedge-mcp"
    }
  }
}

(command/args 中使用 python -m complyedge.mcp_server 也有效。)

提供的工具(TrustLint 离线 YAML 规则集):

工具描述
check_compliance根据 TrustLint 规则检查文本。返回 PASS/FAIL,并提供带引用的检查结果。
list_rules列出可用的 TrustLint 规则,可按司法管辖区筛选。
scan_prompt生成前提示词扫描。返回 SAFE 或 RISK_DETECTED。

这些工具无需 API 密钥。可选附加组件会安装 mcp 和 trustlint(引擎及捆绑规则)。此 MCP 路径不会运行 REST API 策略引擎。

可选的托管沙盒。 在服务的环境中设置 COMPLYEDGE_API_KEY,即可启用第四个工具:

工具描述
sandbox_check沙盒模式下的托管强制执行(POST /v1/sandbox/check):使用你所在租户的真实规则和设置,判定结果与生产环境相同,且不会记录任何内容:没有审计条目、不会产生用量,也不会计入套餐的每日限额(沙盒调用有单独的上限:每分钟 60 次、每天 1,000 次)。返回带规则 ID 和条文引用的 BLOCKED,或 ALLOWED。绝不可作为证据。

没有密钥时,该工具不会列出,服务也会保持完全离线。

在托管服务(https://mcp.complyedge.io/mcp)上,sandbox_check 始终会列出,且仅当调用方在 MCP 连接上通过 Authorization: Bearer <key> 标头发送自己的密钥时才可使用(在 MCP 客户端的标头中设置)。密钥绝不会作为工具参数,也绝不会被记录;托管服务不会保存密钥。

文档

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。