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

Personenbezogene Daten aus Prompts heraushalten

Nach dieser Lektion: Ich kann personenbezogene Daten vor einem Modellaufruf durch Platzhalter ersetzen und danach wiederherstellen.

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

Das Ticket mit der Telefonnummer

Personenbezogene Daten aus Prompts herauszuhalten heißt: Das Modell sieht nur, was es für die Aufgabe braucht. Das ist wichtig, weil ein Prompt an einen anderen Dienst geht und oft in einem Protokoll landet.

Ein Support-Tool schickt jedes Ticket an ein Modell, das eine Antwort entwirft. Das Ticket enthält einen Namen, eine Adresse und eine Nummer. Die Antwort braucht nichts davon. Das Tool kann sie durch Platzhalter ersetzen und wieder zurücktauschen.

Am Ende dieser Lektion

Notiz

Ich kann personenbezogene Daten vor einem Modellaufruf durch Platzhalter ersetzen und danach wiederherstellen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Personenbezogene Datenjede Angabe, die eine lebende Person identifiziert
Datenminimierungnur senden, was die Aufgabe braucht
Maskiereneinen Wert durch einen Ersatz austauschen
Platzhaltereine Marke für einen entfernten Wert[EMAIL_1]
Zuordnungdie Tabelle, die jeden Platzhalter mit seinem Wert verbindet

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

Senden Sie nur, was die Aufgabe braucht

Fragen Sie zuerst, ob das Modell den Wert überhaupt braucht. Eine Antwort auf eine Beschwerde braucht die Beschwerde, nicht die Telefonnummer. Entfernen Sie, was nicht nötig ist.

Muss die Antwort eine Person nennen, nehmen Sie einen Platzhalter. Das Modell schreibt „Liebe [NAME_1]“, und Ihr eigener Code setzt danach den echten Namen wieder ein.

Beispiel: vorher und nachher

WertAn das Modell gesendetIn der Zuordnung behalten
Anna[NAME_1][NAME_1] ist Anna
[email protected][EMAIL_1][EMAIL_1] ist [email protected]
015112345678[TELEFON_1][TELEFON_1] ist 015112345678
Anna, nochmals[NAME_1]Derselbe Wert behält denselben Platzhalter

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

Maskieren hat Grenzen

Eine Regel findet die Formen, die Sie geschrieben haben: ein Wort mit At-Zeichen, eine lange Ziffernfolge, ein Name aus einer Liste. Sie übersieht einen Straßennamen, einen Spitznamen oder eine Nummer mit Leerzeichen.

Maskieren senkt das Risiko also und beseitigt es nie. Testen Sie es an unordentlichen Beispielen und behalten Sie eine Prüfung, die nach Resten sucht.

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\";' '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 || 200 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    return (await res.json()).choices[0].message.content;' > 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' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    const liste = [].concat(probe);' '    const runde = nachrichten.filter(function (m) { return m.role === \"assistant\"; }).length;' '    return liste[Math.min(runde, liste.length - 1)];' '  }' '}' '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.

Das Maskier-Skript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '' 'const namen = [\"Anna\", \"Jonas\"];' 'const ticket = \"Hallo, ich bin Anna. Schreiben Sie an [email protected] oder rufen Sie 015112345678 an. Jonas hat mir gestern geholfen.\";' 'function nurZiffern(text) {' '  return text.length >= 8 && text.split(\"\").every(function (z) { return z >= \"0\" && z <= \"9\"; });' '}' > maskieren.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.

