Tekoälyn prompt engineering · Oppitunti

Epämääräisten ja täsmällisten promptien vertailu

Rinnakkaiset esimerkit osoittavat, miten huomattavasti täsmällisyys vaikuttaa.

Oppitunti 4/413 vaihetta

Epämääräisten ja täsmällisten promptien vertailu 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.

Rinnakkaisvertailumenetelmä

Nopein tapa sisäistää kehotteiden laatu on tarkastella täsmällisiä uudelleenmuotoiluja rinnakkain ja analysoida, miksi kukin parannus toimii.

Tässä oppitunnissa tarkastelemme viittä epämääräistä kehotetta ja niiden täsmällisiä uudelleenmuotoiluja. Tunnistamme jokaisesta parista tehdyt täsmälliset muutokset sekä mekanismin, jolla kukin parannus ohjaa mallia tuottamaan paremman tulosteen.

Pari 1: Blogikirjoitus

Epämääräinen: 'Kirjoittakaa blogikirjoitus etätyöstä.'

Täsmällinen: 'Kirjoittakaa 600 sanan blogikirjoitus otsikolla "Ne 3 etätyötapaa, jotka romahduttivat tuottavuuteni (ja mitä teen nyt)" keskitason ohjelmistokehittäjille. Käyttäkää minämuotoista kerrontaa ja keskustelevaa sävyä. Rakenne: 1 johdantokappale, 3 osiota H2-otsikoilla ja 1 lopun CTA ilmaisen mallipohjan lataamiseen.'

Miksi tämä toimii: Kehote lisää sanamäärän, otsikon (ja siten näkökulman), yleisön, kerrontatavan, sävyn, rakenteen ja tietyn lopetuselementin. Mitään osa-aluetta ei jätetä sattuman varaan.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=800,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 600-word blog post titled '
            '"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
            'for an audience of mid-level software developers. '
            'First-person voice, conversational tone. '
            'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
            '1 closing paragraph with a CTA to download a free productivity template.'
        )
    }]
)
print(response.content[0].text[:400], '...')

Pari 2: Koodikatselmointi

Epämääräinen: 'Tarkastelkaa koodiani.'

Täsmällinen: 'Tarkastelkaa seuraavaa Python-funktiota. Keskittykää vain seuraaviin: 1) oikeellisuusvirheet, 2) käsittelemättä jäävät reunatapaukset. Älkää kommentoiko tyyliä, nimeämistä tai muotoilua. Tulostemuoto: numeroitu luettelo ongelmista, ja jokaisesta: ongelman kuvaus (1 virke), vaikutuksen alaiset rivit, ehdotettu korjaus (koodikatkelma).'

Miksi tämä toimii: Kehote määrittää katselmoinnin laajuuden (oikeellisuus + reunatapaukset), sulkee nimenomaisesti pois muut osa-alueet (tyyli/nimeäminen) ja määrittää täsmällisen tulostusrakenteen, jossa jokaisesta havainnosta esitetään kolme kenttää.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

code = (
    'def get_user(users, user_id):\n'
    '    for user in users:\n'
    '        if user["id"] == user_id:\n'
    '            return user["name"]\n'
    '    return users[0]["name"]\n'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Review the following Python function.\n'
            'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
            'Do NOT comment on style, naming conventions, or formatting.\n'
            'Output format: numbered list. Each item: issue (1 sentence), '
            'affected line, suggested fix as a code snippet.\n\n'
            + code
        )
    }]
)
print(response.choices[0].message.content)

Pari 3: Sähköpostin otsikkorivi

Epämääräinen: 'Kirjoittakaa sähköpostin otsikkorivejä uutiskirjettäni varten.'

Täsmällinen: 'Kirjoittakaa 10 sähköpostin otsikkoriviä datatieteilijöille suunnattuun viikoittaiseen Python-uutiskirjeeseen. Jokaisessa otsikkorivissä on oltava alle 50 merkkiä, avausprosenttia parantava koukku (uteliaisuuden aukko, numeroitu luettelo tai yllättävä väite), ja siinä on vältettävä roskapostin laukaisevia sanoja, kuten FREE tai URGENT. Esittäkää tulokset numeroituna luettelona ja merkitkää koukkutyyppi hakasulkeisiin.'

