Personenbezogene Daten finden, bevor sie gesendet werden
Personenbezogene Daten sind alle Angaben, mit denen sich ein lebender Mensch erkennen lässt. Ein Name, eine E-Mail-Adresse und eine Telefonnummer zählen dazu.
Eine App, die Nachrichten an ein Modell schickt, sendet sie vielleicht ungewollt mit. Was Sie nicht finden, können Sie nicht schützen. Deshalb kommt das Finden zuerst. Ein Prompt kann Ihren Rechner verlassen und lässt sich nicht zurückholen.
Am Ende dieser Lektion
Notiz
Ich kann personenbezogene Daten in einem Prompt mit Regeln finden und sagen, was die Regeln übersehen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Personenbezogene Daten | Angaben, die auf einen lebenden Menschen zeigen | |
| Regel | ein Test, den ein Text besteht oder nicht | enthält ein @ |
| Form | wie eine Art von Wert geschrieben wird | 01234567890 |
| Fehlalarm | Text, den die Regel meldet, der aber nicht persönlich ist | |
| Übersehen | personenbezogene Daten, die keine Regel gemeldet hat |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Regeln finden Daten, die eine Form haben
Manche personenbezogenen Daten werden immer gleich geschrieben. Eine E-Mail-Adresse hat ein At-Zeichen und einen Punkt. Eine Telefonnummer in diesem Kurs hat 11 Ziffern und beginnt mit 01.
Eine Regel prüft eine Form. Ein Suchprogramm teilt eine Nachricht in Wörter und prüft jedes Wort gegen jede Regel. Die Funde stehen in der Reihenfolge, in der die Wörter in der Nachricht vorkommen.
Durchgerechnetes Beispiel: vier Regeln
| Art | Regel | Erfundenes Beispiel |
|---|---|---|
| Ein At-Zeichen, später ein Punkt | [email protected] | |
| telefon | 11 Ziffern, beginnend mit 01 | 01234567890 |
| steuerid | 11 Ziffern, die erste ist nicht 0 | 12345678901 |
| karte | 16 Ziffern | 4000000000000002 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Regeln übersehen Dinge und schlagen falschen Alarm
Eine Regel kennt nur Formen. Ein Name hat keine Form, also findet ihn keine Regel. Eine Telefonnummer mit Leerzeichen wird zu drei Wörtern, und keines passt.
Ein Fehlalarm ist der umgekehrte Fehler. Eine Bestellnummer mit 16 Ziffern hat die Form einer Kartennummer, also meldet die Regel sie. Beide Fehler sind normal. Zählen Sie sie, dann wissen Sie, wie weit Sie den Regeln trauen können.
Durchgerechnetes Beispiel: Übersehen und Fehlalarm
| Teil der Nachricht | Ein Mensch sagt | Die Regeln sagen | Ergebnis |
|---|---|---|---|
| Bernd Beispiel | Persönlich | Nichts gefunden | Übersehen |
| 0123 456 7890 | Persönlich | Nichts gefunden | Übersehen |
| 4000000000000002 (eine Bestellnummer) | Nicht persönlich | Karte | Fehlalarm |
| [email protected] | Persönlich | Richtig |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele denken, eine leere Ausgabe heiße, die Nachricht sei sauber. Das stimmt nicht. Es heißt nur, dass keine Regel gepasst hat. Ein Name oder eine in Worten geschriebene Adresse hat keine Form. Sagen Sie „keine bekannte Form gefunden“ und nie „keine personenbezogenen Daten“.
Die Modellhilfe schreiben, Teil 1
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
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.
Das Suchprogramm schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const nachrichten = [' ' \"Bitte mailen Sie [email protected] wegen der Erstattung.\",' ' \"Rufen Sie mich unter 01234567890 nach fünf an.\",' ' \"Meine Nummer ist 0123 456 7890, gern jederzeit.\",' ' \"Die Steuer-ID 12345678901 steht auf dem Formular.\",' ' \"Bestellung 4000000000000002 geht an Bernd Beispiel.\",' '];' 'const markiert = [[\"[email protected]\"], [\"01234567890\"], [\"0123 456 7890\"], [\"12345678901\"], [\"Bernd Beispiel\"]];' > finder.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 Suchprogramm schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function bereinigen(wort) {' ' let w = wort;' ' while (w.length > 0 && \".,;:?()\".includes(w[w.length - 1])) w = w.slice(0, -1);' ' return w;' '}' 'function ziffern(w, n) {' ' return w.length === n && w.split(\"\").every(function (c) { return c >= \"0\" && c <= \"9\"; });' '}' >> finder.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 Suchprogramm schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function artVon(w) {' ' const at = w.indexOf(\"@\");' ' if (at > 0 && w.indexOf(\".\", at) > at + 1) return \"email\";' ' if (ziffern(w, 11) && w.startsWith(\"01\")) return \"telefon\";' ' if (ziffern(w, 11) && w[0] > \"0\") return \"steuerid\";' ' if (ziffern(w, 16)) return \"karte\";' ' return \"\";' '}' >> finder.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 Suchprogramm schreiben, Teil 4
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function finden(text) {' ' const aus = [];' ' text.split(\" \").forEach(function (wort) {' ' const w = bereinigen(wort);' ' if (artVon(w).length > 0) aus.push({ art: artVon(w), wert: w });' ' });' ' return aus;' '}' >> finder.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 Suchprogramm schreiben, Teil 5
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' nachrichten.forEach(function (text, i) {' ' const werte = finden(text).map(function (f) { return f.wert; });' ' const fehlt = markiert[i].filter(function (v) { return werte.indexOf(v) < 0; });' ' const zuviel = werte.filter(function (v) { return markiert[i].indexOf(v) < 0; });' ' console.log((i + 1) + \" gefunden \" + JSON.stringify(finden(text)) + \" übersehen \" + JSON.stringify(fehlt) + \" Fehlalarm \" + JSON.stringify(zuviel));' ' });' ' const q = \"Schreiben Sie in einem kurzen Satz, warum eine Regel keinen Namen finden kann.\";' ' const probe = \"Ein Name hat keine feste Form, also hat eine Regel nichts, woran sie ihn erkennt.\";' ' const antwort = await fragen([{ role: \"user\", content: q }], probe, 60);' ' console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> finder.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 Suchprogramm ausführen
docker exec -w /home/node/project agent node finder.jsHier 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
| Zeile | Was sie zeigt |
|---|---|
| 1 gefunden email ... übersehen [] Fehlalarm [] | Ein richtiger Fund |
| 3 gefunden [] übersehen ["0123 456 7890"] | Eine Nummer mit Leerzeichen wird übersehen |
| 5 gefunden karte ... übersehen ["Bernd Beispiel"] | Ein Name wird übersehen |
| 5 ... Fehlalarm ["4000000000000002"] | Eine Bestellnummer sieht wie eine Karte aus |
| Das Modell sagte: ... | Ein Satz. Die Worte ändern sich bei jedem Lauf |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.