AI Prompt Engineering · Lekcja

Wzorzec promptu: nagłówek–treść–stopka

Spójna struktura promptu, którą można skalować do złożonych promptów wielozadaniowych.

Lekcja 3 z 413 kroki

Wzorzec promptu: nagłówek–treść–stopka to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Prompty jako dokumenty

Długie dokumenty — raporty, artykuły i wiadomości e-mail — używają struktury Nagłówek/Treść/Stopka, ponieważ ułatwia ona nawigację poznawczą. Czytelnicy wiedzą, czego oczekiwać w każdej części.

Ta sama zasada dotyczy promptów. Gdy prompty mają więcej niż kilka zdań, struktura Nagłówek/Treść/Stopka ułatwia ich szybkie przeglądanie, utrzymanie i zachowanie spójności.

Ten wzorzec działa w różnych modelach i skaluje się od prostych po bardzo złożone prompty.

Sekcja nagłówka

Nagłówek odpowiada na dwa pytania: Kim jesteś? i Jakie jest zadanie?

Określa tożsamość modelu (personę lub rolę) i przedstawia główny cel promptu. Wszystkie pozostałe elementy opierają się na tej podstawie.

Dobry nagłówek jest zwięzły — zazwyczaj ma 2–4 zdania. Nie zawiera przykładów, ograniczeń ani zasad dotyczących formatu odpowiedzi.

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)

Sekcja treści

Treść zawiera dane lub kontekst potrzebne modelowi do wykonania zadania. To główna sekcja danych:

  • dokumenty źródłowe do przetworzenia
  • historia rozmowy
  • dane strukturalne (fragmenty JSON i CSV)
  • materiały referencyjne
  • właściwe dane wejściowe użytkownika

Treść jest największą sekcją i najczęściej jest dynamicznie wstrzykiwana w czasie działania programu.

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

Sekcja stopki

Stopka zawiera instrukcje dotyczące formatu oraz schemat odpowiedzi. Znajduje się na końcu, ponieważ:

  • model czyta tekst od początku do końca i stosuje zasady formatowania do treści, którą właśnie przetworzył
  • instrukcje dotyczące formatu umieszczone blisko końca są rzadziej ignorowane
  • stopkę można często ponownie wykorzystywać w promptach o tym samym typie odpowiedzi

Stopka powinna być jednoznaczna: zwróć obiekt JSON zawierający te pola, a nie sformatuj to estetycznie.

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)

Składanie pełnego wzorca

Połączenie nagłówka, treści i stopki w kompletną funkcję promptu, którą można ponownie wykorzystywać:

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

Dlaczego ta kolejność działa

Kolejność Nagłówek/Treść/Stopka odpowiada sposobowi, w jaki modele przetwarzają kontekst:

  1. Najpierw nagłówek — ustala tożsamość i cel, przygotowując model na dalszą treść
  2. Następnie treść — model przetwarza dane przez pryzmat ustalonej roli i zadania
  3. Na końcu stopka — instrukcje dotyczące formatu znajdują się bezpośrednio przed wygenerowaniem odpowiedzi, co maksymalizuje ich wpływ na jej strukturę

Umieszczenie instrukcji dotyczących formatu w nagłówku (na początku) sprawia, że do momentu tworzenia odpowiedzi model częściowo o nich zapomina.

Skalowanie do złożonych promptów

Wzorzec Header/Body/Footer skaluje się naturalnie wraz ze wzrostem złożoności promptów:

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

Ponowne używanie szablonów Footer

Ponieważ sekcja Footer definiuje strukturę danych wyjściowych, jest najbardziej uniwersalną sekcją. Typowe szablony Footer:

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

Wstrzykiwanie dynamicznej zawartości do sekcji Body

