Zurück zum Blog

KI für EinsteigerAnleitung

System-Prompt und Temperature: was sie bewirken und wie du sie setzt

Was die System-Nachricht und Temperature in einer OpenAI-kompatiblen Anfrage bewirken, mit Python- und curl-Beispielen, die du an ein CheapTokens-Modell senden kannst.

Von CheapTokens TeamVeröffentlicht am Aktualisiert am 6 Min. Lesezeit

Diagramm einer Chat-Anfrage: eine System-Nachricht mit den Regeln, eine User-Nachricht mit der Aufgabe und ein Temperature-Regler
Auf dieser Seite
  1. Was ist ein System-Prompt?
  2. Wie du einen nützlichen System-Prompt schreibst
  3. Was bewirkt Temperature?
  4. Sende eine Anfrage mit beidem
  5. Sieh Temperature in Aktion
  6. Auf welchem Modell du es ausprobieren solltest
  7. Wenn es nicht funktioniert
  8. Nächster Schritt

Ein System-Prompt ist eine Nachricht mit der Rolle system, die dem Modell sagt, wie es sich in jeder Antwort verhalten soll: wer es ist, welches Format zu verwenden ist, was zu vermeiden ist. Temperature ist eine Zahl, üblicherweise zwischen 0 und 2 (der Bereich hängt vom Modell ab), die festlegt, wie stark die Formulierung variieren darf: niedrige Werte liefern fokussierte, reproduzierbare Antworten, hohe Werte stärker variierende. Beide gehören in dieselbe Chat-Completions-Anfrage, die du an https://api.cheaptokens.dev/v1 sendest.

Im Folgenden: was jedes von beiden ist, mit welchen Werten du beginnst und eine Anfrage, die du in Python oder curl ausführen kannst. Wenn du noch keine Anfrage gesendet hast, beginne mit deiner ersten API-Anfrage mit CheapTokens.

Was ist ein System-Prompt?#

Eine Chat-Anfrage ist eine Liste von Nachrichten, und jede Nachricht hat eine Rolle. Die Chat-Completions-Referenz listet vier: system, user, assistant und tool (DeepSeek-API-Referenz, geprüft am 22. Oktober 2026). Für eine erste Anfrage brauchst du drei:

  • system — dauerhafte Anweisungen von dir, dem Entwickler. Das Modell behandelt sie als die Regeln der Konversation.
  • user — was die Person in diesem Turn fragt oder bereitstellt.
  • assistant — die früheren Antworten des Modells. Du fügst sie selbst hinzu, wenn du eine Konversation fortsetzt.

Eine System-Nachricht benötigt role auf system gesetzt und content als String. Das Feld name ist optional.

json
"messages": [
  {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
  {"role": "user", "content": "Send me the report by tonight or I will be upset."}
]

Die System-Nachricht kommt zuerst. Die User-Nachricht ist die eigentliche Aufgabe.

Wie du einen nützlichen System-Prompt schreibst#

  • Sag in einem Satz, was das Modell tut: "Du bist ein Lektor", "Du klassifizierst Support-Tickets".
  • Gib das Ausgabeformat an: "Gib nur den umgeschriebenen Text zurück", "Antworte in zwei Sätzen", "Antworte mit gültigem JSON".
  • Formuliere Regeln als kurze, direkte Sätze. Mehrere klare Zeilen funktionieren besser als ein langer Absatz.
  • Halte ihn kurz. Der System-Prompt wird mit jeder Anfrage gesendet und als Input-Tokens gezählt, ein langer wird also jedes Mal bezahlt. Wie Input und Output abgerechnet werden, steht in Input- vs. Output-Tokens.

Was bewirkt Temperature?#

Ein Modell wählt jedes nächste Token aus einer Menge wahrscheinlicher Kandidaten. Temperature steuert, wie streng es sich an den wahrscheinlichsten hält. Laut der DeepSeek-API-Referenz (geprüft am 22. Oktober 2026) akzeptiert temperature Werte von 0 bis 2 mit einem Standardwert von 1: höhere Werte ergeben zufälligere Ausgaben, niedrigere Werte fokussiertere, deterministischere Ausgaben. Die Bereiche unterscheiden sich zwischen Modellen: DeepSeek dokumentiert 0 bis 2, Z.ai dokumentiert 0 bis 1 für GLM-5.3 (beide geprüft am 22. Oktober 2026), daher sind Werte von 0 bis 1 bei beiden sicher. Prüfe den Bereich für dein Modell in der Dokumentation.

Startpunkte, die für die meisten Aufgaben funktionieren. Es sind Faustregeln, keine Garantien:

Aufgabe Beginne mit
Extraktion, Klassifikation, Code, strikte Formate 0 bis 0.3
Q&A, Zusammenfassungen, Umschreiben 0.3 bis 0.7
Brainstorming, Namen, kreativer Text 0.8 bis 1

Drei Dinge, die du wissen solltest:

  1. Niedrige Temperature ist reproduzierbarer, nicht identisch. Verlass dich nicht auf byte-genau gleiche Antworten.
  2. Ändere Temperature oder top_p, nicht beides. Das ist die DeepSeek-Empfehlung; top_p ist ein zweiter Sampling-Parameter mit einem Standardwert von 1. Lass ihn in Ruhe, während du lernst.
  3. Manche Modi ignorieren Temperature. Die DeepSeek-Referenz besagt, dass Temperature im Thinking-Modus keine Wirkung hat und dass top_p im Non-Thinking-Modus auf 1.0 festgelegt ist. Wenn du einen Wert änderst und keinen Unterschied siehst, prüfe zuerst den Modus des Modells.

Sende eine Anfrage mit beidem#

Setze den Key als Umgebungsvariable, damit er nie im Code landet (siehe was ist ein API-Key und wie speicherst du ihn sicher). Nimm die exakte Modell-ID aus der CheapTokens-Dokumentation: verschiedene Anbieter benennen dasselbe Modell unterschiedlich. Dieses Beispiel verwendet MiniMax-M2.7.

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[
        {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
        {"role": "user", "content": "Send me the report by tonight or I will be upset."},
    ],
    temperature=0.3,
    max_tokens=1000,
)

print(response.choices[0].message.content)
print(response.choices[0].finish_reason)

Dieselbe Anfrage mit curl:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
      {"role": "user", "content": "Send me the report by tonight or I will be upset."}
    ],
    "temperature": 0.3,
    "max_tokens": 1000
  }'

