Mønsteret topptekst–brødtekst–bunntekst
En konsekvent ledetekststruktur som kan skaleres til komplekse oppgaver med flere deler.
Mønsteret topptekst–brødtekst–bunntekst er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 3 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.
Prompter som dokumenter
Lengre dokumenter – rapporter, artikler og e-poster – bruker en struktur med topptekst, hoveddel og bunntekst fordi den gjør det enkelt å orientere seg. Leserne vet hva de kan forvente i hver del.
Det samme prinsippet gjelder for prompter. Når prompter blir lengre enn noen få setninger, gjør en struktur med topptekst, hoveddel og bunntekst dem enklere å skanne, vedlikeholde og holde konsekvente.
Mønsteret fungerer på tvers av modeller og kan skaleres fra enkle til svært komplekse prompter.
Topptekstseksjonen
Toppteksten svarer på to spørsmål: Hvem er du? og Hva er oppgaven?
Den angir modellens identitet (persona eller rolle) og beskriver promptens hovedmål. Alt annet bygger på dette grunnlaget.
En god topptekst er kortfattet – vanligvis 2–4 setninger. Den inneholder ikke eksempler, begrensninger eller utdataregler.
header = '''
<header>
You are an expert technical writer specializing in API documentation.
Your task is to write clear, developer-friendly documentation
for the API endpoint described in the body of this prompt.
</header>
'''
print(header)Hoveddelsseksjonen
Hoveddelen inneholder innholdet eller konteksten modellen trenger for å utføre oppgaven. Dette er den viktigste datasonen:
- kildedokumenter som skal behandles
- samtalehistorikk
- strukturerte data (JSON, CSV-utdrag)
- referansemateriale
- brukerens faktiske inndata
Hoveddelen er den største seksjonen og settes oftest inn dynamisk ved kjøring.
def build_body(endpoint_spec):
return f'''
<body>
<endpoint_specification>
{endpoint_spec}
</endpoint_specification>
</body>
'''
spec = 'POST /api/v2/users\nRequest body: {email: string, role: admin|user}\nReturns: {id: string, created_at: ISO8601}'
print(build_body(spec))Bunntekstseksjonen
Bunnteksten inneholder formateringsinstruksjoner og utdataformatet. Den kommer sist fordi:
- modellen leser ovenfra og ned og bruker formateringsreglene på det den nettopp har behandlet
- formateringsinstruksjoner nær slutten har mindre risiko for å bli ignorert
- bunnteksten kan ofte gjenbrukes i prompter med samme utdatatype
Bunnteksten bør være tydelig: Returner et JSON-objekt med disse feltene, ikke formater det pent.
footer = '''
<footer>
Format your response as a JSON object with these fields:
{
"endpoint": "string",
"summary": "string (one sentence)",
"parameters": [{"name": "string", "type": "string", "required": true|false, "description": "string"}],
"response_example": "string (JSON)",
"error_codes": [{"code": "number", "meaning": "string"}]
}
Do not include any text outside the JSON object.
</footer>
'''
print(footer)Sette sammen hele mønsteret
Ved å kombinere topptekst, hoveddel og bunntekst til en komplett, gjenbrukbar promptfunksjon:
def build_api_doc_prompt(endpoint_spec):
header = '<header>\nYou are an expert technical writer. Document the API endpoint in the body.\n</header>'
body = f'<body>\n<endpoint>\n{endpoint_spec}\n</endpoint>\n</body>'
footer = '<footer>\nReturn JSON: {"summary": str, "parameters": [...], "response_example": str}\nNo text outside JSON.\n</footer>'
return '\n\n'.join([header, body, footer])
spec = 'GET /api/products/:id\nReturns product details by ID'
print(build_api_doc_prompt(spec))Hvorfor denne rekkefølgen fungerer
Rekkefølgen med topptekst, hoveddel og bunntekst speiler hvordan modeller behandler kontekst:
- Topptekst først — etablerer identitet og mål og forbereder modellen på det som følger
- Hoveddel deretter — modellen behandler nå innholdet gjennom perspektivet til den etablerte rollen og oppgaven
- Bunntekst til slutt — formateringsinstruksjonene kommer rett før modellen genererer svaret sitt, noe som maksimerer deres innflytelse på utdatastrukturen
Hvis du plasserer formateringsinstruksjonene i toppteksten (først), blir de delvis glemt innen modellen skriver svaret sitt.
Skalering til komplekse prompt
Header/Body/Footer-mønsteret skalerer naturlig når promptene blir komplekse:
def build_complex_prompt(persona, task, context_docs, constraints, output_schema):
header = f'<header>\n{persona}\nTask: {task}\n</header>'
docs = '\n'.join(f'<document id="{i+1}">\n{d}\n</document>' for i, d in enumerate(context_docs))
body = f'<body>\n{docs}\n</body>'
constraint_list = '\n'.join(f'- {c}' for c in constraints)
footer = f'<footer>\n<constraints>\n{constraint_list}\n</constraints>\n<output_schema>\n{output_schema}\n</output_schema>\n</footer>'
return '\n\n'.join([header, body, footer])Gjenbruk av Footer-maler
Fordi Footer definerer utdatastrukturen, er den den mest gjenbrukbare delen. Vanlige Footer-maler:
FOOTER_JSON = '<footer>\nReturn a valid JSON object. No text outside JSON. No markdown code fences.\n</footer>'
FOOTER_MARKDOWN = '<footer>\nFormat your response as markdown.\nUse ## for section headers.\nUse bullet points for lists.\nMaximum 500 words.\n</footer>'
FOOTER_STRUCTURED = '<footer>\nRespond using this exact structure:\n1. Summary (1 sentence)\n2. Key Findings (bullet list)\n3. Recommendation (1 paragraph)\n</footer>'
print('Footer templates ready for reuse.')Sette inn dynamisk innhold i Body
Body er den delen som oftest bygges dynamisk under kjøring. Beste praksis for dynamisk innsetting i Body:
- Pakk alltid inn innhold som settes inn, i navngitte XML-tagger
- Sanitér brukerinput før innsetting for å hindre prompt injection
- Trunker svært lange dokumenter, og noter trunkeringen i Body
- Merk hver del som settes inn, tydelig (document_1, user_query, chat_history)
def safe_inject(user_content, max_chars=3000):
safe = user_content.replace('<', '<').replace('>', '>')
if len(safe) > max_chars:
safe = safe[:max_chars] + '... [TRUNCATED]'
return f'<user_input>\n{safe}\n</user_input>'
raw = 'User provided text here. Could be very long.'
print(safe_inject(raw))Konsistent struktur på tvers av kodebasen
Den virkelige styrken ved Header/Body/Footer viser seg når hele applikasjonen bruker det samme mønsteret konsekvent. Fordeler:
- Nye teammedlemmer forstår enhver prompt umiddelbart
- Det blir enklere å gjennomgå prompten i kodegjennomganger — gjennomgåerne vet nøyaktig hvor de skal lete
- Automatiserte tester kan validere hver del uavhengig
- Det er enkelt å migrere prompten mellom modeller — bare innholdet endres, ikke strukturen
Vanlige feil i Header/Body/Footer
Feil som svekker mønsterets effektivitet:
- Formatinstruksjoner i Header — for langt fra genereringen av svaret; modellen ignorerer dem delvis
- Oppgavebeskrivelsen gjemt i Body — modellen kan oppfatte den som data som skal behandles, ikke som en instruks
- Begrensninger fordelt på flere deler — vanskelig å kontrollere, og fører til motsigelser
- Ingen Footer — utdatastrukturen blir uforutsigbar når prompten blir mer kompleks
Hurtigsjekk
Hvor skal instruksjoner om utdataformat plasseres i Header/Body/Footer-mønsteret, og hvorfor?
Header/Body/Footer – viktigste punkter
Header/Body/Footer-mønsteret gir promptutvikling den samme disiplinen som dokumentstruktur:
- Header: Hvem du er + oppgaven — setter rammen for alt som følger
- Body: Innhold og kontekst — settes inn dynamisk og pakkes inn i semantiske XML-tagger
- Footer: Formatinstruksjoner og utdatastruktur — plasseres sist for størst mulig innflytelse på utdatastrukturen
- Mønsteret skalerer naturlig fra enkle til svært komplekse prompt
- Footer-maler kan gjenbrukes på tvers av prompt med samme utdatatypen
- Konsistens i kodebasen gjør promptene enklere å gjennomgå, teste og vedlikeholde
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 «Mønsteret topptekst–brødtekst–bunntekst» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «Mønsteret topptekst–brødtekst–bunntekst», 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 «Mønsteret topptekst–brødtekst–bunntekst»?
En konsekvent ledetekststruktur som kan skaleres til komplekse oppgaver med flere deler. 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 3 av 4.
Hvor lang tid tar leksjonen «Mønsteret topptekst–brødtekst–bunntekst»?
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
- Bruke XML-tagger som skilletegn
- Modulære ledetekstdeler
- Mønsteret topptekst–brødtekst–bunntekst
- Beste praksis for organisering av ledetekster