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

Kontextbudget für einen Prompt

Nach dieser Lektion: Ich kann entscheiden, was in ein Fenster passt und was zuerst weicht.

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

Wie ein Kontextbudget funktioniert

Ein Kontextbudget legt fest, wie viele Token jeder Teil eines Prompts verbrauchen darf. Ein Modell liest nur begrenzt viel auf einmal, also muss etwas weichen, wenn die Teile zusammen zu viel werden.

Das Modul über Kosten, Tracing und Zuverlässigkeit plant Geld und Aufrufe. Diese Lektion geht weiter: Sie plant das Fenster selbst, entscheidet, welcher Teil zuerst weicht, und sagt der Nutzerin, was fehlt.

Am Ende dieser Lektion

Notiz

Ich kann entscheiden, was in ein Fenster passt und was zuerst weicht.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Tokenein kleines Stück Text, das ein Modell zähltetwa ein Wort
Fensterdie meisten Token, die ein Modell in einem Aufruf lesen und schreiben kann
Budgetdie Token, die ein Teil des Prompts verbrauchen darf
Prioritätwie wichtig ein Teil ist; 0 wird nie verworfen
Kürzeneinen Teil kleiner machen, damit er passt
ReservePlatz, der für die Antwort frei bleibt

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

Auch die Antwort braucht Platz

Das Fenster teilen sich der Prompt und die Antwort. Füllt der Prompt es ganz, wird die Antwort abgeschnitten, oder der Aufruf scheitert.

Halten Sie also zuerst Platz für die Antwort frei. Dann ziehen Sie einen kleinen Sicherheitsabstand ab, denn Ihre Zählung ist nur eine Schätzung. Der Rest ist das Prompt-Budget.

Durchgerechnetes Beispiel: das Prompt-Budget

SchrittTokenWarum
Fenster4000Das Meiste, was das Modell verarbeitet
Reserve für die Antwort500Die Antwort braucht Platz
Sicherheit, 5 Prozent2005 Prozent von 4000, falls die Zählung etwas abweicht
Prompt-Budget33004000 minus 500 minus 200

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

Ein häufiger Fehler

Warnung

Viele denken, das Fenster gehöre nur dem Prompt. Das stimmt nicht: Es enthält auch die Antwort. Ein Prompt, der das ganze Fenster füllt, lässt keinen Platz zum Antworten.

Welcher Teil kommt zuerst?

Geben Sie jedem Teil eine Priorität. Die Regeln und die Frage der Nutzerin haben Priorität 0: Sie werden nie verworfen. Passen sie nicht, ist der Prompt kaputt, und Sie müssen es melden.

Dann nehmen Sie den Rest nach Wichtigkeit. Passt ein Teil, bleibt er. Passt er nicht, wird er verworfen, aber ein kleinerer Teil danach kann noch passen.

Durchgerechnetes Beispiel: Budget 3300

TeilTokenPrioritätSumme bisherErgebnis
Regeln3000300Behalten
Frage1000400Behalten
Dokument A90011300Behalten
Dokument B80022100Behalten
Dokument C70022800Behalten
Verlauf140034200 wäre zu vielVerworfen

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

Kürzen statt alles verwerfen

Wer den Verlauf ganz verwirft, verliert das ganze Gespräch. Besser kürzen Sie ihn: Behalten Sie die neuesten Nachrichten, die noch passen.

Gehen Sie von der neuesten Nachricht rückwärts. Halten Sie bei der ersten an, die nicht passt, denn eine Lücke mitten im Gespräch ergibt keinen Sinn.

Durchgerechnetes Beispiel: 500 Token übrig

NachrichtTokenSummeErgebnis
Neueste200200Behalten
Eine davor250450Behalten
Zwei davor300750 wäre zu vielHier anhalten
Älteste40Nie erreichtVerworfen, obwohl sie mit 490 passen würde

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

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\";' '// 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

Befehl
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 Budget-Skript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'function woerter(text) { return text.split(\" \").length; }' 'const teile = [' '  { name: \"Regeln\", token: 60, prio: 0 },' '  { name: \"Frage\", token: 25, prio: 0 },' '  { name: \"Dokument A\", token: 120, prio: 1 },' '  { name: \"Dokument B\", token: 90, prio: 2 },' '  { name: \"Verlauf\", token: 150, prio: 3 },' '  { name: \"Dokument C\", token: 80, prio: 2 },' '];' > budget.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 Budget-Skript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zusammenstellen(teile, budget) {' '  const reihe = teile.slice().sort(function (a, b) { return a.prio - b.prio; });' '  const behalten = [];' '  let benutzt = 0;' '  for (const t of reihe) {' '    if (t.prio === 0 || benutzt + t.token <= budget) { behalten.push(t.name); benutzt = benutzt + t.token; }' '  }' '  return { behalten: behalten, benutzt: benutzt };' '}' >> budget.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 Budget-Skript schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  for (const budget of [350, 600]) {' '    const e = zusammenstellen(teile, budget);' '    const namen = teile.map(function (t) { return t.name; });' '    console.log(\"Budget \" + budget + \": behalten \" + namen.filter(function (n) { return e.behalten.includes(n); }).join(\", \"));' '    console.log(\"  verworfen \" + (namen.filter(function (n) { return e.behalten.includes(n) === false; }).join(\", \") || \"keine\") + \", benutzt \" + e.benutzt);' '  }' >> budget.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 Budget-Skript schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  const f = \"Was sollte ein zu langer Prompt zuerst verlieren? Antworten Sie in einem kurzen Satz.\";' '  const probe = \"Zuerst gehen die ältesten oder unwichtigsten Teile verloren, niemals die Regeln oder die Frage.\";' '  const antwort = await fragen([{ role: \"user\", content: f }], probe, 60);' '  console.log(\"Das Modell sagte: \" + antwort.text);' '  console.log(\"Meine Zahl \" + woerter(f) + \", Zahl des Modells \" + (antwort.eingabe === null ? \"nicht gemeldet\" : antwort.eingabe));' '}' 'main();' >> budget.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 Budget ausführen

Befehl
docker exec -w /home/node/project agent node budget.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 zeigt
Budget 350: behalten Regeln, Frage, Dokument A, Dokument BDie Teile, die passen, in ihrer ersten Reihenfolge
verworfen Verlauf, Dokument C, benutzt 295Was fehlt, und die benutzten Token
Budget 600: behalten ... und verworfen keineBei viel Platz kommt jeder Teil hinein
Das Modell sagte: ...Ein Satz aus dem Labor. Eine Aufgezeichnete Probe, wenn kein Modell antwortet
Meine Zahl 14, Zahl des Modells ...Meine Wortzahl neben der Zahl des Modells oder nicht gemeldet

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.