0Pricing
AI Engineering Academy · Lekcja

Sterowanie zachowaniem modelu za pomocą parametrów

Uczestnicy poeksperymentują z parametrami temperature, max_tokens i top_p, aby sprawdzić ich wpływ na styl, długość i kreatywność odpowiedzi, a następnie dobiorą ustawienia odpowiednie do swojego przypadku użycia.

Sterowanie zachowaniem modelu za pomocą parametrów to bezpłatna lekcja AI Engineering Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Engineering Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.

Najważniejsze parametry

Na wynik największy wpływ ma kilka parametrów: temperature, max_tokens, top_p, frequency_penalty i presence_penalty. Opanowanie tych pięciu parametrów daje kontrolę nad modelem.

Temperature: sterowanie losowością

Temperature steruje losowością. W pobliżu wartości 0 model wybiera najbezpieczniejsze słowo i zachowuje spójność — to świetne rozwiązanie w przypadku faktów. Przy wartości około 0,7–1,0 odpowiedzi stają się bardziej zróżnicowane i kreatywne. Zobacz kod.

from openai import OpenAI
client = OpenAI()

for temp in [0.0, 0.7, 1.5]:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Name a color.'}],
        temperature=temp,
        max_tokens=5
    )
    print(f'Temp {temp}: {response.choices[0].message.content}')
# Temp 0.0: Red       (always most common)
# Temp 0.7: Blue      (varied but sensible)
# Temp 1.5: Vermillion (surprising choices)

max_tokens: sterowanie długością odpowiedzi

max_tokens ogranicza maksymalną długość odpowiedzi — to limit bezpieczeństwa, a nie cel. Zbyt niska wartość powoduje ucięcie odpowiedzi, a zbyt wysoka marnuje pieniądze i czas. Należy dodać zapas i obserwować finish_reason.

# Different max_tokens for different use cases

# Classification: short answer expected
classification_response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Is this positive or negative? "Great product!"'}],
    max_tokens=5  # Only need 1-2 words
)

# Detailed analysis: longer output needed
analysis_response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Analyze the pros and cons of microservices.'}],
    max_tokens=800  # Need space for detailed explanation
)

top_p: próbkowanie jądrowe

top_p to kolejne pokrętło losowości: model próbuje tokeny należące do grupy, której łączne prawdopodobieństwo wynosi top_p. Wskazówka: dostrajaj temperature albo top_p, a nie oba parametry jednocześnie.

# top_p usage example
response_narrow = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Continue: The sky is...'}],
    top_p=0.1,  # only very likely tokens (conservative, predictable)
    temperature=1.0  # keep temperature at 1 when using top_p
)

response_wide = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Continue: The sky is...'}],
    top_p=0.95,  # most tokens eligible (creative, varied)
    temperature=1.0
)

Frequency penalty: ograniczanie powtórzeń

frequency_penalty zniechęca model do powtarzania tych samych słów, a siła działania zależy od częstotliwości ich występowania. Warto go użyć, gdy długie odpowiedzi stają się powtarzalne — można zacząć od wartości 0,3–0,7.

# Frequency penalty to reduce repetition in long outputs
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{
        'role': 'user',
        'content': 'Write 5 tips for better sleep.'
    }],
    max_tokens=300,
    frequency_penalty=0.5  # reduces repeating the same words/phrases
)
print(response.choices[0].message.content)

Presence penalty: zwiększanie różnorodności tematów

presence_penalty kieruje model ku nowym tematom: nakłada karę na każde słowo, które już się pojawiło, nawet jeśli wystąpiło tylko raz. Świetnie sprawdza się podczas burzy mózgów, gdy potrzebne są świeże i różnorodne pomysły.

# Presence penalty for diverse brainstorming output
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{
        'role': 'user',
        'content': 'List 10 creative ways to use AI in a small business.'
    }],
    max_tokens=400,
    presence_penalty=0.8  # encourages introducing different topics per item
)
print(response.choices[0].message.content)

Sekwencje stop: niestandardowe punkty zatrzymania

Parametr stop zawiera ciągi znaków, które natychmiast zatrzymują generowanie po pojawieniu się (i nie są uwzględniane w wyniku). Można zatrzymać generowanie na znaku nowej linii, aby otrzymać czystą odpowiedź w jednym wierszu. Zobacz kod.

# Use stop sequences to get clean single-line output
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{
        'role': 'user',
        'content': 'What is the Python keyword for a function definition?\nAnswer:'
    }],
    max_tokens=20,
    stop=['\n', '.']  # stop at newline or period - gets just the keyword
)
print(repr(response.choices[0].message.content))  # 'def'

seed: powtarzalne wyniki