Was du sehen solltest: eine kurze, freundlichere Version des Satzes und stop als finish_reason. Wenn finish_reason gleich length ist, hat die Antwort das max_tokens-Limit erreicht; siehe warum eine KI-Antwort mitten im Satz stoppt.

Sieh Temperature in Aktion#

Der beste Weg, Temperature zu verstehen, ist, dieselbe Frage mehrmals zu stellen. Diese Schleife sendet eine kurze Anfrage dreimal mit 0 und dreimal mit 1 und verwendet client aus dem obigen Beispiel:

python
for temp in (0, 1):
    print("temperature", temp)
    for _ in range(3):
        r = client.chat.completions.create(
            model="MiniMaxAI/MiniMax-M2.7",
            messages=[
                {"role": "system", "content": "Answer with one word."},
                {"role": "user", "content": "Name a fruit."},
            ],
            temperature=temp,
            max_tokens=500,
        )
        print(" ", r.choices[0].message.content)

Bei 0 sind die drei Zeilen üblicherweise dasselbe Wort; bei 1 siehst du meist mehr unterschiedliche Wörter. Modelle, die vor der Antwort nachdenken, verbrauchen möglicherweise einen Teil von max_tokens für dieses Nachdenken, halte das Limit also großzügig, selbst für eine Ein-Wort-Antwort. Ändere dann nur den System-Prompt (zum Beispiel "Antworte mit einem Wort, auf Französisch") und führe es erneut aus: Die Regeln in der System-Nachricht gelten bei jeder Temperature.

Solche Experimente sind klein. Für eine grobe Vorstellung hier die Kosten von 100 Anfragen mit je etwa 120 Input- und 80 Output-Tokens (eine Beispiel-Workload; die Token-Zahlen hängen von deinen Prompts ab):

Modell Pro Anfrage 100 Anfragen OpenRouter, 100 Anfragen
GLM-5.3-Flash $0.0000056 $0.00056 $0.0011
DeepSeek-V4-Flash $0.0000098 $0.00098 $0.0018
MiniMax-M2.7 $0.000018 $0.0018 $0.0132

120 Input- und 80 Output-Tokens pro Anfrage. Die Preise pro 1 Mio. Tokens sind aktuell und ändern sich zusammen mit unseren Tarifen; die OpenRouter-Spalte zeigt Referenzpreise für dieselbe Arbeitslast.

Auf welchem Modell du es ausprobieren solltest#

  • MiniMax-M2.7 ist eine gute erste Wahl für viele kurze Testanfragen, und du kannst denselben System-Prompt darauf wiederverwenden, um Antworten zu vergleichen: 180K Kontext, bis zu 8.192 Output-Tokens, auf beiden Seiten günstiger als OpenRouters Referenzpreis. Aktueller Preis: Input $0.05, Output $0.15 pro 1M Tokens.

Ein Guthaben deckt alle ab, das Wechseln des Modells ist also eine einzeilige Änderung von model. Alle aktuellen Preise stehen auf der Preisseite.

Wenn es nicht funktioniert#

  • 401 oder ein Authentifizierungsfehler: der Key fehlt, ist falsch geschrieben oder die Umgebungsvariable ist in diesem Terminal nicht gesetzt. Prüfe echo $CHEAPTOKENS_API_KEY.
  • Model not found: kopiere die Modell-ID exakt aus der Dokumentation, einschließlich des Präfixes.
  • Ein Fehler über einen ungültigen Parameter: halte temperature innerhalb des Bereichs, den dein Modell unterstützt (0 bis 1 ist sicher), und übergib Zahlen, keine Strings.
  • Das Modell ignoriert deine Regel: mach daraus einen kurzen, direkten Satz, verschiebe ihn an den Anfang der System-Nachricht und wiederhole das exakte gewünschte Format.
  • Das Ändern der Temperature ändert nichts: Du verwendest möglicherweise einen Modus, der sie ignoriert (siehe oben), oder die Antwort ist so eingeschränkt ("ein Wort", "gültiges JSON"), dass es wenige Variationen gibt.
  • Die Antwort ist abgeschnitten: erhöhe max_tokens; der max_tokens-Leitfaden erklärt wie.

Nächster Schritt#

Setze eine klare Regel in die System-Nachricht, wähle eine Temperature aus der Tabelle und führe die obige Schleife mit deiner eigenen Aufgabe aus. Wenn das Ergebnis deinen Vorstellungen entspricht, halte den System-Prompt kurz und verwende ihn wieder. Hol dir einen Key und prüfe die aktuellen Preise in der Dokumentation.