AI Prompt Engineering · Lekcja

Dobór parametrów do danego zastosowania

Zalecane ustawienia dla faktograficznych pytań i odpowiedzi, kreatywnego pisania, kodu oraz czatu.

Lekcja 4 z 413 kroki

Dobór parametrów do danego zastosowania to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 4 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 Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Schemat wyboru parametrów

Wybór parametrów próbkowania nie polega na zgadywaniu — opiera się na logice wynikającej z wymagań zadania. Dwa kluczowe wymiary określają właściwą konfigurację:

  1. Dokładność wyniku: jak ważne jest, aby wynik był poprawny i przewidywalny?
  2. Różnorodność wyników: jak ważne jest, aby wyniki się różniły i pozwalały na eksplorację?

Wysoka dokładność → niska temperatura. Wysoka różnorodność → wysoka temperatura. Większość zadań plasuje się gdzieś pomiędzy tymi skrajnościami.

Pytania i odpowiedzi oparte na faktach: dokładność przede wszystkim

W przypadku odpowiadania na pytania dotyczące faktów zazwyczaj istnieje jedna poprawna odpowiedź. Każdy element losowości zwiększa ryzyko udzielenia błędnej odpowiedzi. Należy użyć:

  • temperature = 0: dekodowanie zachłanne, w pełni deterministyczne
  • top_p = 1.0: pozostawić bez ograniczeń; przy temperature=0 top-p nie ma wpływu

Dzięki temu model zawsze wybiera odpowiedź, co do której ma największą pewność, a więc najprawdopodobniej poprawną.

import openai
client = openai.OpenAI(api_key='sk-...')

# Factual Q&A configuration
def factual_qa(question):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Answer factual questions concisely and accurately.'},
            {'role': 'user', 'content': question}
        ],
        temperature=0,
        top_p=1.0
    )
    return resp.choices[0].message.content

answer = factual_qa('What is the boiling point of water at sea level?')
print(answer)  # Always: '100 degrees Celsius (212 degrees Fahrenheit).'

Generowanie kodu: niemal zachłanne

Kod musi być poprawny składniowo i precyzyjny semantycznie. Losowość prowadzi do błędów składni, nieprawidłowych nazw zmiennych lub błędnej logiki. Należy użyć:

  • temperature = 0–0.2: niemal zachłanne — dopuszcza niewielkie różnice, ale zdecydowanie faworyzuje poprawny wybór tokenów
  • top_p = 0.95: eliminuje tokeny ze skrajnego ogona, które mogłyby spowodować błędy składni
# Code generation configuration
def generate_code(task):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are an expert Python programmer. Write clean, correct code.'},
            {'role': 'user', 'content': task}
        ],
        temperature=0.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

code = generate_code('Write a Python function that merges two sorted lists.')
print(code)

Podsumowywanie: ustawienia umiarkowane

Podsumowywanie wymaga dokładności (nie należy zniekształcać faktów), ale korzysta z niewielkiego zróżnicowania (różne uruchomienia mogą uwydatniać różne aspekty). Należy użyć:

  • temperature = 0.3–0.5: niewielka losowość zachowuje naturalne brzmienie
  • top_p = 1.0: przy niskiej temperaturze nie jest potrzebne ograniczenie zbioru nucleus
# Summarization configuration
def summarize(text):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Summarize the following text in 3 sentences.'},
            {'role': 'user', 'content': text}
        ],
        temperature=0.4,
        top_p=1.0
    )
    return resp.choices[0].message.content

summary = summarize(long_article)
print(summary)

Czat konwersacyjny: naturalne zróżnicowanie

Odpowiedzi czatu korzystają z naturalnego zróżnicowania — ta sama kwestia nie powinna zawsze prowadzić do dokładnie takiego samego sformułowania. Zbyt duża losowość sprawia, że odpowiedzi stają się niespójne. Należy użyć:

  • temperature = 0.7–0.9: naturalna, zróżnicowana rozmowa
  • top_p = 0.9–0.95: eliminuje nieprawdopodobne tokeny z ogona rozkładu, które prowadzą do nienaturalnych sformułowań
