Drei Einstellungen, die eine Antwort verändern
Temperatur, Token-Grenze und Stopptext sind die drei Einstellungen eines Aufrufs, die die Antwort am meisten verändern. Jede steht im Anfragekörper neben den Nachrichten.
Sie sind wichtig, denn ein Aufruf mit Standardwerten kann für Datenarbeit zu zufällig oder für einen Bildschirm zu lang sein. Wer sie kennt, wählt mit Absicht.
Am Ende dieser Lektion
Notiz
Ich kann sagen, was Temperatur, Token-Grenze und Stopptext in einem Aufruf an ein Modell verändern.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Temperatur | eine Einstellung dafür, wie abwechslungsreich die Antworten sind | 0 |
| Token | ein kleines Stück Text, das ein Modell liest und schreibt | |
| Token-Grenze | die größte Zahl von Tokens in einer Antwort | max_tokens |
| Stopptext | ein Text, der die Antwort beendet, sobald das Modell ihn erreicht | |
| Endgrund | der Grund, warum die Antwort endete | length |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Temperatur legt die Vielfalt fest
Ein Modell wählt jedes nächste Token aus einer Liste wahrscheinlicher Tokens. Eine niedrige Temperatur nimmt fast immer das wahrscheinlichste. Eine hohe Temperatur lässt weniger wahrscheinliche zu.
Wählen Sie also einen niedrigen Wert nahe 0 für eine Arbeit mit nur einer richtigen Antwort, etwa ein Datum aus einem Text zu ziehen. Wählen Sie einen höheren Wert für Ideen und Namen.
Beispiel: die Temperatur für drei Aufgaben
| Aufgabe | Temperatur | Warum |
|---|---|---|
| Eine Bestellnummer aus einer E-Mail ziehen | 0 | Es gibt nur eine richtige Antwort |
| Die Frage eines Kunden beantworten | 0.7 | Natürlich, aber nicht wild |
| Zehn Namen für einen Laden vorschlagen | 1.2 | Sie wollen Vielfalt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Dreimal bei zwei Temperaturen fragen
docker exec -w /home/node/project agent node -e 'const labor = require("./labor.js"); const frage = [{ role: "user", content: "Nennen Sie einen Namen für einen Goldfisch. Antworten Sie mit einem Wort." }]; const beispiele = { 0: ["Blubb", "Blubb", "Blubb"], 1.2: ["Nemo", "Kapitän Plansch", "Blubb"] }; (async () => { for (const temperatur of [0, 1.2]) { const gefunden = []; let etikett = ""; for (let i = 0; i < 3; i++) { const erhalten = await labor.fragen({ max_tokens: 8, temperature: temperatur, messages: frage }, beispiele[temperatur][i]); gefunden.push(erhalten.text.trim()); etikett = erhalten.etikett; } console.log("Temperatur " + temperatur + " (" + etikett + "): " + gefunden.join(" | ")); } })();'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 Token-Grenze ist eine harte Obergrenze
Ein Token ist ein kleines Stück Text, oft ein kurzes Wort oder ein Teil eines langen. max_tokens ist die größte Zahl von Tokens, die das Modell schreiben darf. Ist sie erreicht, endet die Antwort, auch mitten im Satz.
Die Antwort trägt einen Endgrund. Das Wort stop heißt, das Modell war fertig. Das Wort length heißt, die Grenze hat es abgeschnitten.
Eine Antwort absichtlich abschneiden
docker exec -w /home/node/project agent node -e 'const labor = require("./labor.js"); const frage = [{ role: "user", content: "Erklären Sie in zwei Sätzen, was eine API ist." }]; const beispiel = { kurz: "Eine API ist ein Weg, auf dem ein Programm", lang: "Eine API ist ein Satz von Regeln, mit dem ein Programm ein anderes um etwas bittet. Der Aufrufer sendet eine Anfrage und bekommt eine Antwort." }; (async () => { for (const grenze of [12, 80]) { const erhalten = await labor.fragen({ max_tokens: grenze, messages: frage }, grenze === 12 ? beispiel.kurz : beispiel.lang); const grund = erhalten.daten ? erhalten.daten.choices[0].finish_reason : (grenze === 12 ? "length" : "stop"); console.log("max_tokens " + grenze + " (" + erhalten.etikett + "), finish_reason " + grund + ":"); console.log(" " + erhalten.text.trim()); } })();'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, ein kleines max_tokens lasse das Modell kürzer schreiben. Das stimmt nicht: Es schneidet die Antwort ab, oft mitten im Satz. Für eine kürzere Antwort bitten Sie in der Anweisung darum. Lassen Sie die Grenze als Sicherung über dem, was Sie erwarten.
Ein Stopptext beendet eine Antwort früher
Ein Stopptext ist ein Text, den Sie selbst wählen. Wenn das Modell ihn schreiben will, endet die Antwort stattdessen, und der Stopptext selbst fehlt in ihr.
Nutzen Sie ihn, um eine Antwort auf eine Zeile oder einen Listenpunkt zu begrenzen. Die meisten Modell-APIs erlauben mehrere Stopptexte zugleich.
Eine Liste vor Punkt drei anhalten
docker exec -w /home/node/project agent node -e 'const labor = require("./labor.js"); const frage = [{ role: "user", content: "Schreiben Sie die Zahlen von eins bis fünf in Worten, eine pro Zeile, jede Zeile beginnt mit 1. 2. 3. und so weiter." }]; (async () => { const erhalten = await labor.fragen({ max_tokens: 60, stop: ["3."], messages: frage }, "1. eins\n2. zwei\n"); console.log("Antwort (" + erhalten.etikett + "): " + JSON.stringify(erhalten.text)); console.log("Enthält sie 3.? " + erhalten.text.includes("3.")); })();'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zum Weiterdenken: eigene Einstellungen testen
Ändern Sie im Längen-Run die Frage in eine eigene und testen Sie ein max_tokens von 5, 30 und 200. Notieren Sie jedes Mal den Endgrund.
Sagen Sie dann, welchen Wert Sie in ein echtes Programm schreiben würden. Sagen Sie auch, warum eine zu kleine Grenze mehr kostet als eine zu große.