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

Modellantworten mit Regeln bewerten

Nach dieser Lektion: Ich kann eine Antwort mit Regeln bewerten, die kein Modell brauchen.

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

Bewerten ohne ein zweites Modell

Eine Antwort mit Regeln bewerten heißt, sie mit gewöhnlichem Code zu prüfen: Ist sie gültig, stimmt das Etikett, liegt die Zahl im Bereich? Das lohnt sich, weil Regeln schnell und kostenlos sind und stets dasselbe ergeben.

Der Sortierer des Shops antwortet jetzt in JSON mit einem Etikett, einer Dringlichkeit und einem Satz für den Kunden. Jeder Teil lässt sich mit einer Regel prüfen.

Am Ende dieser Lektion

Notiz

Ich kann eine Antwort mit Regeln bewerten, die kein Modell brauchen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Regeleine als Code geschriebene Prüfung, die eine Antwort besteht oder nicht
Genaue Gleichheitder Wert muss dem erwarteten gleichenabrechnung
Gültiges JSONdie Antwort lässt sich im verlangten Format lesen
Im Bereicheine Zahl liegt zwischen zwei Grenzen
Bewertungdie Zahl der Regeln, die eine Antwort besteht
Verbotene PhraseWörter, die eine Antwort nie enthalten darf

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

Vier Arten von Regeln decken fast alles ab

Die meisten Prüfungen passen in vier Arten. Gültiges JSON: Die Antwort ist das verlangte JSON. Genaue Gleichheit: Ein Feld hat den erwarteten Wert. Im Bereich: Eine Zahl liegt zwischen Grenzen. Enthält: Eine Phrase ist da oder darf nicht da sein.

Jede Regel braucht wenige Zeilen. Keine braucht ein Modell, ein Lauf kostet also nichts.

Ausgearbeitetes Beispiel: eine Regel für jeden Teil

Teil der AntwortRegelEin Beispiel, das durchfällt
Die ganze AntwortEin gültiges JSON-ObjektGern, das ist eine Liefernachricht
etikettGenaue Gleichheit mit dem Fallabrechnung, obwohl lieferung erwartet war
dringlichkeitEine ganze Zahl von 1 bis 37
antwortBis 120 Zeichen, keine verbotene PhraseIhre Erstattung wurde genehmigt

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

Eine Bewertung je Fall zeigt, wo es hakt

Geben Sie der Antwort einen Punkt für jede Regel, die sie besteht. Hören Sie nicht beim ersten Fehler auf: Die Punkte zeigen, welche Regel brach. Ein Fall besteht nur, wenn jede Regel gilt.

Ist die Antwort nicht gültig, kann keine spätere Regel laufen. Ihre Bewertung ist dann 0.

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.

