返回博客
合规·2026年5月25日·阅读约 8 分钟

符合 DSGVO 的 LLM 使用——PII 脱敏、AVV 和零数据保留

面向希望以符合 GDPR 的方式在生产环境使用 Claude / Gemini / GPT 的德国企业的实用指南。包括 PII 脱敏代码、应与谁签署 AVV、直接向 Anthropic / Google(Enterprise)申请 Zero Data Retention、带 Request-ID 关联的审计日志,以及 Schrems II 问题。

德国企业如何合规使用 GDPR LLM——在 Claude 或 GPT 进入生产环境前需要准备什么。包含 PII 屏蔽、审计日志、Anthropic / Google 的零数据保留,以及 AVV 问题的实用设置。

三个必备组成部分

  1. 在调用上游供应商前屏蔽 PII——不得未经筛选就将明文个人数据发送给美国供应商
  2. 数据处理协议(AVV / GDPR 第 28 条)——直接与模型提供商(Anthropic、Google、OpenAI)签署;Kunavo 不提供 AVV
  3. 审计追踪——记录每次调用,并注明处理目的

1)PII 屏蔽——实践部分

提示词离开您自己的后端之前,会经过屏蔽步骤。电子邮件、电话号码、人名、IBAN、社会保险号都会被替换为 Token:

pii_mask.py
# Vor jedem LLM-Aufruf PII maskieren — niemals Klartext-Personendaten
# an die Upstream-API senden.
import re
from openai import OpenAI

PII_PATTERNS = [
    (re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"), "<EMAIL>"),
    (re.compile(r"\b\d{4,}\b"), "<NUMBER>"),
    (re.compile(r"\b(?:\+49|0)\s*\d{2,4}\s*\d{4,8}\b"), "<PHONE_DE>"),
]

def redact(text: str) -> tuple[str, dict[str, str]]:
    redacted = text
    mapping: dict[str, str] = {}
    for i, (pat, tag) in enumerate(PII_PATTERNS):
        for match in pat.finditer(text):
            key = f"{tag}_{i}_{match.start()}"
            mapping[key] = match.group(0)
            redacted = redacted.replace(match.group(0), f"[{key}]")
    return redacted, mapping

def restore(text: str, mapping: dict[str, str]) -> str:
    for key, original in mapping.items():
        text = text.replace(f"[{key}]", original)
    return text

映射表仅保留在本地。如果 LLM 回答需要返回已重新插入的个人数据(例如“Schmidt 女士,您好”),我们会在收到回答后才进行替换。这样,上游供应商始终只能看到匿名化文本。

2)AVV——谁需要哪份协议

  • 你 ↔ Kunavo:Kunavo 不提供 GDPR 第 28 条规定的 AVV。请求会在美国处理并转发给上游提供商;这些提供商如何处理内容,由其各自的隐私和数据保留条款规定(参见 /legal/privacy)
  • 你 ↔ 模型提供商:如果你的工作负载需要 AVV,请直接按照 Anthropic、OpenAI 或 Google 的商业或企业条款与其签署,并直接在那里调用模型。通过 Kunavo,你不会继承一串分包处理方链条
  • Schrems-II 风险:Anthropic 和 OpenAI 位于美国。没有 AVV,Kunavo 也不会为传输至美国提供标准合同条款(SCC)。如果你的风险评估要求使用纯欧盟提供商,Kunavo 不适合该场景:我们的目录中没有提供商位于欧盟,且每个请求都会经过我们位于 US-East 的网关

3)审计日志——记录每次调用

每个请求:Request-ID、User-ID、模型、经过哈希处理的 prompt、token 使用量、延迟;在你自己的日志中使用 Request-ID 作为关联键:

audit.py
# Jeder LLM-Aufruf wird in einem unveränderlichen Audit-Log festgehalten
import json, time, uuid
from datetime import datetime