Miksi tämä toimii: Kehote määrittää määrän, pituusrajoituksen, koukkua koskevan vaatimuksen, poissuljettavat sanat ja nimetyn tulostemuodon — epämääräisestä luovasta tehtävästä tulee sääntöpohjainen tuottamistehtävä.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Write 10 email subject lines for a weekly newsletter '
            'about Python tips for data scientists. '
            'Requirements:\n'
            '- Each under 50 characters\n'
            '- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
            '- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
            '- Output as numbered list with hook type in brackets at the end of each line'
        )
    }]
)
print(response.content[0].text)

Pari 4: Kokouksen yhteenveto

Epämääräinen: 'Tiivistä tämä kokouksen litterointi.'

Täsmällinen: 'Tiivistä tämä kokouksen litterointi seuraavassa muodossa: 1) Kokouksen tarkoitus (1 virke), 2) Tehdyt keskeiset päätökset (luetelmakohta, enintään 5), 3) Toimenpiteet (taulukko, jonka sarakkeet ovat: Tehtävä, Vastuuhenkilö, Määräaika), 4) Avoimet kysymykset (numeroitu luettelo). Jos jonkin kentän tiedot puuttuvat, kirjoittakaa N/A. Älkää sisällyttäkö mielipiteitä — vain faktat ja sitoumukset.'

Miksi tämä toimii: Kehote tarjoaa täsmällisen mallin, määrittää kunkin osion rajat, määrittelee taulukon skeeman, antaa puuttuville tiedoille oletusarvon ja lisää sävyä koskevan rajoituksen (vain faktat).

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

transcript = (
    'John: We need to decide on the launch date. '
    'Sarah: I think Q3 works. We need the API done first. '
    'John: Agreed. Sarah, can you own the API? '
    'Sarah: Yes, I can have it by July 15th. '
    'John: Great. Who handles marketing? '
    'Mike: I will, but I need the feature list first. '
    'John: We still need to confirm pricing — tabled for next week.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Summarize this meeting transcript in this exact format:\n'
            '1. Meeting Purpose: (1 sentence)\n'
            '2. Key Decisions: (bullet list, max 5)\n'
            '3. Action Items: (markdown table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: write N/A. Facts only, no opinions.\n\n'
            'Transcript:\n' + transcript
        )
    }]
)
print(response.choices[0].message.content)

Pari 5: Selitys

Epämääräinen: 'Selittäkää koneoppiminen.'

Täsmällinen: 'Selittäkää koneoppiminen kolmessa kappaleessa terveysalan yrityksen tuotepäällikölle, joka ymmärtää tilastotiedettä mutta ei ole koskaan kirjoittanut koodia. Kappale 1: mitä koneoppiminen on ja miten se eroaa perinteisestä ohjelmoinnista. Kappale 2: todellinen terveydenhuoltoalan esimerkki (diagnostiikka tai lääkekehitys). Kappale 3: yksi yleinen väärinkäsitys, jota tulee välttää. Enintään 200 sanaa yhteensä.'

Miksi tämä toimii: Kehote määrittää rakenteen (3 kappaletta, joista jokaisella on oma aiheensa), yleisön (tietty rooli + toimiala + tausta), kunkin kappaleen sisältövaatimukset ja kokonaispituuden ylärajan.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=350,
    messages=[{
        'role': 'user',
        'content': (
            'Explain machine learning in exactly 3 paragraphs. '
            'Audience: a product manager at a healthcare company who understands statistics '
            'but has never written code.\n'
            'Paragraph 1: what ML is and how it differs from traditional programming.\n'
            'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
            'Paragraph 3: one common misconception non-technical people have about ML.\n'
            'Max 200 words total. No bullet points — flowing prose only.'
        )
    }]
)
print(response.content[0].text)

Tehokkaan uudelleenmuotoilun rakenne