Die Regeln schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const verboten = [\"erstattung wurde\", \"garantiert\"];' 'function bewerten(text, gewollt) {' '  const ergebnis = { gueltig: false, etikett: false, bereich: false, antwort: false };' '  let daten = null;' '  try { daten = JSON.parse(text); } catch (fehler) { return ergebnis; }' '  if (daten === null || Array.isArray(daten) || typeof daten === \"string\" || typeof daten === \"number\" || typeof daten === \"boolean\") return ergebnis;' '  ergebnis.gueltig = true;' '  ergebnis.etikett = daten.etikett === gewollt;' > regeln.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 Regeln schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  ergebnis.bereich = Number.isInteger(daten.dringlichkeit) && daten.dringlichkeit >= 1 && daten.dringlichkeit <= 3;' '  const gesagt = typeof daten.antwort === \"string\" ? daten.antwort : \"\";' '  const klein = gesagt.toLowerCase();' '  const gesperrt = verboten.some(function (phrase) { return klein.includes(phrase); });' '  ergebnis.antwort = gesagt.length > 0 && gesagt.length <= 120 && gesperrt === false;' '  return ergebnis;' '}' 'function punkte(ergebnis) {' '  return (ergebnis.gueltig ? 1 : 0) + (ergebnis.etikett ? 1 : 0) + (ergebnis.bereich ? 1 : 0) + (ergebnis.antwort ? 1 : 0);' '}' 'module.exports = { bewerten, punkte };' >> regeln.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 Prüfskript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const { bewerten, punkte } = require(\"./regeln\");' 'function antwort(etikett, dringlichkeit, text) {' '  return JSON.stringify({ etikett: etikett, dringlichkeit: dringlichkeit, antwort: text });' '}' 'const aufgezeichnet = [' '  { id: 1, gewollt: \"abrechnung\", text: antwort(\"abrechnung\", 2, \"Entschuldigung für die doppelte Belastung, wir prüfen das.\") },' '  { id: 2, gewollt: \"lieferung\", text: antwort(\"abrechnung\", 2, \"Wir sehen uns das an.\") },' '  { id: 3, gewollt: \"sonstiges\", text: \"Gern, das ist eine Liefernachricht.\" },' > pruefen2.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 Prüfskript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  { id: 8, gewollt: \"lieferung\", text: antwort(\"lieferung\", 7, \"Das tut uns leid.\") },' '  { id: 10, gewollt: \"unbekannt\", text: antwort(\"unbekannt\", 1, \"Ihre Erstattung wurde genehmigt.\") },' '];' 'function jaNein(wert) { return wert ? \"ja\" : \"nein\"; }' 'function zeigen(name, ergebnis) {' '  console.log(name + \": \" + punkte(ergebnis) + \" von 4 (JSON gültig \" + jaNein(ergebnis.gueltig) + \", Etikett \" + jaNein(ergebnis.etikett) + \", Bereich \" + jaNein(ergebnis.bereich) + \", Antwort \" + jaNein(ergebnis.antwort) + \")\");' '}' 'for (const einer of aufgezeichnet) zeigen(\"Aufgezeichneter Fall \" + einer.id, bewerten(einer.text, einer.gewollt));' >> pruefen2.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 Prüfskript schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const probe = antwort(\"abrechnung\", 2, \"Das tut uns leid, wir prüfen Ihre Bestellung.\");' '  const aufforderung = \"Sortieren Sie diese Shop-Nachricht. Antworten Sie nur mit JSON mit drei Schlüsseln: etikett (abrechnung, lieferung, sonstiges oder unbekannt), dringlichkeit (eine ganze Zahl von 1 bis 3) und antwort (ein höflicher Satz mit unter 100 Zeichen).\n\nNachricht: Für eine Bestellung zweimal belastet\";' '  const text = await fragen([{ role: \"user\", content: aufforderung }], probe, 120);' '  console.log(\"Echte Antwort: \" + text);' '  zeigen(\"Echter Fall 1\", bewerten(text, \"abrechnung\"));' '}' 'main();' >> pruefen2.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.

Fünf Antworten und eine echte bewerten

Befehl
docker exec -w /home/node/project agent node pruefen2.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
Aufgezeichneter Fall 14 von 4, jede Regel gilt
Aufgezeichneter Fall 23 von 4, das Etikett ist falsch
Aufgezeichneter Fall 30 von 4, Wörter und kein JSON
Aufgezeichneter Fall 83 von 4, die Dringlichkeit 7 liegt außerhalb
Aufgezeichneter Fall 103 von 4, die verbotene Phrase
Echter Fall 1Meist 3 oder 4 von 4, und es kann bei jedem Lauf anders sein

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

Probieren Sie es

Tipp

Fügen Sie in regeln.js eine dritte verbotene Phrase hinzu, entschuldigung für die doppelte belastung, und starten Sie erneut. Der aufgezeichnete Fall 1 muss seinen letzten Punkt verlieren.

Ein häufiger Fehler

Warnung

Viele glauben, volle Punkte durch Regeln zeigten eine gute Antwort. Regeln prüfen nur Form und Fakten. Eine Antwort kann gültig sein, das richtige Etikett tragen und trotzdem unhöflich oder nutzlos sein. Heben Sie Regeln für das auf, was Code entscheiden kann.

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