Was eine Prüfung des Dienstniveaus ist
Ein Dienstniveau (englisch Service Level) ist ein Ziel, das eine Funktion erreichen muss, etwa „95 Prozent der Anfragen gelingen“. Eine wöchentliche Prüfung vergleicht, was geschah, mit den Zielen und entscheidet, was zu tun ist.
Frühere Module liefern Kosten, Ablaufverfolgungen und den Entwurf einer Funktion. Diese Lektion geht weiter: eine gemessene Woche, ein Fehlerbudget und ein Schritt des Betriebshandbuchs für jeden Alarm.
Am Ende dieser Lektion
Notiz
Ich kann eine Funktion über eine Woche gegen ein Dienstniveau prüfen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Ziel | das Niveau, das eine Funktion erreichen muss | 95 Prozent |
| Verfehlung | ein Ziel, das nicht erreicht wurde | |
| Fehlerbudget | die Fehler, die ein Ziel in einem Zeitraum erlaubt | |
| Betriebshandbuch | eine Liste, die für jeden Alarm sagt, was zu tun ist | |
| Alarm | ein Signal, dass ein Ziel verfehlt wird | |
| Einfrieren | für eine Weile keine Änderungen vornehmen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Drei Ziele für die Woche
Hier hat die Funktion drei Ziele. Mindestens 95 Prozent der Anfragen müssen gelingen. Mindestens 90 Prozent müssen schnell sein. Die Kosten der Woche müssen unter einer Grenze von 1800000 Einheiten bleiben. Eine Einheit ist ein Millionstel Euro.
Prozente werden abgerundet. Ein Ziel genau zu erreichen ist in Ordnung. Nur es zu verfehlen ist eine Verfehlung.
Durchgerechnetes Beispiel: eine aufgezeichnete Woche
| Tag | Anfragen | Fehler | Langsam | Kosten |
|---|---|---|---|---|
| Mo | 200 | 6 | 14 | 300000 |
| Di | 210 | 8 | 15 | 320000 |
| Mi | 220 | 9 | 20 | 340000 |
| Do | 205 | 30 | 40 | 310000 |
| Fr | 215 | 7 | 18 | 330000 |
| Sa | 90 | 2 | 5 | 140000 |
| So | 80 | 1 | 4 | 120000 |
| Woche | 1220 | 63 | 116 | 1860000 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele denken, ein Durchschnitt, der gut aussieht, heiße, die Woche sei gut gewesen. Das stimmt nicht: Ein schlechter Tag kann sich in einer guten Woche verstecken. Prüfen Sie jeden Tag und die Summe, und sagen Sie, welcher Tag zuerst schiefging.
Das Fehlerbudget
Ein Ziel von 95 Prozent erlaubt, dass 5 Prozent der Anfragen scheitern. Diese Erlaubnis ist das Fehlerbudget. Bei 1220 Anfragen sind es 61 Fehler, in ganzen Zahlen gerechnet.
Die Woche hatte 63 Fehler, das übrige Budget ist also 61 minus 63, das sind -2. Das Budget ist aufgebraucht, also friert das Team Änderungen ein, bis es zurück ist.
Durchgerechnetes Beispiel: das Budget
| Schritt | Rechnung | Ergebnis |
|---|---|---|
| Erfolgsquote | (1220 minus 63) mal 100 geteilt durch 1220 | 94 |
| Erlaubte Fehler | 1220 mal 5 geteilt durch 100 | 61 |
| Benutzte Fehler | Aus der Woche | 63 |
| Übriges Budget | 61 minus 63 | -2 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Schritt für jeden Alarm
Ein Betriebshandbuch ist eine kurze Liste: Bei diesem Alarm tun Sie dies. Man schreibt es vor dem schlechten Tag, damit die Person im Bereitschaftsdienst keinen Plan erfinden muss.
Hat eine Verfehlung im Handbuch keinen Schritt, geben Sie sie an die zuständige Person weiter. Ergänzen Sie danach einen Schritt dafür.
Die Modellhilfe schreiben, Teil 1
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
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 Prüf-Skript schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const tage = [' ' [200, 6, 14, 300000], [210, 8, 15, 320000], [220, 9, 20, 340000],' ' [205, 30, 40, 310000], [215, 7, 18, 330000], [90, 2, 5, 140000], [80, 1, 4, 120000],' '];' 'const ziele = { erfolg: 95, schnell: 90, grenze: 1800000 };' > pruefung.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üf-Skript schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function summen() {' ' const s = { n: 0, fehler: 0, langsam: 0, kosten: 0 };' ' for (const t of tage) { s.n += t[0]; s.fehler += t[1]; s.langsam += t[2]; s.kosten += t[3]; }' ' return s;' '}' 'function prozent(teil, ganz) { return Math.floor((ganz - teil) * 100 / ganz); }' >> pruefung.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üf-Skript schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const s = summen();' ' const gut = prozent(s.fehler, s.n);' ' const schnell = prozent(s.langsam, s.n);' ' const erlaubt = Math.floor(s.n * (100 - ziele.erfolg) / 100);' ' console.log(\"Erfolg \" + gut + \" Prozent, Ziel \" + ziele.erfolg);' ' console.log(\"Schnell \" + schnell + \" Prozent, Ziel \" + ziele.schnell);' ' console.log(\"Kosten \" + s.kosten + \", Grenze \" + ziele.grenze);' ' console.log(\"Fehlerbudget: erlaubt \" + erlaubt + \", benutzt \" + s.fehler + \", übrig \" + (erlaubt - s.fehler));' ' const probe = \"Es sagt der Person im Bereitschaftsdienst genau, was sie bei jedem Alarm tun soll.\";' ' const antwort = await fragen([{ role: \"user\", content: \"Wofür ist ein Betriebshandbuch da? Antworten Sie in einem kurzen Satz.\" }], probe, 60);' ' console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> pruefung.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 Prüfung ausführen
docker exec -w /home/node/project agent node pruefung.jsHier 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
| Zeile | Was sie zeigt |
|---|---|
| Erfolg 94 Prozent, Ziel 95 | Eine Verfehlung, einen Punkt darunter |
| Schnell 90 Prozent, Ziel 90 | Genau erreicht, also keine Verfehlung |
| Kosten 1860000, Grenze 1800000 | Eine Verfehlung, über der Grenze |
| Fehlerbudget: erlaubt 61, benutzt 63, übrig -2 | Das Budget ist aufgebraucht |
| Das Modell sagte: ... | Ein Satz aus dem Labor. Eine Aufgezeichnete Probe, wenn kein Modell antwortet |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.