# Chat configuration
def chat_response(user_message, history):
    messages = history + [{'role': 'user', 'content': user_message}]
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a friendly, helpful assistant.'},
            *messages
        ],
        temperature=0.8,
        top_p=0.9
    )
    reply = resp.choices[0].message.content
    history.append({'role': 'user', 'content': user_message})
    history.append({'role': 'assistant', 'content': reply})
    return reply, history

Pisanie kreatywne: duża różnorodność

Pisanie kreatywne ceni oryginalność i nieprzewidywalność. Niskie temperatury prowadzą do banalnych, przewidywalnych wyników. Wysokie temperatury prowadzą do wyrazistych, nieoczekiwanych wyborów, ale zbyt wysoka temperatura powoduje niespójność. Należy użyć:

  • temperature = 0.9–1.2: różnorodne słownictwo, nieoczywiste wybory słów
  • top_p = 0.95: zapobiega pojawianiu się niespójnych tokenów z ogona, jednocześnie pozwalając na szeroką eksplorację
# Creative writing configuration
def write_story_opening(prompt):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a creative fiction writer. Write vivid, original prose.'},
            {'role': 'user', 'content': f'Write a story opening for: {prompt}'}
        ],
        temperature=1.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

opening = write_story_opening('A detective discovers her partner is the killer.')
print(opening)

Burza mózgów i generowanie pomysłów

W przypadku burzy mózgów celem jest maksymalna różnorodność pomysłów — także nietypowych lub nieoczekiwanych. Należy użyć najwyższej praktycznej temperatury:

  • temperature = 1.0–1.5: szeroka eksploracja przestrzeni pomysłów
  • top_p = 0.95–1.0: minimalne ograniczenie

Należy uruchomić generowanie wielokrotnie i zebrać wszystkie wyniki, a następnie ręcznie wybrać najlepsze pomysły. Prompty do burzy mózgów powinny zawierać wyraźną prośbę o różnorodność: 'Podaj mi 10 różnych podejść, w tym nietypowe.'

# Brainstorming: run multiple times for variety
def brainstorm(topic, n_runs=5):
    ideas = []
    for _ in range(n_runs):
        resp = client.chat.completions.create(
            model='gpt-4o',
            messages=[
                {'role': 'system', 'content': 'Generate creative, diverse ideas. Include unusual approaches.'},
                {'role': 'user', 'content': f'Give me 3 ideas for: {topic}'}
            ],
            temperature=1.3,
            top_p=0.95
        )
        ideas.append(resp.choices[0].message.content)
    return ideas

all_ideas = brainstorm('reducing customer churn')

Testowanie wrażliwości na parametry

Przed ostatecznym wyborem parametrów należy przeprowadzić testy wrażliwości parametrów: zachować prompt bez zmian, zmieniać za każdym razem tylko jeden parametr i oceniać jakość wyniku przy każdym ustawieniu.

def sensitivity_test(prompt, evaluator, temperatures, n_samples=5):
    results = {}
    for temp in temperatures:
        scores = []
        for _ in range(n_samples):
            resp = client.chat.completions.create(
                model='gpt-4o',
                messages=[{'role': 'user', 'content': prompt}],
                temperature=temp
            )
            score = evaluator(resp.choices[0].message.content)
            scores.append(score)
        results[temp] = sum(scores) / len(scores)

    for temp, score in sorted(results.items()):
        print(f'T={temp}: avg score = {score:.2f}')
    best_temp = max(results, key=results.get)
    print(f'Best temperature: {best_temp}')
    return best_temp

Kiedy pozostawić wartości domyślne

Nie każda aplikacja wymaga niestandardowych parametrów. Należy pozostawić wartości domyślne, gdy:

  • Przypadek użycia dotyczy ogólnego czatu — domyślna temperatura (1.0 w większości interfejsów API) jest dobrze dostrojona
  • Trwa etap prototypowania i nie znają Państwo jeszcze właściwych ustawień
  • Zadanie stanowi kompromis między dokładnością a kreatywnością (np. redagowanie wiadomości e-mail)

Reguła praktyczna: parametry należy dostosowywać tylko wtedy, gdy podczas testów domyślne działanie powoduje mierzalny problem z jakością. Przedwczesne dostrajanie parametrów zwiększa złożoność bez wymiernych korzyści.

# Defaults are often correct
default_resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Draft a professional email declining a meeting.'}]
    # No temperature or top_p specified — API defaults apply
    # OpenAI default: temperature=1, top_p=1
)
print(default_resp.choices[0].message.content)