Kun tarkastelemme kaikkia viittä paria, jokainen tehokas uudelleenmuotoilu tekee samat asiat:

  1. Korvaa epämääräisen verbin ('kirjoita', 'tarkastele', 'selitä') jäsennellyllä tehtävällä
  2. Nimeää tulostemuodon (luettelo, taulukko tai kappaleet, joiden sisältö on määritelty)
  3. Lisää mitattavia rajoituksia (sanamäärä, kohtien määrä, merkkirajat)
  4. Määrittää yleisön (rooli + tausta + konteksti)
  5. Lisää vähintään yhden poissulkevan säännön (mitä jätetään pois)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
    improvements = []
    words = specific.lower()
    if any(str(n) in words for n in range(10, 10000)):
        improvements.append('Quantitative constraint added')
    if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
        improvements.append('Negative constraint added')
    if 'audience' in words or 'for a' in words or 'targeting' in words:
        improvements.append('Audience specified')
    if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
        improvements.append('Output format defined')
    if 'example' in words or 'such as' in words or 'like:' in words:
        improvements.append('Example provided')
    print('Improvements detected:')
    for i in improvements:
        print(f'  + {i}')

vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)

Mitä tapahtuu, kun lisätään vain yksi osa-alue

Yhdenkin parannuksen lisääminen auttaa — mutta osittain täsmällinen kehote jättää edelleen suuria aukkoja. Verrataan:

  • 'Kirjoittakaa blogikirjoitus etätyöstä' — ei rajoituksia
  • 'Kirjoittakaa 600 sanan blogikirjoitus etätyöstä' — vain pituus on määritetty; näkökulma, yleisö ja rakenne ovat edelleen epämääräisiä
  • 'Kirjoittakaa 600 sanan blogikirjoitus etätyöstä kehittäjille keskustelevaan sävyyn' — pituus + yleisö + sävy; rakenne, CTA ja otsikkotyyli ovat edelleen epämääräisiä

Jokainen määrittelemättä jättämänne osa-alue on arpapeliä. Lisätkää niin monta osa-aluetta kuin teillä on tietoa määriteltäväksi.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Progressively more specific prompts
prompts = [
    'Write about Python.',
    'Write a 200-word article about Python.',
    'Write a 200-word article about Python for beginners who know no programming.',
    (
        'Write a 200-word article about Python for beginners who know no programming. '
        'Start with a real-world analogy. Use 3 short paragraphs. '
        'End with one actionable first step they can take today.'
    )
]

for i, p in enumerate(prompts, 1):
    print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
    print()

Rinnakkaisvertailutekniikan käyttäminen käytännössä

Rinnakkaisvertailutekniikka on tehokas virheenkorjaustyökalu. Kun saatte huonon tulosteen:

  1. Tallentakaa huonon tulosteen tuottanut epämääräinen kehote
  2. Tunnistakaa yksi ongelman aiheuttanut osa-alue
  3. Kirjoittakaa täsmällinen uudelleenmuotoilu, joka kohdistuu vain tähän osa-alueeseen
  4. Suorittakaa molemmat kehotteet ja verratkaa tulosteita
  5. Tunnistakaa, mitä on vielä korjattava — ja lisätkää sitten seuraava rajoitus

Tämä tieteellinen lähestymistapa opettaa nopeasti, mitkä rajoitukset ovat käyttötapauksessanne tärkeimpiä.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
    client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
    for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
        response = client_ref.messages.create(
            model='claude-opus-4-5',
            max_tokens=150,
            messages=[{'role': 'user', 'content': prompt}]
        )
        print(f'=== {label} ===')
        print(prompt)
        print('--- OUTPUT ---')
        print(response.content[0].text)
        print()

compare_prompts(
    prompt_a='Explain APIs.',
    prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
    label_a='VAGUE',
    label_b='SPECIFIC'
)

Kahden minuutin kehotetarkastus

Tehkää tämä kahden minuutin tarkastus ennen minkä tahansa tärkeän kehotteen lähettämistä. Jos vastaus johonkin kysymykseen on 'ei', lisätkää puuttuva yksityiskohta:

  • Onko muoto nimetty? (luettelo / taulukko / kappale / JSON)
  • Onko pituus määritetty? (sanamäärä / kohtien määrä)
  • Onko yleisö kuvattu? (rooli + tausta)
  • Onko tavoite selkeä? (mihin tulostetta käytetään)
  • Onko mukana vähintään yksi poissulkeminen? (mitä jätetään pois)
  • Onko mukana esimerkki tai mallipohja? (jos tyylillä on merkitystä)
