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

Einen Chatverlauf kürzen, damit er passt

Nach dieser Lektion: Ich kann ein Gespräch innerhalb der Grenze des Modells halten.

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

Wenn das Gespräch zu lang wird

Einen Chatverlauf zu kürzen heißt, dem Modell weniger Nachrichten zu schicken, damit die Liste in seine Grenze passt. Das ist nötig, weil ein langer Chat mit jeder Runde wächst und jede Nachricht Zeit und Guthaben kostet.

Nach einer Stunde mit einem Reise-Chatbot braucht niemand mehr die ersten Fragen. Sie zu entfernen hält den Chat schnell und billig.

Am Ende dieser Lektion

Notiz

Ich kann ein Gespräch innerhalb der Grenze des Modells halten.

Schlüsselwörter

BegriffWas er bedeutet
Tokenein kleines Stück Text, das ein Modell zählt
Kontextgrenzedie meisten Tokens, die ein Modell je Aufruf annimmt
Budgetdie meisten Tokens, die Sie senden wollen
Kürzenalte Nachrichten entfernen, bis es passt
Zusammenfassungein kurzer Text anstelle entfernter Nachrichten

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

Zählen Sie die Tokens vor dem Senden

Ein Modell zählt Text in Tokens und nimmt je Aufruf nur eine begrenzte Zahl an. Echte Zahlen liefert der Tokenizer des Modells. Eine grobe Schätzung: ein Token je vier Zeichen.

Diese Lektion addiert vier je Nachricht, für Rolle und Verpackung. Addieren Sie alle Nachrichten und vergleichen Sie die Summe mit Ihrem Budget.

Beispiel: sechs Nachrichten zählen

NachrichtZeichenTokens
system: Sie helfen bei Zugreisen. Fassen Sie sich kurz.4716
user: Wie lange dauert die Fahrt von Köln nach Bonn?4616
assistant: Etwa eine halbe Stunde.2310
user: Und was kostet ein Ticket?2611
assistant: Das hängt von der Uhrzeit ab.2912
user: Gibt es einen Ruhewagen?2410
Summe19575

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

Älteste entfernen, Regeln behalten

Zum Kürzen entfernen Sie zuerst die ältesten Nachrichten, bis die Summe ins Budget passt. Zwei Nachrichten bleiben, was das Budget auch sagt: die system-Nachricht am Anfang und die neueste Nachricht am Ende.

Die system-Nachricht enthält die Regeln. Die neueste Nachricht ist die Frage, die gerade gestellt wird.

Eine Zusammenfassung ersetzt Entferntes

Entfernen verliert Fakten. Eine Zusammenfassung behält die wichtigsten in wenigen Worten. Bitten Sie das Modell, die entfernten Nachrichten zusammenzufassen, und hängen Sie sie an die system-Nachricht.

Das kostet bei jedem Kürzen einen Aufruf mehr. Bei einem kurzen Chat reicht oft das einfache Entfernen.

Ein häufiger Fehler

Warnung

Viele glauben, die älteste Nachricht sei immer die unwichtigste. Oft ist sie die system-Nachricht mit den Regeln oder die eine Tatsache, von der der Chat abhängt. Behalten Sie die system-Nachricht und fassen Sie zusammen, bevor Sie Wichtiges entfernen.

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.

Das Kürzungsskript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const BUDGET = 50; // ein kleines Budget, damit gekürzt wird' '' 'function tokens(nachricht) { return Math.ceil(nachricht.content.length / 4) + 4; }' 'function summe(liste) {' '  return liste.reduce(function (s, n) { return s + tokens(n); }, 0);' '}' > kuerzen2.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 Kürzungsskript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function kuerzen(liste, budget) {' '  const behalten = liste.slice();' '  const entfernt = [];' '  while (summe(behalten) > budget && behalten.length > 2) {' '    const stelle = behalten[0].role === \"system\" ? 1 : 0;' '    entfernt.push(behalten.splice(stelle, 1)[0]);' '  }' '  return { behalten: behalten, entfernt: entfernt };' '}' >> kuerzen2.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 Kürzungsskript schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const verlauf = [' '  { role: \"system\", content: \"Sie helfen bei Zugreisen. Fassen Sie sich kurz.\" },' '  { role: \"user\", content: \"Wie lange dauert die Fahrt von Köln nach Bonn?\" },' '  { role: \"assistant\", content: \"Etwa eine halbe Stunde.\" },' '  { role: \"user\", content: \"Und was kostet ein Ticket?\" },' '  { role: \"assistant\", content: \"Das hängt von der Uhrzeit ab.\" },' '  { role: \"user\", content: \"Gibt es einen Ruhewagen?\" },' '];' >> kuerzen2.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 Kürzungsskript schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const ergebnis = kuerzen(verlauf, BUDGET);' '  console.log(\"Tokens vorher: \" + summe(verlauf) + \", nachher: \" + summe(ergebnis.behalten) + \", entfernt: \" + ergebnis.entfernt.length);' >> kuerzen2.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 Kürzungsskript schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  const alt = ergebnis.entfernt.map(function (n) { return n.role + \": \" + n.content; }).join(\" \");' '  // Aufgezeichnete Proben, nur benutzt, wenn kein Modell antwortet.' '  const erste = \"Der Nutzer fragte nach der Fahrtdauer von Köln nach Bonn und erfuhr: etwa eine halbe Stunde.\";' '  const kurz = await fragen([{ role: \"user\", content: \"Fassen Sie in einem kurzen Satz zusammen: \" + alt }], erste, 50);' '  console.log(\"Zusammenfassung:\", kurz);' '  const anfrage = ergebnis.behalten.slice();' '  anfrage[0] = { role: \"system\", content: anfrage[0].content + \" Früher in diesem Chat: \" + kurz };' '  console.log(\"Antwort:\", await fragen(anfrage, \"Ja, die meisten Züge haben einen Ruhewagen.\", 50));' '}' 'main();' >> kuerzen2.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.

Kürzen und zusammenfassen

Befehl
docker exec -w /home/node/project agent node kuerzen2.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 zeigen kann
Tokensvorher: 75, nachher: 49, entfernt: 2 (immer gleich, nichts wird geraten)
ZusammenfassungEin Satz über die entfernte Fahrtdauer
AntwortEine kurze Antwort zu einem Ruhewagen

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.