Tekoälyn prompt engineering · Oppitunti

Parametrien valinta käyttötapausta varten

Suositellut asetukset faktapohjaisiin kysymyksiin ja vastauksiin, luovaan kirjoittamiseen, koodiin ja chattiin

Oppitunti 4/413 vaihetta

Parametrien valinta käyttötapausta varten on ilmainen Tekoälyn prompt engineering-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Tekoälyn prompt engineering-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyn prompt engineering-kurssilla on yhteensä 4 oppituntia.

Parametrien valintakehys

Otantaparametrien valinta ei perustu arvailuun — se noudattaa tehtävän vaatimuksiin perustuvaa logiikkaa. Oikean kokoonpanon määrittävät kaksi keskeistä ulottuvuutta:

  1. Tulosteen tarkkuus: kuinka tärkeää on, että tuloste on oikea ja ennakoitava?
  2. Tulosteen monipuolisuus: kuinka tärkeää on, että tulosteet vaihtelevat ja että malli tutkii erilaisia vaihtoehtoja?

Suuri tarkkuus → matala lämpötila. Suuri monipuolisuus → korkea lämpötila. Useimmat tehtävät sijoittuvat jonnekin näiden ääripäiden väliin.

Faktapohjainen kysymysten vastaaminen: tarkkuus ratkaisee

Faktapohjaisissa kysymyksissä on yleensä yksi oikea vastaus. Kaikki satunnaisuus lisää väärän vastauksen riskiä. Käyttäkää seuraavia asetuksia:

  • temperature = 0: greedy-dekoodaus, täysin deterministinen
  • top_p = 1.0: ei rajoitusta; temperature=0-tilanteessa top-p:llä ei ole vaikutusta

Näin varmistetaan, että malli valitsee aina vastauksen, josta se on varmin ja joka on todennäköisimmin oikea.

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).'

Koodin generointi: lähes greedy

Koodin on oltava syntaktisesti oikein ja semanttisesti täsmällistä. Satunnaisuus aiheuttaa syntaksivirheitä, vääriä muuttujanimiä tai virheellistä logiikkaa. Käyttäkää seuraavia asetuksia:

  • temperature = 0–0.2: lähes greedy — sallii pientä vaihtelua, mutta suosii vahvasti oikeita tokenivalintoja
  • top_p = 0.95: karsii äärimmäisen epätodennäköiset hännän tokenit, jotka voisivat aiheuttaa syntaksivirheitä
# 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)

Yhteenvedot: kohtuulliset asetukset

Yhteenvedoissa tarvitaan tarkkuutta (faktoja ei saa vääristää), mutta lievästä vaihtelusta on hyötyä (eri ajot voivat korostaa eri näkökulmia). Käyttäkää seuraavia asetuksia:

  • temperature = 0.3–0.5: vähäinen satunnaisuus säilyttää luonnollisen ilmaisun
  • top_p = 1.0: matalalla lämpötilalla ydinjoukon rajoitusta ei tarvita
# 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)

Keskusteleva chat: luonnollista vaihtelua

Chat-vastaukset hyötyvät luonnollisesta vaihtelusta — saman kysymyksen ei pitäisi aina tuottaa täsmälleen samaa muotoilua. Liiallinen satunnaisuus tekee vastauksista epäjohdonmukaisia. Käyttäkää seuraavia asetuksia:

  • temperature = 0.7–0.9: luonnollinen ja vaihteleva keskustelu
  • top_p = 0.9–0.95: karsii epätodennäköiset hännän tokenit, jotka tuottavat epäluonnollista muotoilua
# 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

Luova kirjoittaminen: suuri monipuolisuus

Luovassa kirjoittamisessa arvostetaan omaperäisyyttä ja odottamattomuutta. Matalat lämpötilat tuottavat kliseistä ja ennakoitavaa tekstiä. Korkeat lämpötilat tuottavat eloisia ja odottamattomia valintoja — liian korkea lämpötila aiheuttaa kuitenkin epäjohdonmukaisuutta. Käyttäkää seuraavia asetuksia:

  • temperature = 0.9–1.2: monipuolinen sanasto ja epäilmeiset sanavalinnat
  • top_p = 0.95: estää epäjohdonmukaiset hännän tokenit ja sallii samalla laajan tutkimisen
# 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)

Aivoriihi ja ideointi

Aivoriihessä tavoitteena on ideoiden mahdollisimman suuri monipuolisuus — myös epätavalliset ja odottamattomat ideat ovat tervetulleita. Käyttäkää suurinta käytännössä toimivaa lämpötilaa:

  • temperature = 1.0–1.5: ideatilan laaja tutkiminen
  • top_p = 0.95–1.0: vain vähäisiä rajoituksia