def two_minute_audit(prompt):
    score = 0
    checks = {
        'Format specified': any(w in prompt.lower() for w in
            ['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
        'Length given': any(c.isdigit() for c in prompt),
        'Audience named': any(w in prompt.lower() for w in
            ['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
        'Exclusion added': any(w in prompt.lower() for w in
            ['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
        'Goal stated': any(w in prompt.lower() for w in
            ['goal', 'purpose', 'so that', 'in order to', 'will be used']),
    }
    print('Prompt Audit:')
    for check, passed in checks.items():
        icon = 'PASS' if passed else 'FAIL'
        print(f'  [{icon}] {check}')
        if passed: score += 1
    print(f'Score: {score}/{len(checks)}')

two_minute_audit(
    'Write 5 bullet-point suggestions for improving user onboarding '
    'for a B2B SaaS app targeting first-time non-technical users. '
    'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)

Oman kehotekirjaston rakentaminen

Aina kun kirjoitatte erinomaisen tulosteen tuottavan kehotteen, tallentakaa se. Rakentakaa tehtävätyypeittäin järjestetty henkilökohtainen kehotekirjasto.

Hyvä kehotekirjaston merkintä sisältää:

  • Kehotemallin ja paikkamerkit, kuten [AUDIENCE] ja [WORD_COUNT]
  • Käyttötapauksen, jota varten se suunniteltiin
  • Käytetyn mallin ja asetukset
  • Muistiinpanon siitä, mikä tekee kehotteesta tehokkaan

Ajan mittaan kirjastostanne tulee arvokkain tekoälytuottavuuden voimavarasi.

# Example prompt library entry
prompt_library = {
    'meeting_summary': {
        'template': (
            'Summarize the following meeting transcript in this format:\n'
            '1. Purpose: (1 sentence)\n'
            '2. Decisions: (bullet list, max 5)\n'
            '3. Action Items: (table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
        ),
        'use_case': 'Post-meeting automation for Slack or Notion',
        'model': 'claude-opus-4-5',
        'temperature': 0,
        'notes': 'Works best with verbatim transcripts, not paraphrased notes'
    }
}

# Use the template
def run_meeting_summary(transcript):
    template = prompt_library['meeting_summary']['template']
    return template.replace('[TRANSCRIPT]', transcript)

print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])

Tietotesti

Kun tarkastelette tämän oppitunnin viittä vertailuparia, mikä yksittäinen muutos paransi kehotteiden laatua johdonmukaisimmin kaikissa viidessä esimerkissä?

Epämääräinen vs. täsmällinen – yhteenveto

Viisi vertailuparia paljastavat johdonmukaisen kaavan sille, mikä tekee kehotteiden uudelleenmuotoiluista tehokkaita:

  • Tulosteen rakenne on tehokkain parannus — määrittäkää se aina
  • Sana- tai kohtamäärä poistaa pituudesta neuvottelemisen kokonaan
  • Yleisön kuvaus säätää sanaston ja syvyyden automaattisesti sopivalle tasolle
  • Poissulkevat säännöt estävät ennalta arvattavan yleisluonteisen sisällön
  • Osittainen täsmällisyys jättää edelleen aukkoja — jokainen määrittelemätön osa-alue on arvaus
  • Kehotekirjastot säilyttävät toimivat mallipohjat toistuvaa käyttöä varten
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 ”Epämääräisten ja täsmällisten promptien vertailu” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Tekoälyn prompt engineering-oppimispolun 3 oppituntia, myös oppitunnin “Epämääräisten ja täsmällisten promptien vertailu”. 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 ”Epämääräisten ja täsmällisten promptien vertailu”?

Rinnakkaiset esimerkit osoittavat, miten huomattavasti täsmällisyys vaikuttaa. 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 ”Epämääräisten ja täsmällisten promptien vertailu”-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. Miksi täsmällisyys on tärkeää
  2. Monitulkintaisuuden poistaminen prompteista
  3. Konkreettisten tietojen lisääminen
  4. Epämääräisten ja täsmällisten promptien vertailu
← Takaisin: Tekoälyn prompt engineering