Uso de LLM em conformidade com o RGPD em empresas alemãs — o que você precisa antes que Claude ou GPT possa entrar em produção. Configuração prática com mascaramento de PII, logs de auditoria, Zero Data Retention na Anthropic / Google e a questão do AVV.
Os três componentes obrigatórios
- Mascaramento de PII antes da chamada ao upstream — você não pode enviar dados pessoais em texto claro sem filtragem a provedores dos EUA
- Acordo de processamento de dados (AVV / Art. 28 do RGPD) — diretamente com o provedor do modelo (Anthropic, Google, OpenAI); a Kunavo não oferece AVV
- Trilha de auditoria — cada chamada deve ser rastreável e documentada com limitação de finalidade
1) Mascaramento de PII — a parte prática
Antes que um prompt saia do seu próprio backend, ele passa por uma etapa de mascaramento. E-mails, números de telefone, nomes de pessoas, IBANs e números de seguridade social são substituídos por tokens:
# 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 textA tabela de correspondência permanece apenas localmente. Se a resposta do LLM precisar retornar dados pessoais reinseridos (por exemplo, “Olá, Sra. Schmidt”), fazemos a substituição somente depois da resposta. Assim, o upstream sempre vê apenas texto anonimizado.
2) AVV — quem precisa de qual contrato
- Você ↔ Kunavo: a Kunavo não oferece um AVV conforme o Art. 28 do RGPD. As solicitações são processadas nos Estados Unidos e encaminhadas a provedores upstream; o que eles fazem com o conteúdo é regido por suas próprias políticas de privacidade e retenção (consulte /legal/privacy)
- Você ↔ provedor do modelo: se sua carga de trabalho exigir um AVV, celebre-o diretamente com Anthropic, OpenAI ou Google, sob os termos comerciais ou empresariais deles, e chame o modelo diretamente. Ao usar a Kunavo, você não herda uma cadeia de subprocessadores
- Risco Schrems II: Anthropic e OpenAI estão sediadas nos Estados Unidos. Sem AVV, a Kunavo também não oferece cláusulas contratuais-tipo (SCC) para a transferência aos EUA. Se sua avaliação de risco exigir um provedor exclusivamente da UE, a Kunavo não é adequada: nenhum provedor do nosso catálogo está na UE, e toda solicitação passa pelo nosso gateway em US-East
3) Log de auditoria — registre cada chamada
Por solicitação: ID da solicitação, ID do usuário, modelo, prompt com hash, consumo de tokens, latência, ID da solicitação como chave de correlação nos seus próprios logs:
# 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}O X-Request-ID é sua própria chave: a Kunavo não avalia nem armazena esse cabeçalho, e nosso painel de uso não mostra qual provedor upstream atendeu uma chamada. Ali, você vê o próprio ID da chamada da Kunavo para cada chamada, com horário, modelo, tokens, custo e latência; faça a correspondência com seu log de auditoria usando o horário e o modelo.
Zero Data Retention (ZDR) — somente diretamente com o provedor do modelo
Por padrão, Anthropic e Google armazenam logs dos prompts por 30 dias (Anthropic) e 60 dias (Google) para monitoramento de abuso. Para cargas de trabalho sensíveis ao RGPD, você pode solicitar ZDR diretamente ao provedor, em seu próprio contrato. A Kunavo não oferece roteamento ZDR nem uma camada ZDR: as solicitações feitas pela Kunavo são processadas nos Estados Unidos e encaminhadas a provedores upstream, sujeitos às próprias regras de retenção.
- Anthropic ZDR: disponível para clientes Enterprise em contrato direto com a Anthropic. Não disponível pela Kunavo
- Google Vertex AI: condições semelhantes no seu próprio contrato com o Google Cloud, além da possibilidade de escolher uma região da UE (europe-west4 / Países Baixos). A Kunavo não roteia por uma região da UE
- OpenAI: Zero Data Retention somente para o nível Enterprise, em contrato direto com a OpenAI. Não pode ser intermediado pela Kunavo
Residência dos dados
- Roteamento da Kunavo: no gateway, em uma única região (US-East, Ashburn). Apenas o Anycast Edge à frente termina o TLS perto de você
- Persistência dos dados da conta: um único banco de dados primário em US-East, com snapshots diários criptografados dos volumes. Não oferecemos roteamento exclusivo para a UE
- Imposto sobre vendas: o checkout não informa imposto sobre vendas nem gera fatura; para obter um comprovante para a contabilidade, escreva para contact@kunavo.com
O que a maioria das equipes de compliance ignora
- O conteúdo do prompt é dado pessoal quando contém nomes — mesmo que o usuário não tenha digitado "Müller", mas apenas "meu nome é Petra". A mascaramento deve identificar heuristicamente nomes próprios e nomes de entidades
- O treinamento com seus dados é desativado por padrão na Anthropic e no Google, ao contrário do ChatGPT para consumidores. A própria Kunavo não treina com seu conteúdo; o que o provedor upstream faz com ele é regido pelas condições próprias do provedor. A Kunavo não oferece garantia contratual sobre isso
- Aplicar hash ao conteúdo das saídas — armazenamos apenas o hash, não o texto completo, caso seu DPA determine isso
- Direito de exclusão — em uma solicitação baseada no Art. 17 do RGPD, você precisa conseguir excluir o prompt dos seus logs. Isso só funciona se seus logs de auditoria puderem ser excluídos (ou seja, não estiverem em estruturas de blockchain somente de anexação)
Aviso legal e banner de cookies
Para um percurso completo de conformidade, consulte nosso /legal/impressum conforme o § 5 do DDG e a política de privacidade em /legal/privacy. O banner de cookies deve ser gerenciado no seu próprio site (por exemplo, com Usercentrics, Cookiebot ou Klaro) — a própria Kunavo usa apenas cookies funcionais.
Pronto? Faça o cadastro gratuito, carregue a partir de $10, use o modelo pay-as-you-go e mantenha um saldo que nunca expira. Se sua carga de trabalho exigir AVV, ZDR ou residência de dados na UE, celebre o contrato diretamente com o provedor do modelo.