Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Aufbewahren und Löschen in KI-Apps

Nach dieser Lektion: Ich kann Daten nach einer Regel und auf Wunsch einer Person löschen.

Lektion, 65 Min.8 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Daten aufbewahren, dann löschen

Eine Aufbewahrungsfrist ist die Regel, die sagt, wie lange eine App jede Art von Daten behält. Danach werden die Daten gelöscht.

Eine Chat-App, die jedes Gespräch für immer behält, trägt jedes Jahr mehr Risiko. Hier räumen Sie auf, löschen auf Anfrage und zählen, was übrig ist.

Am Ende dieser Lektion

Notiz

Ich kann Daten nach einer Regel und auf Wunsch einer Person löschen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Aufbewahrungsfristwie lange Daten behalten werden
Aufräumlaufein Auftrag, der löscht, was zu alt ist
Löschanfrageeine Person bittet darum, ihre Daten zu entfernen
Kopieein weiterer Ort, an dem dieselben Daten liegenein Zwischenspeicher
Sicherungeine gesicherte Kopie für die Wiederherstellung nach einem Fehler

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Aufbewahrungsregel legt eine Frist fest

Verschiedene Daten brauchen verschiedene Zeiten. Ein Chat darf 30 Tage bleiben. Eine Rechnung bleibt länger, weil man sie für die Buchführung braucht. In der Praxis sind es oft Jahre, diese Lektion rechnet der Einfachheit halber mit 365 Tagen.

Jeder Eintrag hat einen Tag, an dem er entstand. Ein Aufräumlauf rechnet sein Alter aus: heute minus dieser Tag. Ist das Alter größer als die Frist, wird der Eintrag gelöscht. Ein Eintrag genau an der Grenze bleibt.

Durchgerechnetes Beispiel: ein Aufräumlauf an Tag 100

EintragArtErstellt an TagAlterFristErgebnis
c1chat109030Gelöscht
c2chat802030Bleibt
r1rechnung2080365Bleibt
c3chat703030Bleibt, genau an der Grenze

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Löschanfrage muss jede Kopie erreichen

Eine Person darf darum bitten, ihre Daten zu löschen. Ihre Nachrichten können im Hauptspeicher liegen, in einem Zwischenspeicher, der alles beschleunigt, und in einer Sicherung.

Ein Löschen, das nur den Hauptspeicher erreicht, lässt den Rest übrig. Listen Sie zuerst jeden Ort auf. Die Datenschutz-Grundverordnung kennt ein Recht auf Löschung, das Grenzen hat. Fragen Sie Fachleute. Das ist keine Rechtsberatung.

Ein häufiger Fehler

Warnung

Viele denken, ein Löschen im Hauptspeicher lösche die Daten einer Person. Das stimmt nicht. Zwischenspeicher, Protokolle und Sicherungen halten Kopien. Eine Sicherung lässt sich nicht bearbeiten, sie wird erst frei, wenn sie abläuft. Sagen Sie der Person das, mit dem Datum.

Die Modellhilfe schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' '  return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Modellhilfe schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' '  }' '}' 'module.exports = { fragen };' >> model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Aufräumlauf schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const regeln = { chat: 30, rechnung: 365 };' 'const heute = 100;' 'const eintraege = [' '  { id: \"c1\", nutzer: \"n1\", tag: 10, art: \"chat\" },' '  { id: \"c2\", nutzer: \"n2\", tag: 80, art: \"chat\" },' '  { id: \"r1\", nutzer: \"n1\", tag: 20, art: \"rechnung\" },' '  { id: \"c3\", nutzer: \"n1\", tag: 70, art: \"chat\" },' '];' > retain.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Aufräumlauf schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function abgelaufen(e) {' '  return typeof regeln[e.art] === \"number\" && heute - e.tag > regeln[e.art];' '}' 'function ids(liste) {' '  return liste.map(function (e) { return e.id; });' '}' 'const speicher = {' '  aktiv: eintraege.filter(function (e) { return abgelaufen(e) === false; }),' '  zwischenspeicher: [eintraege[3]],' '  sicherung: [eintraege[0], eintraege[2], eintraege[3]],' '};' >> retain.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Aufräumlauf schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function uebrig(nutzer, erreicht) {' '  const rest = {};' '  Object.keys(speicher).forEach(function (name) {' '    const meine = speicher[name].filter(function (e) { return e.nutzer === nutzer; });' '    if (erreicht.indexOf(name) < 0 && meine.length > 0) rest[name] = ids(meine);' '  });' '  return rest;' '}' >> retain.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Aufräumlauf schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"heute abgelaufen: \" + JSON.stringify(ids(eintraege.filter(abgelaufen))));' '  console.log(\"nach dem Aufräumen behalten: \" + JSON.stringify(ids(speicher.aktiv)));' >> retain.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Aufräumlauf schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  console.log(\"n1 aus aktiv und zwischenspeicher gelöscht, übrig: \" + JSON.stringify(uebrig(\"n1\", [\"aktiv\", \"zwischenspeicher\"])));' '  console.log(\"n1 aus allen dreien gelöscht, übrig: \" + JSON.stringify(uebrig(\"n1\", [\"aktiv\", \"zwischenspeicher\", \"sicherung\"])));' '  console.log(\"Sicherung von Tag 90, 35 Tage aufbewahrt, Resttage: \" + Math.max(0, 90 + 35 - heute));' '  const q = \"Schreiben Sie in einem kurzen Satz, warum eine Sicherung Daten noch enthalten kann, obwohl sie gelöscht wurden.\";' '  const probe = \"Eine Sicherung ist eine getrennte Kopie, sie ändert sich also erst, wenn sie abläuft.\";' '  const antwort = await fragen([{ role: \"user\", content: q }], probe, 60);' '  console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> retain.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Aufräumlauf ausführen

Befehl
docker exec -w /home/node/project agent node retain.js

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was der Run ausgibt

ZeileWas sie zeigt
heute abgelaufen: ["c1"]Nur c1 ist älter als seine Frist
nach dem Aufräumen behalten: ["c2","r1","c3"]Was im Hauptspeicher bleibt
n1 aus aktiv und zwischenspeicher gelöscht, übrig: {"sicherung":[...]}Die Sicherung hält n1 noch
n1 aus allen dreien gelöscht, übrig: {}Jede Kopie erreicht
Resttage: 25Wann die Sicherung frei wird
Das Modell sagte: ...Ein Satz. Die Worte ändern sich bei jedem Lauf

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.