Warum ein Modell sich nicht selbst ändern darf
Eine Modellversion festlegen heißt, die genaue Version zu benennen, die eine Funktion nutzt. Ein Name, der immer die neueste Version meint, ist keine Festlegung.
Das ist wichtig, weil eine Funktion, die am Montag lief, am Dienstag anders antworten kann, ohne dass Sie etwas getan haben. Ein bewusster Wechsel zu einem neuen Modell ist ein eigenes Thema. Diese Lektion stoppt den Wechsel, den niemand gewählt hat.
Am Ende dieser Lektion
Notiz
Ich kann verhindern, dass sich ein Modell unter einer Funktion ändert.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Festlegen | eine genaue Version benennen | |
| Alias | ein Name, der auf eine bewegliche Version zeigt | chat-aktuell |
| Konfiguration | die Datei, die sagt, welches Modell eine Funktion nutzt | |
| Abkündigung | eine Warnung, dass eine Version bald endet | |
| Abschalttag | der Tag, an dem eine Version nicht mehr antwortet |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Alias kann wandern, eine Version nicht
Eine Konfiguration nennt das Modell, das eine Funktion aufruft. Steht dort chat-aktuell, entscheidet der Anbieter, was das bedeutet. Eines Tages zeigt der Name auf eine neue Version.
Steht dort chat-v3, ist genau diese Version gemeint. Die Funktion ändert sich erst, wenn Sie die Konfiguration ändern.
Durchgerechnetes Beispiel: fünf Namen
| Name in der Konfiguration | Festgelegt? | Warum |
|---|---|---|
| chat-v3 | Ja | Endet auf v und eine ganze Zahl |
| chat-v10 | Ja | Zehn ist eine ganze Zahl |
| chat-aktuell | Nein | Aktuell ist ein Wort, keine Zahl |
| chat | Nein | Gar keine Version |
| chat-v2b | Nein | Die 2b ist keine ganze Zahl |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele denken, eine Festlegung halte für immer. Das stimmt nicht: Der Anbieter schaltet auch eine festgelegte Version an einem bestimmten Tag ab. Die Festlegung gibt Ihnen nur Zeit, selbst zu wechseln, und nur dann, wenn Sie vor dem Abschalttag handeln.
Eine Abkündigung nennt den Tag zum Wechseln
Eine Abkündigung nennt eine Version und ihren Abschalttag. Die übrigen Tage sind dieser Tag minus heute.
Wählen Sie eine Warnfrist, zum Beispiel 30 Tage. Innerhalb der Frist läuft die Funktion aus: Planen Sie den Wechsel jetzt. Am Abschalttag oder danach ist sie abgeschaltet und scheitert schon.
Durchgerechnetes Beispiel: heute ist Tag 100
| Version | Abschalttag | Tage übrig | Status bei 30 Tagen Warnfrist |
|---|---|---|---|
| chat-v1 | 90 | -10 | Abgeschaltet |
| chat-v2 | 125 | 25 | Läuft aus |
| chat-v4 | 300 | 200 | In Ordnung |
| chat-v5 | kein Hinweis | keine | In Ordnung |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
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.
Die Versionsprüfung schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const heute = 100;' 'const konfigs = [' ' { funktion: \"zusammenfassung\", modell: \"chat-v3\" },' ' { funktion: \"suche\", modell: \"chat-aktuell\" },' ' { funktion: \"sortierung\", modell: \"chat-v2\" },' ' { funktion: \"etiketten\", modell: \"chat-v1\" },' ' { funktion: \"entwurf\", modell: \"chat\" },' '];' 'const hinweise = { \"chat-v2\": 125, \"chat-v1\": 90 };' > festlegen.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 Versionsprüfung schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function festgelegt(modell) {' ' const teile = modell.split(\"-\");' ' const ende = teile[teile.length - 1];' ' const ziffern = ende.slice(1).split(\"\");' ' return ende.length > 1 && ende[0] === \"v\" && ziffern.every(function (c) { return c >= \"0\" && c <= \"9\"; });' '}' 'function status(k) {' ' if (festgelegt(k.modell) === false) return \"nicht festgelegt\";' ' const ende = hinweise[k.modell];' ' if (ende === undefined) return \"in Ordnung\";' ' if (ende <= heute) return \"abgeschaltet\";' ' return ende - heute <= 30 ? \"läuft aus in \" + (ende - heute) + \" Tagen\" : \"in Ordnung\";' '}' >> festlegen.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 Versionsprüfung schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' let gut = 0;' ' konfigs.forEach(function (k) {' ' const s = status(k);' ' if (s === \"in Ordnung\") gut = gut + 1;' ' console.log(k.funktion + \" \" + k.modell + \": \" + s);' ' });' ' console.log(\"Handlungsbedarf: \" + (konfigs.length - gut) + \" von \" + konfigs.length);' ' const f = \"Schreiben Sie in einem kurzen Satz, warum man ein Modell auf eine Version festlegt.\";' ' const probe = \"Eine festgelegte Version ändert sich nicht unter der Funktion, Sie bestimmen also, wann Sie wechseln.\";' ' const antwort = await fragen([{ role: \"user\", content: f }], probe, 60);' ' console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> festlegen.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 Versionsprüfung ausführen
docker exec -w /home/node/project agent node festlegen.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 die Prüfung ausgibt
| Zeile | Was sie zeigt |
|---|---|
| zusammenfassung chat-v3: in Ordnung | Festgelegt und ohne Hinweis |
| suche chat-aktuell: nicht festgelegt | Ein Alias, er kann also wandern |
| sortierung chat-v2: läuft aus in 25 Tagen | Festgelegt, aber das Ende naht |
| etiketten chat-v1: abgeschaltet | Der Abschalttag ist vorbei |
| entwurf chat: nicht festgelegt | Gar keine Version |
| Handlungsbedarf: 4 von 5 | Nach Regeln gezählt, nicht von einem Modell |
| 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.