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

Latenzbudget und Streaming

Nach dieser Lektion: Ich kann ein Latenzbudget festlegen und sagen, was Streaming ändert.

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

Was ein Latenzbudget ist

Latenz ist die Zeit, die eine Nutzerin auf eine Antwort wartet. Ein Latenzbudget ist die längste Zeit, die Sie erlauben, aufgeteilt auf die Schritte einer Anfrage.

Das Modul über Kosten, Tracing und Zuverlässigkeit zeigt Perzentile und einen Timeout. Diese Lektion geht weiter: ein Budget für die ganze Anfrage und was Streaming ändert und was nicht.

Am Ende dieser Lektion

Notiz

Ich kann ein Latenzbudget festlegen und sagen, was Streaming ändert.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Latenzdie Zeit, die eine Nutzerin wartet
Zeit bis zum ersten Tokendas Warten, bevor die ersten Wörter erscheinen600 ms
Gesamtzeitdas Warten bis zum letzten Wort
StreamingWörter senden, sobald sie entstehen, nicht erst am Ende
Budgetdie längste erlaubte Zeit, auf Schritte verteilt
Millisekundeein Tausendstel einer Sekunde

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

Zwei Zeiten: erste Wörter und letztes Wort

Eine Antwort braucht etwas Zeit bis zum ersten Wort und danach ein wenig mehr für jedes weitere. Die erste Zeit ist die Zeit bis zum ersten Token. Die letzte ist die Gesamtzeit.

Die Gesamtzeit ist die Zeit bis zum ersten Token plus die Zeit je Token mal die Zahl der Token.

Durchgerechnetes Beispiel: zwei Antworten

AntwortBis zum ersten TokenJe TokenTokenGesamt
Kurz60020301200
Lang600203006600

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

Ein häufiger Fehler

Warnung

Viele denken, Streaming mache eine Antwort schneller. Das stimmt nicht: Das letzte Wort kommt genau gleich spät. Es ändert sich nur, wann die Nutzerin zuerst Wörter sieht, also fühlt sich das Warten kürzer an.

Wo das Warten gespürt wird

Ohne Streaming sieht die Nutzerin bis zur Gesamtzeit nichts. Mit Streaming sieht sie nach der Zeit bis zum ersten Token Wörter und kann zu lesen beginnen.

Bei einer langen Antwort ist der Unterschied groß. Im Beispiel sinkt das Warten auf die ersten Wörter von 6600 auf 600 Millisekunden, eine Ersparnis von 6000.

Was Streaming Sie kostet

Wichtig

Wörter erscheinen, bevor die ganze Antwort geprüft ist. Eine Prüfung, die den vollen Text braucht, etwa eine Sicherheitsprüfung, kann nicht vorher laufen. Entscheiden Sie, wie Sie damit umgehen, bevor Sie Streaming einschalten.

Das Budget auf die Schritte verteilen

Eine Anfrage hat mehr Schritte als das Modell. Sie wartet in einer Schlange, holt Dokumente und prüft die Antwort. Addieren Sie die Zeiten der Reihe nach.

Der erste Schritt, an dem die laufende Summe über das Budget geht, ist der, den Sie zuerst beheben oder streichen.

Durchgerechnetes Beispiel: ein Budget von 1000

SchrittZeitLaufende SummeÜber 1000?
Warteschlange150150Nein
Suche400550Nein
Modell erstes Token6001150Ja, zuerst darüber
Sicherheitsprüfung2001350Ja, 350 darüber

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

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'function gesamt(a) { return a.bisErstes + a.jeToken * a.token; }' 'function erster(a) { return a.gestreamt ? a.bisErstes : gesamt(a); }' 'const antworten = [' '  { name: \"kurz\", bisErstes: 600, jeToken: 20, token: 30, gestreamt: false },' '  { name: \"lang\", bisErstes: 600, jeToken: 20, token: 300, gestreamt: false },' '  { name: \"lang-gestreamt\", bisErstes: 600, jeToken: 20, token: 300, gestreamt: true },' '];' > latenz.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 Latenz-Skript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const teile = [[\"Warteschlange\", 150], [\"Suche\", 400], [\"Modell erstes Token\", 600], [\"Sicherheitsprüfung\", 200]];' 'function budget(grenze) {' '  let summe = 0;' '  let drueber = \"keiner\";' '  for (const t of teile) {' '    summe = summe + t[1];' '    if (summe > grenze && drueber === \"keiner\") drueber = t[0];' '  }' '  return \"gesamt \" + summe + \", übrig \" + (grenze - summe) + \", zuerst darüber: \" + drueber;' '}' >> latenz.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 Latenz-Skript schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  for (const a of antworten) console.log(a.name + \": erster Text \" + erster(a) + \", gesamt \" + gesamt(a));' '  console.log(\"Budget 1000: \" + budget(1000));' '  console.log(\"Budget 2000: \" + budget(2000));' '  const start = Date.now();' '  const probe = \"Sie können sofort zu lesen beginnen, also fühlt sich das Warten kürzer an.\";' '  const antwort = await fragen([{ role: \"user\", content: \"Warum sehen Nutzer gern früh die ersten Wörter? Antworten Sie in einem kurzen Satz.\" }], probe, 60);' '  console.log(\"Das Modell sagte: \" + antwort.text);' '  console.log(\"Gemessene Wartezeit für die ganze Antwort: \" + (antwort.aufgezeichnet ? \"nicht gemessen\" : Date.now() - start + \" ms\"));' '}' 'main();' >> latenz.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 Latenzrechnung ausführen

Befehl
docker exec -w /home/node/project agent node latenz.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
kurz: erster Text 1200, gesamt 1200Ohne Streaming ist der erste Text die Gesamtzeit
lang-gestreamt: erster Text 600, gesamt 6600Mit Streaming erscheinen Wörter früh, die Gesamtzeit bleibt
Budget 1000: gesamt 1350, übrig -350, zuerst darüber: Modell erstes TokenDer Schritt, den Sie beheben
Das Modell sagte: ...Ein Satz aus dem Labor. Eine Aufgezeichnete Probe, wenn kein Modell antwortet
Gemessene Wartezeit für die ganze Antwort: ...Eine echte Zeit in ms, oder nicht gemessen bei einer aufgezeichneten Probe

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.