Tekoälyn prompt engineering · Oppitunti

Täydennystehtävämallien luominen

Käyttäkää {{variable}}-paikanvaraajia ja merkkijonojen korvaamista Pythonissa.

Oppitunti 2/413 vaihetta

Täydennystehtävämallien luominen on ilmainen Tekoälyn prompt engineering-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

Paikkamerkkien merkintätapa

Täydennettävässä kehotemallissa käytetään paikkamerkkejä merkitsemään kehotteen osia, jotka korvataan todellisilla arvoilla ennen kuin kehote lähetetään mallille.

Yleisin paikkamerkkien merkintätapa on kaksinkertaiset aaltosulkeet: {{variable_name}}. Tämä merkintätapa on helppolukuinen, epätodennäköinen esiintymään vahingossa tavallisessa tekstissä ja laajasti mallipohjakirjastojen tukema.

Kohtaatte myös muita merkintätapoja: yksinkertaiset aaltosulkeet {variable}, kulmasulkeet <variable> ja ALL_CAPS-muuttujat. Valitkaa yksi tapa ja käyttäkää sitä johdonmukaisesti.

Paikanvaraajien peruskorvaaminen

Yksinkertaisin aukkojen täyttömalli on suora merkkijonon korvaaminen:

Malline: "Kirjoita {{word_count}} sanan kuvaus tuotteesta {{product}} kohderyhmälle {{audience}}."

Tämä korvaaminen tapahtuu ennen merkkijonon lähettämistä mallille — malli näkee siistin, täydellisen kehotteen ilman paikanvaraajamerkintöjä. Paikanvaraajat ovat esikäsittelyvaihe, eivät jotain, mitä malli itse käsittelee.

Paikanvaraajien yleiset luokat

Rakentakaa mallineenne käyttämällä vakiintuneita paikanvaraajaluokkia, jotka kattavat useimmat käyttötapaukset:

  • {{customer_name}} — vastaanottajan tai kohteen nimi
  • {{product}} — tuote, palvelu tai aihe, josta kirjoitetaan
  • {{tone}} — esimerkiksi asiallinen, rento, kiireellinen tai innostunut
  • {{audience}} — kenelle sisältö on tarkoitettu
  • {{word_count}} — tavoitepituus
  • {{format}} — luettelomerkit, kappaleet tai numeroitu luettelo
  • {{context}} — tähän tapaukseen liittyvät taustatiedot

Yhtenäinen nimeäminen kaikissa mallineissa helpottaa kirjaston käyttöä ja vähentää virheitä.

Merkkijonojen korvaaminen Pythonin .format()-menetelmällä

Pythonin sisäänrakennettu merkkijonojen .format()-menetelmä on yksinkertainen tapa täyttää paikanvaraajat käyttämällä syntaksia {variable}:

import openai

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

EMAIL_TEMPLATE = '''Write a follow-up email from {sender_name} to {recipient_name}.
Context: {context}
Tone: {tone}
Length: {word_count} words.
Include a clear call to action: {cta}.
Do not mention competitors. Active voice. No bullet points.'''

def generate_email(sender, recipient, context, tone, word_count, cta):
    prompt = EMAIL_TEMPLATE.format(
        sender_name=sender,
        recipient_name=recipient,
        context=context,
        tone=tone,
        word_count=word_count,
        cta=cta
    )

    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}]
    )
    return response.choices[0].message.content

result = generate_email(
    sender='Sarah Chen',
    recipient='Mr. Patel',
    context='We met at the DevConf conference last week and discussed API integration.',
    tone='warm and professional',
    word_count=120,
    cta='Schedule a 20-minute demo call'
)
print(result)

Pythonin f-string-lähestymistapa

Pythonin f-string-merkkijonot tarjoavat rivinsisäisen korvaussyntaksin, jota jotkut kehittäjät suosivat sen luettavuuden vuoksi:

import openai

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

def generate_product_description(product, audience, tone, word_count, key_benefit):
    prompt = (
        f'Write a product description for {product}, designed for {audience}. '
        f'Tone: {tone}. '
        f'Length: {word_count} words. '
        f'Lead with this key benefit: {key_benefit}. '
        'Active voice. No bullet points. No pricing mentions.'
    )

    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}]
    )
    return response.choices[0].message.content

