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

Die erste Version einer KI-Funktion bauen

Nach dieser Lektion: Ich kann die einfachste Version bauen, die sich messen lässt.

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

Die erste Version einer KI-Funktion

Die erste Version einer KI-Funktion ist die einfachste, die Sie messen können. Sie hat einen Prompt, ein Modell und eine kleine Menge Testfragen. Sie zählt, weil man nicht verbessern kann, was man nicht bewertet.

Die Stadtbibliothek Lindenhof hat jetzt ihren Auftrag. Das Team baut einen Assistenten, der aus einem Blatt mit neun Zeilen antwortet, und bewertet ihn an zehn Fragen.

Am Ende dieser Lektion

Notiz

Ich kann die einfachste Version bauen, die sich messen lässt.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Faktenblattdie kurze Liste der Fakten, die der Assistent nutzen darf
Testfalleine Frage mit der Zahl, die die Antwort enthalten mussc4
AuswertungTestfälle und eine Regel, die jeden bewertet
Prüfungdie Regel, die eine Antwort mit bestanden oder nicht bewertet
Ausgangswertdas erste Ergebnis, das spätere Versionen schlagen

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

Ein Prompt, ein Modell, ein Blatt

Die einfachste Version hat vier Teile. Einen System-Prompt mit einer Regel. Ein Faktenblatt darin. Ein Modell. Eine Prüfung der Antwort.

Sie hat keine Suche, kein Gedächtnis und kein zweites Modell. Jeder fehlende Teil kann noch nicht versagen. Sie fügen einen erst hinzu, wenn ein Ergebnis es verlangt.

Beispiel: Version 1

TeilIn der ersten Version
PromptIn einem kurzen Satz antworten
FaktenblattNeun Fakten, in den Prompt kopiert
ModellEines, von der Plattform gewählt
PrüfungDie richtige Zahl, keine andere, 40 Wörter

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

Eine Auswertung: Fälle und eine Regel

Ein Testfall ist eine Frage und die Zahl, die die Antwort enthalten muss. Die Prüfung bewertet jede Antwort mit derselben Regel.

Die Prüfung findet hier vier Arten von Fehlern. Eine Ablehnung. Eine erfundene Zahl, die nicht auf dem Blatt steht. Eine vage Antwort ohne die richtige Zahl. Eine zu lange Antwort über 40 Wörtern.

Beginnen Sie mit zehn Fällen

Zehn Fälle sind absichtlich wenig. Sie können jede Antwort lesen und sehen, warum jede scheitert.

Die Fälle stammen aus dem, was Leute fragen, nicht aus dem, was leicht ist. Taucht später ein echter Fehler auf, fügen Sie ihn als Fall 11 hinzu. Die Auswertung wächst mit den Belegen.

Ein häufiger Fehler

Warnung

