Penggunaan LLM yang sesuai GDPR di perusahaan Jerman — hal yang Anda perlukan sebelum Claude atau GPT boleh masuk produksi. Penyiapan praktis dengan masking PII, log audit, Zero Data Retention pada Anthropic / Google, dan pertanyaan tentang AVV.
Tiga komponen wajib
- Masking PII sebelum panggilan upstream — Anda tidak boleh mengirim data pribadi dalam teks biasa tanpa penyaringan kepada penyedia AS
- Perjanjian Pemrosesan Pesanan (AVV / Pasal 28 DSGVO) — langsung dengan penyedia model (Anthropic, Google, OpenAI); Kunavo tidak menyediakan AVV
- Jejak audit — setiap panggilan dapat ditelusuri dan didokumentasikan dengan pembatasan tujuan
1) Masking PII — bagian praktis
Sebelum prompt meninggalkan backend Anda, prompt tersebut melewati langkah masking. Email, nomor telepon, nama orang, IBAN, dan nomor jaminan sosial digantikan dengan token:
# 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 textTabel pemetaan tetap hanya secara lokal. Jika respons LLM perlu mengembalikan data pribadi yang disisipkan kembali (misalnya “Halo Ibu Schmidt”), kami melakukan substitusi setelah respons diterima. Dengan demikian, upstream selalu hanya melihat teks yang dianonimkan.
2) AVV — siapa memerlukan perjanjian yang mana
- Anda ↔ Kunavo: Kunavo tidak menyediakan perjanjian pemrosesan data (AVV) berdasarkan Pasal 28 GDPR. Permintaan diproses di Amerika Serikat dan diteruskan ke penyedia upstream; penggunaan konten oleh penyedia tersebut diatur oleh ketentuan privasi dan retensi mereka sendiri (lihat /legal/privacy)
- Anda ↔ penyedia model: Jika workload Anda memerlukan AVV, buat perjanjian langsung dengan Anthropic, OpenAI, atau Google berdasarkan ketentuan bisnis atau Enterprise mereka, lalu panggil model langsung di sana. Dengan menggunakan Kunavo, Anda tidak mewarisi rantai subpemroses
- Risiko Schrems II: Anthropic dan OpenAI berbasis di AS. Tanpa AVV, Kunavo juga tidak menyediakan klausul kontrak standar (SCC) untuk transfer ke AS. Jika penilaian risiko Anda mensyaratkan penyedia yang sepenuhnya berada di UE, Kunavo tidak cocok: tidak ada penyedia dalam katalog kami yang berbasis di UE, dan setiap permintaan melewati gateway kami di US-East
3) Log audit — catat setiap panggilan
Per permintaan: Request-ID, User-ID, model, prompt yang di-hash, penggunaan token, latensi, Request-ID sebagai kunci korelasi dalam log Anda sendiri:
# 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 adalah kunci Anda sendiri: Kunavo tidak mengevaluasi atau menyimpannya, dan dasbor penggunaan kami tidak menunjukkan penyedia upstream mana yang menangani suatu panggilan. Di sana Anda melihat Call-ID milik Kunavo untuk setiap panggilan, beserta waktu, model, token, biaya, dan latensi; cocokkan dengan log audit Anda berdasarkan waktu dan model.
Zero Data Retention (ZDR) — hanya langsung di penyedia model
Secara default, Anthropic dan Google menyimpan log prompt selama masing-masing 30 hari (Anthropic) dan 60 hari (Google) untuk pemantauan penyalahgunaan. Untuk workload sensitif DSGVO, Anda dapat meminta ZDR langsung kepada penyedia dalam kontrak Anda sendiri. Kunavo tidak menyediakan perutean ZDR maupun tingkat ZDR: permintaan melalui Kunavo diproses di AS dan diteruskan ke penyedia upstream yang tunduk pada aturan penyimpanan mereka sendiri.
- Anthropic ZDR: untuk pelanggan Enterprise dalam kontrak langsung dengan Anthropic. Tidak tersedia melalui Kunavo
- Google Vertex AI: ketentuan serupa dalam kontrak Google Cloud Anda sendiri, ditambah opsi memilih wilayah UE (europe-west4 / Belanda). Kunavo tidak merutekan melalui wilayah UE
- OpenAI: Zero Data Retention hanya untuk tingkat Enterprise, dalam kontrak langsung dengan OpenAI. Tidak dapat diperantarai melalui Kunavo
Residensi data
- Perutean Kunavo: di dalam gateway, dalam satu wilayah saja (US-East, Ashburn). Hanya edge anycast yang ditempatkan di depan yang mengakhiri TLS di dekat Anda
- Persistensi data akun: satu database primer di US-East dengan snapshot volume harian yang terenkripsi. Kami tidak menyediakan perutean khusus UE
- Pajak pertambahan nilai: Checkout tidak mencantumkan PPN dan tidak membuat faktur; untuk bukti pembayaran bagi pembukuan, kirim email ke contact@kunavo.com
Yang sering terlewatkan oleh sebagian besar tim kepatuhan
- Isi prompt bersifat pribadi jika memuat nama — meskipun pengguna tidak memasukkan “Müller”, melainkan hanya “nama saya Petra”. Masking sebaiknya secara heuristik mendeteksi nama depan dan nama diri
- Pelatihan dengan data Anda secara default dinonaktifkan di Anthropic dan Google (berbeda dengan konsumen ChatGPT). Kunavo sendiri tidak melatih model dengan konten Anda; tindakan penyedia upstream terhadapnya diatur oleh ketentuan mereka sendiri. Kunavo tidak memberikan jaminan kontraktual mengenai hal ini
- Hash isi output — kami hanya menyimpan hash di sisi Anda, bukan teks lengkap, jika DPA Anda menetapkannya
- Hak untuk menghapus — jika ada permintaan GDPR Pasal 17, Anda harus dapat menghapus prompt dari log Anda. Ini hanya berfungsi jika log audit Anda dapat dihapus (yaitu tidak berada dalam struktur blockchain append-only)
Impressum & spanduk cookie
Untuk rangkaian kepatuhan yang lengkap, lihat /legal/impressum kami sesuai § 5 DDG serta kebijakan privasi di /legal/privacy. Anda mengelola banner cookie di situs web Anda sendiri (misalnya dengan Usercentrics, Cookiebot, atau Klaro) — Kunavo sendiri hanya menggunakan cookie fungsional.
Siap? Daftar gratis, isi saldo mulai $10, bayar sesuai pemakaian, dan saldo tidak pernah kedaluwarsa. Jika workload Anda memerlukan AVV, ZDR, atau residensi data UE, buat kontrak langsung dengan penyedia model.