Parametr seed sprawia, że wyniki są powtarzalne: ten sam seed oraz temperature równe 0 dają taką samą odpowiedź. To świetne rozwiązanie do testów — należy tylko obserwować system_fingerprint pod kątem zmian po stronie backendu.

# Reproducible output with seed parameter
response1 = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Pick a random number from 1 to 10.'}],
    temperature=0,
    seed=42
)

response2 = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Pick a random number from 1 to 10.'}],
    temperature=0,
    seed=42
)

print(response1.choices[0].message.content)  # same
print(response2.choices[0].message.content)  # same
print('Fingerprint:', response1.system_fingerprint)

Dobór parametrów do typowych zastosowań

Nie trzeba zgadywać — można użyć szybkich ustawień wstępnych: temperature 0 dla klasyfikacji, 0,2 dla rzeczowych pytań i odpowiedzi oraz 0,8–1,0 dla kreatywnego pisania. Należy zacząć od tych wartości, a następnie dostosować je do zadania. Zobacz kod.

# Parameter presets for different task types
PRESETS = {
    'classify': {'temperature': 0, 'max_tokens': 20},
    'factual_qa': {'temperature': 0.2, 'max_tokens': 400},
    'creative': {'temperature': 0.9, 'max_tokens': 1000, 'frequency_penalty': 0.3},
    'code': {'temperature': 0.1, 'max_tokens': 2000},
    'summary': {'temperature': 0.3, 'max_tokens': 300, 'frequency_penalty': 0.2},
}

def complete(prompt, task_type='factual_qa', **overrides):
    params = {**PRESETS[task_type], **overrides}
    return client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        **params
    )

Logprobs: rozumienie pewności modelu

logprobs zwraca informację o pewności modelu co do każdego tokenu oraz rozważane przez niego alternatywy. Niska pewność dotycząca faktu jest ostrzeżeniem przed halucynacją — to przydatne w bezpieczniejszych systemach.

import math

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'The capital of France is?'}],
    max_tokens=3,
    logprobs=True,
    top_logprobs=3  # show top 3 alternative tokens at each position
)

for token_log in response.choices[0].logprobs.content:
    prob = math.exp(token_log.logprob)  # convert log prob to probability
    print(f'Token: {token_log.token!r} | Probability: {prob:.2%}')
    for alt in token_log.top_logprobs:
        print(f'  Alt: {alt.token!r} -> {math.exp(alt.logprob):.2%}')

Systematyczne testowanie wpływu parametrów

Nie zgaduj wartości parametrów — przetestuj je. Zbuduj niewielkie przeszukiwanie siatki, które uruchomi ten sam prompt dla różnych kombinacji i oceni każdy wynik. Dzięki temu dostrajanie staje się inżynierią, a nie sztuką. Zobacz kod.

from itertools import product

# Systematic parameter grid search
temperatures = [0.0, 0.3, 0.7]
max_tokens_options = [100, 300]
test_prompt = 'Summarize the benefits of unit testing in 2 sentences.'

results = []
for temp, max_tok in product(temperatures, max_tokens_options):
    resp = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': test_prompt}],
        temperature=temp,
        max_tokens=max_tok
    )
    results.append({
        'temperature': temp,
        'max_tokens': max_tok,
        'output': resp.choices[0].message.content,
        'actual_tokens': resp.usage.completion_tokens
    })

Szybki test

Sprawdź swoją wiedzę na temat koncepcji inżynierii AI z tej lekcji.

Podsumowanie lekcji

Nauczyłeś się sterować modelem: temperature ustawia losowość, max_tokens ogranicza długość (obserwuj finish_reason!), a kary zmniejszają powtórzenia i zwiększają różnorodność. Następnie: obsługa błędów.

Często zadawane pytania

Czy lekcja „Sterowanie zachowaniem modelu za pomocą parametrów” jest bezpłatna?

Tak — pełny tekst „Sterowanie zachowaniem modelu za pomocą parametrów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Engineering Academy, przejdź na CoddyKit PRO. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Sterowanie zachowaniem modelu za pomocą parametrów”?

Uczestnicy poeksperymentują z parametrami temperature, max_tokens i top_p, aby sprawdzić ich wpływ na styl, długość i kreatywność odpowiedzi, a następnie dobiorą ustawienia odpowiednie do swojego prz… Ćwiczysz AI Engineering Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Engineering Academy?

Nie wymagamy żadnego doświadczenia. AI Engineering Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Sterowanie zachowaniem modelu za pomocą parametrów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Engineering Academy?

Tak. Każda lekcja AI Engineering Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfigurowanie środowiska Python
  2. Endpoint Chat Completions
  3. Sterowanie zachowaniem modelu za pomocą parametrów
  4. Obsługa błędów i limity zapytań
← Powrót do AI Engineering Academy