Viele glauben, eine gute Vorführung sei eine Auswertung. Eine Vorführung ist ein Fall, den Sie gewählt haben. Eine Auswertung sind viele Fälle, die Sie nicht gewählt haben, mit derselben Regel bewertet. Eine Vorführung zeigt, was funktionieren kann. Eine Auswertung zeigt, wie oft es funktioniert.

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 Auswertung schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const BLATT = \"Leihfrist 3 Wochen. Verlängern 2 Mal. Mahngebühr 20 Cent pro Tag. Geöffnet von 9 bis 17. Höchstens 8 Medien. Ersatzausweis 5 Euro. Raum 4 Stunden. Druck 10 Cent pro Seite. Unter 18 kostenlos.\";' 'const GRENZE = 40; // die größte Wortzahl einer Antwort' 'const BLATT_ZAHLEN = BLATT.match(/[0-9]+/g);' > eval.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 Auswertung schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const ROH = [' '  [\"c1\", \"Wie lange darf ich ein Buch behalten?\", \"3\", \"Sie dürfen ein Buch 3 Wochen behalten.\", 7, false],' '  [\"c2\", \"Kann ich ein Buch verlängern?\", \"2\", \"Ja, Sie können es 2 Mal verlängern.\", 7, false],' '  [\"c3\", \"Wie hoch ist die Mahngebühr?\", \"20\", \"Es sind 50 Cent pro Tag.\", 6, false],' '  [\"c4\", \"Wann öffnen Sie?\", \"9\", \"Wir öffnen jeden Tag um 9 Uhr.\", 7, false],' '  [\"c5\", \"Wann schließen Sie?\", \"17\", \"Wir schließen am Abend.\", 4, false],' >> eval.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 Auswertung schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  [\"c6\", \"Wie viele Medien darf ich ausleihen?\", \"8\", \"Sie dürfen 8 Medien gleichzeitig ausleihen.\", 6, false],' '  [\"c7\", \"Was kostet ein neuer Ausweis?\", \"5\", \"Ein neuer Ausweis kostet 7 Euro.\", 6, false],' '  [\"c8\", \"Kann ich einen Raum für den ganzen Tag buchen?\", \"4\", \"Dabei kann ich nicht helfen. Bitte fragen Sie die Auskunft.\", 10, true],' '  [\"c9\", \"Was kostet das Drucken?\", \"10\", \"Drucken kostet 10 Cent pro Seite. Schwarzweiß und Farbe kosten pro Seite gleich viel. Sie zahlen immer an der Auskunft, entweder mit Karte oder mit Münzen. Die Drucker und Kopierer stehen am Ostfenster neben den großen Tischen im Erdgeschoss, und die Scanner dort sind völlig kostenlos für alle, die einen Bibliotheksausweis oder eine Tageskarte haben.\", 55, false],' >> eval.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 Auswertung schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  [\"c10\", \"Dürfen Kinder beitreten?\", \"18\", \"Unter 18 ist der Ausweis kostenlos.\", 6, false],' '];' 'const FAELLE = ROH.map(function (r) {' '  return { id: r[0], frage: r[1], erwartet: r[2], antwort: r[3], laenge: r[4], abgelehnt: r[5] };' '});' >> eval.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 Auswertung schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function art(f) {' '  if (f.abgelehnt) return \"abgelehnt\";' '  const gefunden = f.antwort.match(/[0-9]+/g) || [];' '  for (const n of gefunden) {' '    if (BLATT_ZAHLEN.includes(n) === false) return \"erfunden\";' '  }' '  if (gefunden.includes(f.erwartet) === false) return \"vage\";' '  if (f.laenge > GRENZE) return \"zu_lang\";' '  return \"ok\";' '}' 'const zaehler = {};' 'for (const f of FAELLE) {' '  const a = art(f);' '  zaehler[a] = (zaehler[a] || 0) + 1;' '  console.log(f.id, a);' '}' 'console.log(\"Aufgezeichneter Lauf v1:\", zaehler.ok, \"von\", FAELLE.length, \"bestanden\");' 'console.log(JSON.stringify(zaehler));' 'require(\"fs\").writeFileSync(\"eval-v1.json\", JSON.stringify(FAELLE, null, 1));' >> eval.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 Auswertung schreiben, Teil 6

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function live() {' '  const system = \"Antworten Sie in einem kurzen Satz und nur mit diesem Blatt: \" + BLATT;' '  const nachrichten = [{ role: \"system\", content: system }, { role: \"user\", content: \"Wann öffnen Sie?\" }];' '  const antwort = await fragen(nachrichten, \"Wir öffnen jeden Tag um 9 Uhr.\", 40);' '  const gefunden = antwort.match(/[0-9]+/g) || [];' '  console.log(\"Live-Frage:\", antwort);' '  console.log(\"Enthält die Zahl 9:\", gefunden.includes(\"9\"), \"(zählt nicht zum Ergebnis)\");' '}' 'live();' >> eval.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.

Version 1 bewerten

Befehl
docker exec -w /home/node/project agent node eval.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 sagt
c1 bis c10Je eine Art: ok, erfunden, vage, abgelehnt oder zu_lang
Aufgezeichneter Lauf v15 von 10 bestanden
JSON-Zeile5 ok, 2 erfunden, 1 vage, 1 abgelehnt, 1 zu_lang
Live-FrageEin kurzer Aufruf, nie im Ergebnis

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.