Das Maskier-Skript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function maskieren(text, namen) {' '  const zuordnung = {};' '  const gesehen = {};' '  const woerter = text.split(\" \");' '  for (let i = 0; i < woerter.length; i++) {' '    let blank = woerter[i];' '    while (blank.endsWith(\".\") || blank.endsWith(\",\")) blank = blank.slice(0, -1);' '    const ende = woerter[i].slice(blank.length);' '    let art = \"\";' '    if (blank.includes(\"@\")) art = \"EMAIL\";' '    if (nurZiffern(blank)) art = \"TELEFON\";' '    if (namen.includes(blank)) art = \"NAME\";' >> maskieren.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.

Das Maskier-Skript schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '    if (art === \"\") continue;' '    if (gesehen[blank] === undefined) {' '      const n = Object.keys(zuordnung).filter(function (k) { return k.startsWith(\"[\" + art); }).length + 1;' '      gesehen[blank] = \"[\" + art + \"_\" + n + \"]\";' '      zuordnung[gesehen[blank]] = blank;' '    }' '    woerter[i] = gesehen[blank] + ende;' '  }' '  return { text: woerter.join(\" \"), zuordnung: zuordnung };' '}' >> maskieren.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.

Das Maskier-Skript schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function wiederherstellen(text, zuordnung) {' '  let ausgabe = text;' '  for (const schluessel of Object.keys(zuordnung)) ausgabe = ausgabe.split(schluessel).join(zuordnung[schluessel]);' '  return ausgabe;' '}' 'async function main() {' '  const sicher = maskieren(ticket, namen);' '  console.log(\"An das Modell gesendet: \" + sicher.text);' '  console.log(\"Ein @ ist noch drin: \" + sicher.text.includes(\"@\"));' '  const regel = \"Schreibe eine Antwort in zwei Sätzen an die Kundin. Lass jeden Platzhalter in eckigen Klammern genau so stehen, wie er geschrieben ist.\";' '  const nachrichten = [{ role: \"system\", content: regel }, { role: \"user\", content: sicher.text }];' '  const probe = \"Liebe [NAME_1], danke für Ihre Nachricht. Wir schreiben heute an [EMAIL_1].\";' >> maskieren.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.

Das Maskier-Skript schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  const antwort = await fragen(nachrichten, probe, 100);' '  console.log(\"Antwort mit Platzhaltern: \" + antwort);' '  console.log(\"Für die Kundin wiederhergestellt: \" + wiederherstellen(antwort, sicher.zuordnung));' '  console.log(\"Protokollzeile: \" + Object.keys(sicher.zuordnung).length + \" Angaben maskiert, Antwort mit \" + antwort.length + \" Zeichen\");' '}' 'main();' >> maskieren.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.

Das Maskier-Skript ausführen

Befehl
docker exec -w /home/node/project agent node maskieren.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.

Eine mögliche Ausgabe

ZeileWas sie zeigt
An das Modell gesendetDas Ticket mit [NAME_1], [EMAIL_1], [TELEFON_1] und [NAME_2] anstelle der Werte
Ein @ ist noch drinfalse
Antwort mit PlatzhalternZwei Sätze, die die Platzhalter behalten. Die Wörter ändern sich bei jedem Lauf
Für die Kundin wiederhergestelltDie Antwort mit den echten Werten wieder eingesetzt
ProtokollzeileAnzahlen und eine Länge, ohne persönlichen Text

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

Was ein Protokoll enthalten darf

Ein Protokoll lesen mehr Menschen als die Anwendung, und es lebt länger. Protokollieren Sie, was Sie zum Finden eines Fehlers brauchen: eine Anfrage-ID, eine Nutzer-ID, eine Anzahl, eine Zeit, eine Entscheidung.

Protokollieren Sie den Prompt und die Antwort nicht vollständig. Müssen Sie eine zum Debuggen behalten, behalten Sie die maskierte Kopie, kurz und mit Zugriffskontrolle.

Ein häufiger Fehler

Warnung

Viele glauben, nach dem Maskieren des Prompts seien die Protokolle sicher. Die Antwort, die Fehlermeldungen und die ursprüngliche Anfrage können noch die echten Werte enthalten. Prüfen Sie jeden Ort, den der Text durchläuft: Prompt, Antwort, Protokolle und jeden Cache.

Ü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.