Dobór parametrów do danego zastosowania
Zalecane ustawienia dla faktograficznych pytań i odpowiedzi, kreatywnego pisania, kodu oraz czatu.
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ę:
- Dokładność wyniku: jak ważne jest, aby wynik był poprawny i przewidywalny?
- 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, historyPisanie 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_tempKiedy 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.
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
- Czym jest temperatura w LLM-ach
- Próbkowanie nucleus top-p
- Próbkowanie top-k
- Dobór parametrów do danego zastosowania