print(generate_product_description(
    product='FocusFlow, a time-blocking productivity app',
    audience='freelancers and independent consultants',
    tone='energetic and practical',
    word_count=150,
    key_benefit='Reclaim two hours every day by blocking distractions automatically'
))

Erikoismerkkien käsittely paikanvaraajissa

Yleinen virhe syntyy, kun käyttäjän antamat arvot sisältävät aaltosulkeita, lainausmerkkejä tai rivinvaihtoja, jotka voivat rikkoa merkkijonon korvaamisen.

Varautukaa tähän seuraavilla tavoilla:

  • Puhdistakaa syötteet ennen korvaamista — poistakaa erikoismerkit tai escapekaa ne tarvittaessa
  • Käyttäkää kolminkertaisilla lainausmerkeillä rajattuja merkkijonoja monirivisissä mallineissa, jotta rivinvaihdot käsitellään turvallisesti
  • Kun muuttujan arvo sisältää itsessään aaltosulkeita (esimerkiksi koodia), käyttäkää menetelmää, joka käsittelee muuttujan arvon kirjaimellisena tekstinä (Jinja2 käsittelee tämän hyvin)

Testatkaa malline aina myös poikkeustapauksilla: tyhjillä merkkijonoilla, lainausmerkkejä sisältävillä merkkijonoilla, rivinvaihtoja sisältävillä merkkijonoilla ja erittäin pitkillä merkkijonoilla.

Mallineiden oletusarvot

Kaikkien muuttujien ei tarvitse olla pakollisia. Valinnaisten parametrien oletusarvot tekevät mallineista joustavampia:

def build_prompt(product, audience, tone='professional and friendly', word_count=200, format_style='prose'):
    format_instruction = {
        'prose': 'Write in continuous paragraphs. No bullet points.',
        'bullets': 'Use bullet points. Each point is one sentence.',
        'numbered': 'Use a numbered list. Each item is one sentence.'
    }.get(format_style, 'Write in continuous paragraphs.')

    return (
        f'Write a description of {product} for {audience}. '
        f'Tone: {tone}. '
        f'Length: {word_count} words. '
        f'{format_instruction} '
        'Active voice. No competitor mentions.'
    )

# Minimal call — uses all defaults
print(build_prompt('Notion', 'students'))

# Full call — overrides defaults
print(build_prompt('Notion', 'students', tone='casual', word_count=100, format_style='bullets'))

Usean lohkon mallineet

Monimutkaisissa kehotteissa voi olla useita muuttujalohkoja — esimerkiksi järjestelmäkehotelohko ja käyttäjän viestilohko, joilla kummallakin on omat paikanvaraajansa:

SYSTEM_TEMPLATE = 'You are a {role} writing for {company}. Your audience is {audience}. Style: {style}.'

USER_TEMPLATE = 'Write a {content_type} about {topic}. Length: {word_count} words. Deadline tone: {urgency}.'

import openai

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

def generate(role, company, audience, style, content_type, topic, word_count, urgency):
    system_msg = SYSTEM_TEMPLATE.format(
        role=role, company=company, audience=audience, style=style
    )
    user_msg = USER_TEMPLATE.format(
        content_type=content_type, topic=topic,
        word_count=word_count, urgency=urgency
    )

    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': system_msg},
            {'role': 'user', 'content': user_msg}
        ]
    )
    return response.choices[0].message.content

Paikanvaraajien tarkistaminen ennen renderöintiä

Varmistakaa aina ennen kehotteen lähettämistä, että kaikki pakolliset paikanvaraajat on täytetty. Puuttuva paikanvaraaja tarkoittaa, että malli vastaanottaa kirjaimellista tekstiä, kuten {{product}}, ja saattaa tuottaa hyvin kummallisen tuloksen:

import re

def validate_template(template_str, provided_vars):
    required = set(re.findall(r'\{\{(\w+)\}\}', template_str))
    missing = required - set(provided_vars.keys())

    if missing:
        raise ValueError(f'Missing required template variables: {missing}')

    return True