Sekcja Body jest najczęściej budowana dynamicznie w czasie działania programu. Najlepsze praktyki dotyczące dynamicznego wstrzykiwania zawartości do sekcji Body:

  • Zawsze należy umieszczać wstrzykiwaną zawartość w nazwanych tagach XML
  • Należy oczyszczać dane wejściowe użytkownika przed ich wstrzyknięciem, aby zapobiegać atakom typu prompt injection
  • Należy skracać bardzo długie dokumenty i odnotowywać skrócenie w sekcji Body
  • Każdy wstrzykiwany element należy wyraźnie oznaczyć (document_1, user_query, chat_history)
def safe_inject(user_content, max_chars=3000):
    safe = user_content.replace('<', '&lt;').replace('>', '&gt;')
    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))

Spójna struktura w całej bazie kodu

Prawdziwa siła wzorca Header/Body/Footer ujawnia się wtedy, gdy cała aplikacja konsekwentnie korzysta z tego samego schematu. Korzyści:

  • Nowi członkowie zespołu natychmiast rozumieją każdy prompt
  • Przeglądanie promptów podczas code review jest łatwiejsze — osoby dokonujące przeglądu dokładnie wiedzą, gdzie szukać
  • Automatyczne testy mogą niezależnie sprawdzać każdą sekcję
  • Przenoszenie promptów między modelami jest proste — zmienia się tylko zawartość, a nie struktura

Częste błędy we wzorcu Header/Body/Footer

Błędy, które osłabiają skuteczność tego wzorca:

  • Instrukcje dotyczące formatu w sekcji Header — znajdują się zbyt daleko od generowania odpowiedzi, więc model częściowo je ignoruje
  • Opis zadania ukryty w sekcji Body — model może potraktować go jako dane do przetworzenia, a nie jako polecenie
  • Ograniczenia rozdzielone między sekcjami — trudno je kontrolować, co prowadzi do sprzeczności
  • Brak sekcji Footer — wraz ze wzrostem złożoności promptu struktura danych wyjściowych staje się nieprzewidywalna

Szybkie sprawdzenie

Gdzie należy umieścić instrukcje dotyczące formatu danych wyjściowych we wzorcu Header/Body/Footer i dlaczego?

Header/Body/Footer — najważniejsze informacje

Wzorzec Header/Body/Footer wprowadza do projektowania promptów dyscyplinę znaną ze strukturyzowania dokumentów:

  • Header: określenie roli i zadania — wyznacza ramy dla wszystkiego, co następuje później
  • Body: zawartość i kontekst — wstrzykiwane dynamicznie i umieszczane w semantycznych tagach XML
  • Footer: instrukcje dotyczące formatu i schemat danych wyjściowych — umieszczane na końcu, aby maksymalnie wpłynąć na strukturę wyniku
  • Wzorzec skaluje się naturalnie od prostych do bardzo złożonych promptów
  • Szablony Footer można ponownie wykorzystywać w promptach o tym samym typie danych wyjściowych
  • Spójność w całej bazie kodu sprawia, że prompty można łatwo przeglądać, testować i utrzymywać
Bezpłatny start

Ucz się AI Prompt Engineering dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
53
Lekcje
199

Często zadawane pytania

Czy lekcja „Wzorzec promptu: nagłówek–treść–stopka” jest bezpłatna?

Tak — pełny tekst „Wzorzec promptu: nagłówek–treść–stopka” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Co nauczysz się w „Wzorzec promptu: nagłówek–treść–stopka”?

Spójna struktura promptu, którą można skalować do złożonych promptów wielozadaniowych. Ćwiczysz AI Prompt Engineering z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Prompt Engineering?

Nie wymagamy żadnego doświadczenia. AI Prompt Engineering w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wzorzec promptu: nagłówek–treść–stopka”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Prompt Engineering?

Tak. Każda lekcja AI Prompt Engineering zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Używanie tagów XML jako separatorów
  2. Modułowe sekcje promptu
  3. Wzorzec promptu: nagłówek–treść–stopka
  4. Najlepsze praktyki organizacji promptów
← Powrót do AI Prompt Engineering