Powrót do bloga

AI dla początkującychPrzewodnik

System prompt i temperature: co robią i jak je ustawić

Co robią wiadomość systemowa i temperature w żądaniu zgodnym z OpenAI, z przykładami w Pythonie i curl, które możesz wysłać do modelu CheapTokens.

Autor: CheapTokens TeamOpublikowano Zaktualizowano 5 min czytania

Diagram żądania czatu: wiadomość systemowa z zasadami, wiadomość użytkownika z zadaniem i pokrętło temperatury
Na tej stronie
  1. Czym jest system prompt?
  2. Jak napisać użyteczny system prompt
  3. Co robi temperature?
  4. Wyślij żądanie z oboma
  5. Zobacz temperature w działaniu
  6. Na którym modelu to wypróbować
  7. Jeśli nie działa
  8. Następny krok

System prompt to wiadomość z rolą system, która mówi modelowi, jak ma się zachowywać w każdej odpowiedzi: kim jest, jakiego formatu użyć, czego unikać. Temperature to liczba, zwykle między 0 a 2 (zakres zależy od modelu), która określa, jak bardzo może się zmieniać sformułowanie: niskie wartości dają skupione, powtarzalne odpowiedzi, wysokie — bardziej zróżnicowane. Oba trafiają do tego samego żądania Chat Completions, które wysyłasz do https://api.cheaptokens.dev/v1.

Poniżej: czym jest każde z nich, od jakich wartości zacząć i żądanie, które możesz uruchomić w Pythonie lub curl. Jeśli nie wysłałeś jeszcze żądania, zacznij od pierwszego żądania API z CheapTokens.

Czym jest system prompt?#

Żądanie czatu to lista wiadomości, a każda wiadomość ma rolę. Dokumentacja Chat Completions wymienia cztery: system, user, assistant i tool (dokumentacja API DeepSeek, sprawdzona 22 października 2026). Do pierwszego żądania potrzebujesz trzech:

  • system — stałe instrukcje od Ciebie, dewelopera. Model traktuje je jako zasady rozmowy.
  • user — to, o co pyta lub co podaje osoba w tej turze.
  • assistant — wcześniejsze odpowiedzi modelu. Dodajesz je sam, gdy kontynuujesz rozmowę.

Wiadomość systemowa wymaga ustawienia role na system i content jako ciągu znaków. Pole name jest opcjonalne.

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."}
]

Wiadomość systemowa idzie pierwsza. Wiadomość użytkownika to właściwe zadanie.

Jak napisać użyteczny system prompt#

  • Powiedz w jednym zdaniu, co robi model: „Jesteś redaktorem”, „Klasyfikujesz zgłoszenia do pomocy technicznej”.
  • Określ format wyjścia: „Zwróć tylko przepisany tekst”, „Odpowiedz w dwóch zdaniach”, „Odpowiedz poprawnym JSON-em”.
  • Podawaj zasady jako krótkie, bezpośrednie zdania. Kilka jasnych linii działa lepiej niż jeden długi akapit.
  • Trzymaj go krótko. System prompt jest wysyłany z każdym żądaniem i liczony jako tokeny wejściowe, więc za długi płacisz za każdym razem. Jak rozliczane są wejście i wyjście, opisano w tokeny wejściowe vs wyjściowe.

Co robi temperature?#

Model wybiera każdy kolejny token ze zbioru prawdopodobnych kandydatów. Temperature kontroluje, jak ściśle trzyma się najbardziej prawdopodobnego. Według dokumentacji API DeepSeek (sprawdzonej 22 października 2026) temperature przyjmuje wartości od 0 do 2 z domyślną 1: wyższe wartości dają bardziej losowe wyjście, niższe — bardziej skupione, deterministyczne. Zakresy różnią się między modelami: DeepSeek dokumentuje 0 do 2, Z.ai dokumentuje 0 do 1 dla GLM-5.3 (oba sprawdzone 22 października 2026), więc wartości od 0 do 1 są bezpieczne w obu. Sprawdź zakres dla swojego modelu w dokumentacji.

Punkty startowe, które działają dla większości zadań. To reguły praktyczne, nie gwarancje:

Zadanie Zacznij od
Ekstrakcja, klasyfikacja, kod, ścisłe formaty 0 do 0.3
Pytania i odpowiedzi, podsumowania, przepisywanie 0.3 do 0.7
Burza mózgów, nazwy, tekst kreatywny 0.8 do 1

