Wzorzec promptu: nagłówek–treść–stopka
Spójna struktura promptu, którą można skalować do złożonych promptów wielozadaniowych.
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:
- Najpierw nagłówek — ustala tożsamość i cel, przygotowując model na dalszą treść
- Następnie treść — model przetwarza dane przez pryzmat ustalonej roli i zadania
- 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('<', '<').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))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ć
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
- Używanie tagów XML jako separatorów
- Modułowe sekcje promptu
- Wzorzec promptu: nagłówek–treść–stopka
- Najlepsze praktyki organizacji promptów