template = 'Write a {{word_count}}-word {{tone}} description of {{product}} for {{audience}}.'
vars_provided = {'word_count': 150, 'tone': 'friendly', 'product': 'TaskFlow'}

try:
    validate_template(template, vars_provided)
except ValueError as e:
    print(f'Template error: {e}')
    # Output: Template error: Missing required template variables: {{'audience'}}

Ehdolliset mallinelohkot

Joskus mallineen osan pitäisi näkyä vain, jos tietty muuttuja on annettu. Voitte toteuttaa tämän Pythonissa rakentamalla merkkijonon ehtojen perusteella:

def build_report_prompt(topic, audience, word_count, include_recommendations=False, cta=None):
    prompt = f'Write a report on {topic} for {audience}. Length: {word_count} words. Active voice.'

    if include_recommendations:
        prompt += ' End with a numbered list of 3 specific recommendations.'

    if cta:
        prompt += f' Close with this call to action: {cta}'

    return prompt

# Without optional sections
print(build_report_prompt('cloud cost optimization', 'engineering managers', 400))

# With optional sections
print(build_report_prompt(
    topic='cloud cost optimization',
    audience='engineering managers',
    word_count=600,
    include_recommendations=True,
    cta='Book a cost audit with our team at cloudcost.io'
))

Rajattujen valintojen muuttujat

Joidenkin mallinemuuttujien arvo pitäisi rajoittaa kiinteään joukkoon sallittuja vaihtoehtoja. Pakottakaa tämä enum-tyylisellä tarkistuksella:

VALID_TONES = ['professional', 'casual', 'urgent', 'empathetic', 'enthusiastic']
VALID_FORMATS = ['prose', 'bullets', 'numbered', 'table']

def generate_content(topic, tone, format_style, word_count):
    if tone not in VALID_TONES:
        raise ValueError(f'Invalid tone: {tone}. Choose from: {VALID_TONES}')
    if format_style not in VALID_FORMATS:
        raise ValueError(f'Invalid format: {format_style}. Choose from: {VALID_FORMATS}')

    format_map = {
        'prose': 'continuous paragraphs, no lists',
        'bullets': 'bullet points',
        'numbered': 'numbered list',
        'table': 'a markdown table'
    }

    prompt = (f'Write about {topic} in {tone} tone. '
              f'Format: {format_map[format_style]}. '
              f'Length: {word_count} words. Active voice.')

    return prompt

Oppimistesti: Aukkojen täyttömallit

Käytössänne on tämä malline: 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'

Kutsutte sitä näin: tone='formal', recipient='the team', word_count=100 — mutta unohdatte parametrin topic.

Mitä tapahtuu?

Kertaus: Aukkojen täyttömallien luominen

Aukkojen täyttöön perustuvissa kehote­malleissa paikanvaraajat ({{variable}}, {variable} tai vastaavat) merkitsevät uudelleenkäytettävän mallineen muuttuvat osat. Pythonin .format() ja f-string-merkkijonot ovat yleisimmät korvausmekanismit.

Parhaat käytännöt: tarkistakaa kaikki pakolliset paikanvaraajat ennen renderöintiä, käyttäkää oletusarvoja valinnaisille muuttujille, rajoittakaa lueteltuja vaihtoehtoja käyttävät muuttujat ja käsitelkää poikkeustapaukset (tyhjät merkkijonot, erikoismerkit) ennakoivasti.

Seuraavassa oppitunnissa tutustutte Jinja2:een ja Pythonin string.Templateen, jotka tarjoavat tehokkaampia vaihtoehtoja muuttujien korvaamiseen.

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 ”Täydennystehtävämallien luominen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Tekoälyn prompt engineering-oppimispolun 3 oppituntia, myös oppitunnin “Täydennystehtävämallien luominen”. 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 ”Täydennystehtävämallien luominen”?

Käyttäkää {{variable}}-paikanvaraajia ja merkkijonojen korvaamista Pythonissa. 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 2/4.

Kuinka kauan ”Täydennystehtävämallien luominen”-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. Mikä on promptimalli
  2. Täydennystehtävämallien luominen
  3. Muuttujien korvaustekniikat
  4. Mallien uudelleenkäyttö eri tehtävissä
← Takaisin: Tekoälyn prompt engineering