Billig je Nachricht, teuer je Problem
Ein Fahrradladen führt eine Chatfunktion ein. Das Team sagt stolz, jede Nachricht koste fast nichts. Die Chefin fragt etwas anderes: Was kostet es, ein Kundenproblem zu lösen?
Die beiden Zahlen können weit auseinanderliegen. Wer zeigen will, dass sich eine Funktion lohnt, muss die richtige wählen.
Am Ende dieser Lektion
Notiz
Ich kann zeigen, ob eine KI-Funktion ihre Kosten wert ist.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Kosten je Nachricht | Gesamtkosten geteilt durch alle Nachrichten |
| Kosten je gelöster Aufgabe | Gesamtkosten geteilt durch die gelösten Aufgaben |
| Gelöst | die Person hat bekommen, was sie brauchte |
| Ausgangslage | wie die Aufgabe vor der Funktion erledigt wurde |
| Versteckte Kosten | Kosten, die echt sind, aber fehlen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Zwei Kosten, die nicht gleich sind
Addieren Sie alles, was die Funktion gekostet hat. Teilen Sie durch die Zahl der Nachrichten, und Sie erhalten eine kleine Zahl. Teilen Sie durch die Zahl der gelösten Probleme, und Sie erhalten die Zahl, auf die es ankommt.
Ungelöste Gespräche kosten trotzdem Geld. Modul 69 zeigt, wie man Token zählt und einen Aufruf bepreist. Hier nutzen wir diese Summen.
Vergleichen Sie mit dem Davor
Eine Kostenzahl allein sagt wenig. Vergleichen Sie sie mit der Ausgangslage: Was kostete es, und wie lange dauerte es, bevor es die Funktion gab?
Zählen Sie die versteckten Kosten mit, etwa die Person, die übernimmt. Eine Funktion, die billiger wirkt, kann dann verlieren.
Ein häufiger Fehler
Warnung
Viele glauben, der Modellpreis seien die ganzen Kosten. Er ist nur ein Teil. Auch ein Mensch, der übernimmt, und ein ungelöstes Gespräch kosten Geld. Teilen Sie immer die ganzen Kosten durch die Aufgaben, die wirklich gelöst wurden.
Modell-Helfer 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.
Modell-Helfer 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.
Kostenprüfer schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const PREIS = { ein: 300, aus: 1500, mensch: 2000000 };' 'const LAEUFE = [' ' { id: \"l1\", ein: 1000, aus: 200, geloest: true, uebergeben: false },' ' { id: \"l2\", ein: 2000, aus: 500, geloest: true, uebergeben: true },' ' { id: \"l3\", ein: 1500, aus: 100, geloest: false, uebergeben: false },' ' { id: \"l4\", ein: 500, aus: 50, geloest: true, uebergeben: false },' '];' > kosten.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.
Kostenprüfer schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function aufrufKosten(l) {' ' return l.ein * PREIS.ein + l.aus * PREIS.aus;' '}' 'function summe() {' ' let s = 0;' ' for (const l of LAEUFE) s += aufrufKosten(l) + (l.uebergeben ? PREIS.mensch : 0);' ' return s;' '}' >> kosten.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.
Kostenprüfer schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const geloest = LAEUFE.filter(function (l) { return l.geloest; }).length;' ' console.log(\"Summe \" + summe() + \" Mikrocent\");' ' console.log(\"je Nachricht \" + Math.floor(summe() / LAEUFE.length));' ' console.log(\"je gelöster Aufgabe \" + Math.floor(summe() / geloest));' ' console.log(\"gelöst \" + geloest + \" von \" + LAEUFE.length);' ' const frage = \"Schreiben Sie eine kurze Zeile: Kosten je Nachricht können niedrig wirken, Kosten je gelöstem Problem hoch.\";' ' const r = await fragen([{ role: \"user\", content: frage }], \"Niedrige Kosten je Nachricht können die Kosten ungelöster Probleme verbergen.\", 30);' ' console.log(\"Urteil: \" + r.text);' '}' 'main();' >> kosten.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.
Kostenprüfer ausführen
docker exec -w /home/node/project agent node kosten.jsHier 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
| Zeile | Was sie zeigt |
|---|---|
| Summe 4775000 Mikrocent | Vier Aufrufe plus ein Mensch |
| je Nachricht 1193750 | Wirkt niedrig |
| je gelöster Aufgabe 1591666 | Höher, weil l3 nicht gelöst wurde |
| gelöst 3 von 4 | Die Zahl, durch die wir teilen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.