def call_with_audit(user_id: str, prompt: str, model: str) -> dict:
    request_id = str(uuid.uuid4())
    redacted_prompt, mapping = redact(prompt)

    # Audit-Log VOR dem Call schreiben
    audit_log.write({
        "request_id": request_id,
        "user_id": user_id,
        "timestamp": datetime.utcnow().isoformat(),
        "model": model,
        "prompt_redacted": redacted_prompt,
        "prompt_hash": hashlib.sha256(prompt.encode()).hexdigest(),
        "pii_tags_count": len(mapping),
    })

    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": redacted_prompt}],
        extra_headers={
            "X-Request-ID": request_id,  # nur für deine eigenen Logs; Kunavo wertet ihn nicht aus
        },
    )

    response_text = resp.choices[0].message.content
    # Bei Bedarf PII zurück mergen (nur in der lokalen DB)
    final_text = restore(response_text, mapping)

    audit_log.write({
        "request_id": request_id,
        "response_redacted": response_text,
        "tokens": resp.usage.model_dump(),
        "duration_ms": int((time.time() - start) * 1000),
    })
    return {"text": final_text, "request_id": request_id}

X-Request-ID 是你自己的密钥:Kunavo 不会解析或存储该请求头,我们的使用情况仪表板也不会显示哪个上游提供商处理了某次调用。仪表板会按每次调用显示 Kunavo 自己的 Call-ID、时间、模型、token、费用和延迟;你可以通过时间和模型将其与自己的审计日志进行匹配。

零数据保留(ZDR)——仅可直接向模型提供商申请

默认情况下,Anthropic 和 Google 会分别保留 prompt 日志 30 天(Anthropic)和 60 天(Google),用于滥用监控。对于涉及 GDPR 敏感数据的工作负载,你可以在提供商处根据自己的合同直接申请 ZDR。Kunavo 不提供 ZDR 路由或 ZDR 层级:通过 Kunavo 发送的请求会在美国处理并转发给上游提供商,适用这些提供商各自的数据保留规则。

  • Anthropic ZDR:面向企业客户提供,需直接与 Anthropic 签订合同。Kunavo 不提供
  • Google Vertex AI:在你自己的 Google Cloud 合同下适用类似条款,并可选择欧盟区域(europe-west4 / 荷兰)。Kunavo 不通过欧盟区域进行路由
  • OpenAI:仅 Enterprise 层级提供 Zero Data Retention,需直接与 OpenAI 签订合同。Kunavo 无法代为提供

数据驻留

  • Kunavo 路由:位于网关中,处于单一区域(US-East,Ashburn)。只有前置的 Anycast 边缘节点会在你附近终止 TLS
  • 账户数据持久化:位于 US-East 的单一主数据库,每日创建加密卷快照。我们不提供仅限欧盟的路由
  • 增值税:结账时不会显示增值税,也不会生成发票;如需用于会计记账的凭证,请联系 contact@kunavo.com

大多数合规团队忽略的事项

  • 提示内容在包含姓名时属于个人数据——即使用户没有输入“穆勒”,而只是输入“我叫佩特拉”。脱敏应通过启发式方法识别名字和专有名称
  • 使用你的数据进行训练:Anthropic 和 Google 默认关闭该功能(与面向消费者的 ChatGPT 相反)。Kunavo 自身不会使用你的内容进行训练;上游提供商如何处理这些内容,由其自身条款规定。Kunavo 不对此作出合同保证
  • 对输出内容进行哈希处理——如果你的 DPA 有此要求,我们只存储哈希,不存储完整文本
  • 删除权——收到 GDPR 第 17 条请求时,你必须能够从日志中删除提示内容。只有当你的审计日志可删除时,这才可行(即不能存储在仅追加的区块链结构中)

法律公告与 Cookie 横幅

如需完整的合规流程,请参阅我们依据 DDG 第 5 条提供的 /legal/impressum 以及 /legal/privacy 中的隐私声明。Cookie 横幅由你在自己的网站上维护(例如使用 Usercentrics、Cookiebot 或 Klaro)——Kunavo 自身仅设置功能性 Cookie。

准备好了吗?免费注册,充值金额从 $10 起,按量付费,余额永不过期。如果你的工作负载需要 AVV、ZDR 或欧盟数据驻留,请直接与模型提供商签订合同。