Trzy rzeczy do zapamiętania:

  1. Niska temperatura jest bardziej powtarzalna, nie identyczna. Nie licz na odpowiedzi równe co do bajtu.
  2. Zmieniaj temperature albo top_p, nie oba naraz. To zalecenie DeepSeek; top_p to drugi parametr próbkowania z domyślną wartością 1. Zostaw go w spokoju, dopóki się uczysz.
  3. Niektóre tryby ignorują temperature. Dokumentacja DeepSeek mówi, że temperature nie ma wpływu w trybie myślenia, a top_p jest ustalone na 1.0 w trybie niemyślenia. Jeśli zmienisz wartość i nie widzisz różnicy, najpierw sprawdź tryb modelu.

Wyślij żądanie z oboma#

Ustaw klucz jako zmienną środowiskową, żeby nigdy nie trafił do kodu (zobacz czym jest klucz API i jak go bezpiecznie przechowywać). Weź dokładny identyfikator modelu z dokumentacji CheapTokens: różni dostawcy nazywają ten sam model inaczej. Ten przykład używa 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)

To samo żądanie z 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
  }'

Co powinieneś zobaczyć: krótszą, przyjaźniejszą wersję zdania i stop jako finish_reason. Jeśli finish_reason to length, odpowiedź osiągnęła limit max_tokens; zobacz dlaczego odpowiedź AI urywa się w połowie zdania.

Zobacz temperature w działaniu#

Najlepszym sposobem na zrozumienie temperatury jest zadanie tego samego pytania kilka razy. Ta pętla wysyła jedno krótkie żądanie trzy razy z temperaturą 0 i trzy razy z 1, używając client z powyższego przykładu:

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)

Przy 0 trzy linie to zwykle to samo słowo; przy 1 zwykle zobaczysz więcej różnych słów. Modele, które rozumują przed odpowiedzią, mogą zużyć część max_tokens na to rozumowanie, więc ustaw limit hojnie, nawet dla odpowiedzi jednowyrazowej. Następnie zmień tylko system prompt (na przykład „Odpowiedz jednym słowem, po francusku”) i uruchom ponownie: zasady z wiadomości systemowej obowiązują przy każdej temperaturze.

Takie eksperymenty są małe. Dla przybliżonego wyobrażenia, oto koszt 100 żądań po około 120 tokenów wejściowych i 80 wyjściowych każde (przykładowe obciążenie; liczby tokenów zależą od Twoich promptów):

Model Za żądanie 100 żądań OpenRouter, 100 żądań
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 tokenów wejściowych i 80 tokenów wyjściowych na żądanie. Ceny za 1 mln tokenów są aktualne i zmieniają się wraz z naszymi taryfami; kolumna OpenRouter pokazuje ceny referencyjne dla tego samego obciążenia.

Na którym modelu to wypróbować#

  • MiniMax-M2.7 to dobry pierwszy wybór do wielu krótkich żądań testowych, a ten sam system prompt możesz na nim użyć ponownie, aby porównać odpowiedzi: kontekst 180K, do 8192 tokenów wyjściowych, taniej niż cena referencyjna OpenRouter po obu stronach. Aktualna cena: wejście $0.05, wyjście $0.15 za 1M tokenów.

Jedno saldo pokrywa je wszystkie, więc zmiana modelu to zmiana jednej linii model. Wszystkie aktualne ceny są na stronie z cenami.

Jeśli nie działa#

  • 401 lub błąd uwierzytelniania: brakuje klucza, jest błędnie wpisany lub zmienna środowiskowa nie jest ustawiona w tym terminalu. Sprawdź echo $CHEAPTOKENS_API_KEY.
  • Model not found: skopiuj identyfikator modelu z dokumentacji dokładnie, wraz z prefiksem.
  • Błąd o nieprawidłowym parametrze: trzymaj temperature w zakresie obsługiwanym przez Twój model (0 do 1 jest bezpieczne) i przekazuj liczby, nie ciągi znaków.
  • Model ignoruje Twoją zasadę: zamień ją na jedno krótkie, bezpośrednie zdanie, przenieś na początek wiadomości systemowej i powtórz dokładny format, którego chcesz.
  • Zmiana temperatury nic nie zmienia: możesz używać trybu, który ją ignoruje (zobacz wyżej), albo odpowiedź jest tak ograniczona („jedno słowo”, „poprawny JSON”), że istnieje niewiele wariantów.
  • Odpowiedź jest ucięta: zwiększ max_tokens; przewodnik po max_tokens wyjaśnia jak.

Następny krok#

Umieść jedną jasną zasadę w wiadomości systemowej, wybierz temperaturę z tabeli i uruchom powyższą pętlę na własnym zadaniu. Gdy wynik jest taki, jak chcesz, trzymaj system prompt krótko i używaj go ponownie. Zdobądź klucz i sprawdź aktualne ceny w dokumentacji.