Suorittakaa ajo useita kertoja ja kerätkää kaikki tulosteet — suodattakaa sitten parhaat ideat manuaalisesti. Aivoriihipromptit hyötyvät nimenomaisista monipuolisuutta koskevista pyynnöistä: ”Antakaa minulle 10 erilaista lähestymistapaa, myös epätavallisia.”

# 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')

Parametrien herkkyystestaus

Ennen kuin päätätte parametreista, suorittakaa parametrien herkkyystestejä: pitäkää prompti samana, muuttakaa yhtä parametria kerrallaan ja arvioikaa tulosteen laatua kullakin asetuksella.

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

Milloin oletusasetukset kannattaa säilyttää

Kaikki sovellukset eivät tarvitse mukautettuja parametreja. Säilyttäkää oletusasetukset, kun:

  • käyttötapaus on yleinen chat — oletuslämpötila (useimmissa rajapinnoissa 1.0) on hyvin säädetty
  • teette prototyyppiä ettekä vielä tiedä oikeita asetuksia
  • tehtävässä tarkkuus ja luovuus ovat tasapainossa (esimerkiksi sähköpostin luonnostelussa)

Nyrkkisääntö: mukauttakaa parametreja vain, jos oletustoiminta aiheuttaa testeissä mitattavan laatuongelman. Parametrien ennenaikainen säätäminen lisää monimutkaisuutta ilman mitattavaa hyötyä.

# 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)

Pikaohjekortti

Suositeltujen asetusten yhteenvetotaulukko käyttötapauksen mukaan:

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}')

Frekvenssi- ja läsnäolorangaistukset

Kaksi lisäparametria täydentää lämpötilaa ja top-p:tä:

  • frequency_penalty (0–2): pienentää tokenien todennäköisyyttä suhteessa siihen, kuinka usein ne ovat tähän mennessä esiintyneet tulosteessa — estää sanojen toistumista
  • presence_penalty (0–2): pienentää kaikkien edes kerran esiintyneiden tokenien todennäköisyyttä — kannustaa aiheiden monipuolisuuteen

Luovassa kirjoittamisessa lisätkää frequency_penalty=0.5 vähentääksenne toistuvia sanavalintoja muuttamatta lämpötilaa.

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)

Tietotesti

Mikä parametrikokoonpano sopii parhaiten tehtävään, jossa tuotetaan Python-koodia suoritettavaksi tuotannossa?

Kertaus: otantaparametrien valinta

Sovittakaa parametrit tarkkuuden ja monipuolisuuden tarpeisiinne:

  • Faktat/koodi: temp=0–0.2, top_p=0.95 — tarkkuus ensin
  • Yhteenvedot: temp=0.3–0.5 — tasapaino
  • Chat: temp=0.7–0.9, top_p=0.9 — luonnollinen vaihtelu
  • Luova kirjoittaminen: temp=0.9–1.2, top_p=0.95 — monipuolisuus
  • Aivoriihi: temp=1.3, top_p=0.95 — mahdollisimman laaja tutkiminen

Suorittakaa parametrien herkkyystestejä. Säilyttäkää oletusasetukset, jos laatuongelmaa ei havaita. Lisätkää frequency_penalty toisto-ongelmien ratkaisemiseksi. Tämä päättää kurssin 19. Seuraavaksi: promptien testaus ja regressiot.

Aloita maksutta

Opi Tekoälyn prompt engineering tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
199

Usein kysytyt kysymykset

Onko oppitunti ”Parametrien valinta käyttötapausta varten” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Tekoälyn prompt engineering-oppimispolun 3 oppituntia, myös oppitunnin “Parametrien valinta käyttötapausta varten”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Tekoälyn prompt engineering-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Parametrien valinta käyttötapausta varten”?

Suositellut asetukset faktapohjaisiin kysymyksiin ja vastauksiin, luovaan kirjoittamiseen, koodiin ja chattiin Harjoittelet Tekoälyn prompt engineering-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyn prompt engineering-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyn prompt engineering-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Parametrien valinta käyttötapausta varten”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyn prompt engineering-oppitunnilla?

Kyllä. Jokainen Tekoälyn prompt engineering-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Mitä lämpötila tarkoittaa LLM-malleissa?
  2. Top-p-ytimenäytteistys
  3. Top-k-näytteistys
  4. Parametrien valinta käyttötapausta varten
← Takaisin: Tekoälyn prompt engineering