AI-prompt engineering · leksjon

Opprette utfyllingsmønstre

Bruk plassholdere som {{variable}} og strengsubstitusjon i Python.

Leksjon 2 av 413 trinn

Opprette utfyllingsmønstre er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-prompt engineering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.

Konvensjonen for plassholdere

Et utfyllingsmønster for prompter bruker plassholdere til å markere delene av en prompt som skal erstattes med faktiske verdier før prompten sendes til modellen.

Den vanligste konvensjonen for plassholdere er doble krøllparenteser: {{variable_name}}. Denne konvensjonen er lett å lese, det er lite sannsynlig at den opptrer tilfeldig i vanlig tekst, og den støttes av mange malbiblioteker.

Andre konvensjoner du vil møte på, er enkle krøllparenteser {variable}, vinkelparenteser <variable> og variabler med STORE BOKSTAVER. Velg én og vær konsekvent.

Grunnleggende substitusjon av plassholdere

Det enkleste mønsteret for utfylling av tomrom er direkte strengsubstitusjon:

Mal: "Skriv en beskrivelse på {{word_count}} ord av {{product}} for {{audience}}."

Utfylt: "Skriv en beskrivelse på 150 ord av TaskFlow Pro for eiere av små bedrifter."

Substitusjonen skjer før strengen sendes til modellen – modellen ser en ren, komplett prompt uten plassholdermarkører. Plassholdere er et forhåndsbehandlingstrinn, ikke noe modellen håndterer selv.

Vanlige plassholderkategorier

Bygg malene med standardiserte plassholderkategorier som dekker de fleste bruksområder:

  • {{customer_name}} — navnet på mottakeren eller emnet
  • {{product}} — produktet, tjenesten eller temaet det skrives om
  • {{tone}} — f.eks. profesjonell, uformell, presserende, entusiastisk
  • {{audience}} — hvem innholdet er beregnet på
  • {{word_count}} — ønsket lengde
  • {{format}} — punktliste, avsnitt, nummerert liste
  • {{context}} — bakgrunnsinformasjon som er spesifikk for denne forekomsten

Konsekvent navngivning på tvers av malene gjør biblioteket enklere å navigere i og reduserer antall feil.

Substitusjon med Python-strengformat

Pythons innebygde strengmetode .format() er en enkel måte å fylle ut plassholdere på ved hjelp av syntaksen {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)

Tilnærming med Python-f-strenger

Python-f-strenger gir en innebygd syntaks for substitusjon som noen utviklere foretrekker fordi den er lett å lese:

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

Håndtering av spesialtegn i plassholdere

En vanlig feil er at verdier fra brukere som inneholder krøllparenteser, anførselstegn eller linjeskift, kan ødelegge strengsubstitusjonen.

Forebyggende tiltak:

  • Rens inndata før substitusjonen — fjern eller escape spesialtegn ved behov
  • Bruk strenger med tre anførselstegn for maler over flere linjer, slik at linjeskift håndteres trygt
  • Når variabelverdien selv inneholder krøllparenteser (for eksempel kode), bør du bruke en fremgangsmåte som behandler variabelverdien som bokstavelig tekst (Jinja2 håndterer dette godt)

Test alltid malen med inndata fra kanttilfeller: tomme strenger, strenger med anførselstegn, strenger med linjeskift og svært lange strenger.

Standardverdier i maler

Alle variabler trenger ikke å være obligatoriske. Maler blir mer fleksible når valgfrie parametere har standardverdier:

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

Maler med flere blokker

Komplekse prompter kan ha flere variabelblokker – en systempromptblokk og en brukermeldingsblokk, hver med sine egne plassholdere:

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

Validering av plassholdere før gjengivelse

Valider alltid at alle obligatoriske plassholdere er fylt ut før prompten sendes. En manglende plassholder betyr at modellen mottar bokstavelig tekst som {{product}} og kan produsere merkelige resultater:

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

Betingede malblokker

Noen ganger skal en maldel bare vises hvis en variabel er oppgitt. Dette kan implementeres i Python ved å bygge strengen betinget:

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

Valgvariabler med faste alternativer

Noen malvariabler bør begrenses til et fast sett med gyldige alternativer. Håndhev dette med validering basert på en enum:

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

Kunnskapssjekk: Mønstre for utfylling av tomrom

Du har denne malen: 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'

Du kaller den med: tone='formal', recipient='the team', word_count=100 — men glemmer parameteren topic.

Hva skjer?

Oppsummering: Opprette mønstre for utfylling av tomrom

Mønstre for utfylling av tomrom bruker plassholdere ({{variable}}, {variable} eller tilsvarende) for å markere de variable delene av en gjenbrukbar mal. Pythons .format() og f-strenger er de vanligste mekanismene for substitusjon.

Beste praksis er å validere alle obligatoriske plassholdere før gjengivelse, bruke standardverdier for valgfrie variabler, begrense variabler med faste alternativer og håndtere inndata fra kanttilfeller (tomme strenger, spesialtegn) på en robust måte.

I neste leksjon skal du utforske Jinja2 og Pythons string.Template for mer avanserte behov for variabelsubstitusjon.

Gratis å komme i gang

Lær deg AI-prompt engineering med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
53
Leksjoner
199

Ofte stilte spørsmål

Er leksjonen «Opprette utfyllingsmønstre» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «Opprette utfyllingsmønstre», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.

Hva lærer jeg i «Opprette utfyllingsmønstre»?

Bruk plassholdere som {{variable}} og strengsubstitusjon i Python. Du øver på AI-prompt engineering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AI-prompt engineering?

Ingen tidligere erfaring er nødvendig. AI-prompt engineering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Opprette utfyllingsmønstre»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AI-prompt engineering-leksjonen?

Ja. Alle AI-prompt engineering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hva er en ledetekstmal?
  2. Opprette utfyllingsmønstre
  3. Teknikker for variabelsubstitusjon
  4. Gjenbruke maler på tvers av oppgaver
← Tilbake til AI-prompt engineering