Skrócona karta referencyjna

Tabela podsumowująca zalecane ustawienia dla poszczególnych przypadków użycia:

PARAMETER_PRESETS = {
    # task: (temperature, top_p, notes)
    'factual_qa':        (0.0, 1.0, 'greedy, max accuracy'),
    'classification':    (0.0, 1.0, 'deterministic labels'),
    'code_generation':   (0.1, 0.95, 'near-greedy, avoid tail tokens'),
    'data_extraction':   (0.2, 1.0, 'slight variation for robustness'),
    'summarization':     (0.4, 1.0, 'preserve facts, vary phrasing'),
    'translation':       (0.3, 1.0, 'accurate but natural'),
    'chat':              (0.8, 0.9, 'natural conversation'),
    'email_drafting':    (0.7, 0.9, 'professional but varied'),
    'creative_writing':  (1.1, 0.95, 'vivid, original'),
    'brainstorming':     (1.3, 0.95, 'maximum diversity'),
}

for task, (temp, top_p, notes) in PARAMETER_PRESETS.items():
    print(f'{task:22} temp={temp}, top_p={top_p} | {notes}')

Kary za częstotliwość i obecność

Dwa dodatkowe parametry uzupełniają temperaturę i top-p:

  • frequency_penalty (0–2): zmniejsza prawdopodobieństwo tokenów proporcjonalnie do liczby ich dotychczasowych wystąpień w wyniku — zapobiega powtarzaniu słów
  • presence_penalty (0–2): zmniejsza prawdopodobieństwo każdego tokenu, który pojawił się choć raz — zachęca do różnorodności tematycznej

W przypadku pisania kreatywnego należy dodać frequency_penalty=0.5, aby ograniczyć powtarzanie wyborów słownych bez zmiany temperatury.

resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Write a paragraph about coffee.'}],
    temperature=1.0,
    top_p=0.95,
    frequency_penalty=0.5,  # discourage repeating the same words
    presence_penalty=0.3    # encourage introducing new topics/aspects
)
print(resp.choices[0].message.content)

Sprawdzian wiedzy

W przypadku zadania generującego kod Python, który będzie wykonywany na produkcji, która konfiguracja parametrów jest najbardziej odpowiednia?

Podsumowanie: wybór parametrów próbkowania

Dopasuj parametry do potrzeb w zakresie dokładności i różnorodności:

  • Fakty/kod: temp=0–0.2, top_p=0.95 — dokładność przede wszystkim
  • Podsumowywanie: temp=0.3–0.5 — równowaga
  • Czat: temp=0.7–0.9, top_p=0.9 — naturalne zróżnicowanie
  • Twórczość: temp=0.9–1.2, top_p=0.95 — różnorodność
  • Burza mózgów: temp=1.3, top_p=0.95 — maksymalna eksploracja

Należy przeprowadzać testy wrażliwości parametrów. Wartości domyślne należy pozostawić, jeśli nie zaobserwowano problemu z jakością. W przypadku problemów z powtarzalnością należy dodać frequency_penalty. Na tym kończy się kurs 19. Następna lekcja: testowanie promptów i regresja.

Bezpłatny start

Ucz się AI Prompt Engineering dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
53
Lekcje
199

Często zadawane pytania

Czy lekcja „Dobór parametrów do danego zastosowania” jest bezpłatna?

Tak — pełny tekst „Dobór parametrów do danego zastosowania” 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 Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Co nauczysz się w „Dobór parametrów do danego zastosowania”?

Zalecane ustawienia dla faktograficznych pytań i odpowiedzi, kreatywnego pisania, kodu oraz czatu. Ćwiczysz AI Prompt Engineering 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 Prompt Engineering?

Nie wymagamy żadnego doświadczenia. AI Prompt Engineering 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 4 z 4.

Ile czasu zajmuje lekcja „Dobór parametrów do danego zastosowania”?

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 Prompt Engineering?

Tak. Każda lekcja AI Prompt Engineering 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. Czym jest temperatura w LLM-ach
  2. Próbkowanie nucleus top-p
  3. Próbkowanie top-k
  4. Dobór parametrów do danego zastosowania
← Powrót do AI Prompt Engineering