Zeigen, woher eine Antwort stammt
Ein Zitat ist ein Marker in einer Antwort, der auf die Quelle verweist, aus der sie stammt. Das ist wichtig, weil man einer Antwort mehr traut, die man prüfen kann, und Ihr Programm kann die Marker prüfen.
Der Chatbot einer Bibliothek sagt, ein verspätetes Buch koste zehn Cent pro Tag [2]. Der Leser schaut in Quelle 2 und findet dieselbe Regel.
Am Ende dieser Lektion
Notiz
Ich kann zeigen, welche Quelle eine Antwort benutzt hat.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Quelle | eine Textstelle, die die Antwort nutzen darf | |
| Zitat | ein Verweis von der Antwort auf ihre Quelle | |
| Marker | die Nummer in Klammern, die das Zitat macht | [2] |
| Belegt | gestützt auf die Quellen, die Sie gegeben haben | |
| Unbenutzte Quelle | eine Quelle, die kein Marker benennt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Quellen nummerieren und Marker verlangen
Schreiben Sie jede Quelle mit einer Nummer in den Prompt: [1], [2], [3]. Bitten Sie dann das Modell, nur diese Quellen zu nutzen und nach jeder Tatsache die Nummer zu schreiben.
Die Quellen hier sind Textstellen, die Sie ins Skript geschrieben haben. Woher echte Quellen kommen, zeigt das Modul „Suchsysteme“. Die Antwort ist belegt, wenn sie bei dem bleibt, was Sie gegeben haben.
Beispiel: Quellen und eine Antwort
| Teil | Text |
|---|---|
| Quelle [1] | Mitglieder dürfen bis zu sechs Bücher drei Wochen lang ausleihen. |
| Quelle [2] | Ein verspätet zurückgegebenes Buch kostet zehn Cent pro Tag. |
| Frage | Wie viele Bücher darf ich ausleihen, und was kostet eine Verspätung? |
| Antwort | Sie dürfen sechs Bücher ausleihen [1]. Ein verspätetes Buch kostet zehn Cent pro Tag [2]. |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Prüfen, dass jeder Marker eine Quelle hat
Ein Modell kann [4] schreiben, obwohl es nur drei Quellen gibt. Ihr Programm kann das bemerken. Finden Sie jeden Marker und vergleichen Sie jede Nummer mit der Liste der Quellen-IDs.
Suchen Sie auch unbenutzte Quellen und Sätze ohne Marker. Sie zeigen, was die Antwort ausgelassen hat.
Ein häufiger Fehler
Warnung
Viele glauben, ein Marker beweise, dass die Antwort stimmt. Er beweist nur, dass die Quelle existiert. Das Modell kann für eine Tatsache die falsche Quelle nennen. Die Prüfung ist ein erster Filter, und ein Mensch liest die Quelle bei allem, was zählt.
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\";' '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
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.
Die Zitatprüfung schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const QUELLEN = [' ' { id: 1, text: \"Mitglieder dürfen bis zu sechs Bücher drei Wochen lang ausleihen.\" },' ' { id: 2, text: \"Ein verspätet zurückgegebenes Buch kostet zehn Cent pro Tag.\" },' ' { id: 3, text: \"Die Bibliothek öffnet um neun Uhr und schließt werktags um siebzehn Uhr.\" },' '];' > zitiert5.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 Zitatprüfung schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function quellenText() {' ' return QUELLEN.map(function (q) { return \"[\" + q.id + \"] \" + q.text; }).join(\"\n\");' '}' 'function markerIn(antwort) {' ' const gefunden = [];' ' const muster = /\[(\d+)\]/g;' ' let treffer = muster.exec(antwort);' ' while (treffer) { gefunden.push(Number(treffer[1])); treffer = muster.exec(antwort); }' ' return gefunden;' '}' >> zitiert5.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 Zitatprüfung schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function pruefen(antwort) {' ' const ids = QUELLEN.map(function (q) { return q.id; });' ' const marker = markerIn(antwort);' ' const fehlend = marker.filter(function (n) { return ids.includes(n) === false; });' ' return { marker: marker, fehlend: fehlend, ok: marker.length > 0 && fehlend.length === 0 };' '}' 'function zeigen(etikett, ergebnis) {' ' console.log(etikett + \" Marker \" + JSON.stringify(ergebnis.marker) + \", fehlend \" + JSON.stringify(ergebnis.fehlend) + \", ok: \" + ergebnis.ok);' '}' >> zitiert5.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 Zitatprüfung schreiben, Teil 4
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const regel = \"Antworten Sie nur mit diesen nummerierten Quellen. Schreiben Sie nach jeder Tatsache die Nummer ihrer Quelle in eckigen Klammern, zum Beispiel [1]. Wenn die Quellen es nicht sagen, antworten Sie: Das weiß ich nicht.\n\" + quellenText();' ' const frage = \"Wie viele Bücher darf ich ausleihen, und was kostet eine Verspätung?\";' ' // Aufgezeichnete Probe, nur benutzt, wenn kein Modell antwortet.' ' const probe = \"Sie dürfen sechs Bücher ausleihen [1]. Ein verspätetes Buch kostet zehn Cent pro Tag [2].\";' ' const antwort = await fragen([{ role: \"system\", content: regel }, { role: \"user\", content: frage }], probe, 80);' ' console.log(\"Antwort:\", antwort);' ' zeigen(\"Prüfung:\", pruefen(antwort));' ' zeigen(\"Erfundene Antwort:\", pruefen(\"Die Leihfrist beträgt drei Wochen [4].\"));' '}' 'main();' >> zitiert5.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.
Fragen und die Marker prüfen
docker exec -w /home/node/project agent node zitiert5.jsHier 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
| Zeile | Was sie zeigen kann |
|---|---|
| Antwort | Zwei kurze Sätze, jeder mit einem Marker wie [1] am Ende |
| Prüfung: | Marker [1,2], fehlend [], ok: true, wenn die Antwort bei den Quellen blieb |
| Erfundene Antwort: | Marker [4], fehlend [4], ok: false, jedes Mal |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.