Formatowanie Markdown w promptach
Nagłówki, pogrubienie i bloki kodu — określanie rozbudowanego formatowania.
Formatowanie Markdown w promptach 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.
Markdown w wynikach AI
Markdown to lekka składnia formatowania tekstu, którą modele AI rozumieją natywnie. Po poproszeniu o wynik sformatowany w Markdownie model tworzy tekst, który w kompatybilnych środowiskach jest renderowany jako formatowanie rozszerzone.
Dokładna wiedza o tym, jak poprosić o poszczególne elementy Markdowna, daje precyzyjną kontrolę nad strukturą każdego dokumentu wygenerowanego przez AI.
Prośby o nagłówki
Nagłówki Markdowna używają symboli kratki: # dla H1, ## dla H2 i ### dla H3.
Należy wyraźnie o nie poprosić: „Zorganizuj treść za pomocą nagłówków sekcji H2”, „Użyj ## dla sekcji głównych i ### dla podsekcji” lub „Umieść na początku pojedynczy tytuł H1 oznaczony jednym #”.
Nagłówki tworzą strukturę ułatwiającą nawigację w Notion, GitHubie, Obsidianie i większości narzędzi do tworzenia dokumentacji.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=400,
messages=[{
'role': 'user',
'content': (
'Write a technical guide outline for "Getting Started with FastAPI". '
'Structure: one # H1 title at the top, then 4 ## H2 section headers, '
'each with 2 ### H3 subsection headers beneath it. '
'Add one sentence of placeholder content under each H3.'
)
}]
)
print(response.content[0].text)Wyróżnienia pogrubieniem i kursywą
Wyróżnienia pogrubieniem i kursywą w Markdownie:
**bold text**→ pogrubiony tekst*italic text*→ tekst kursywą***bold and italic***→ pogrubiony tekst kursywą
Prośba może brzmieć: „Pogrub wszystkie kluczowe terminy przy ich pierwszym użyciu”, „Użyj kursywy dla nazw produktów” lub „Pogrub zadanie do wykonania w każdym kroku”.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Explain the concept of idempotency in REST APIs. '
'Rules:\n'
'- Bold every technical term on its first occurrence only\n'
'- Italicize all HTTP method names (GET, POST, PUT, DELETE, PATCH)\n'
'- 150 words max, flowing prose — no bullets or headers'
)
}]
)
print(response.choices[0].message.content)Bloki kodu
Bloki kodu w Markdownie używają potrójnych znaków odwrotnego cudzysłowu, z opcjonalną wskazówką języka umożliwiającą podświetlanie składni:
```python
print('hello')
```Prośba może brzmieć: „Umieść cały kod w blokach kodu python”, „Umieść każde polecenie w bloku kodu bash” lub „Pokaż przykład JSON w bloku kodu json”.
Wskazówka dotycząca języka umożliwia podświetlanie składni w GitHubie, VS Code i witrynach z dokumentacją.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=400,
messages=[{
'role': 'user',
'content': (
'Show me how to connect to PostgreSQL from Python using psycopg3.\n'
'Structure:\n'
'1. Install command in a bash code block.\n'
'2. Connection example in a python code block with type hints.\n'
'3. A sample SELECT query in a python code block.\n'
'Keep each code block under 10 lines. Brief one-sentence intro before each block.'
)
}]
)
print(response.content[0].text)Kod w tekście
Kod w tekście zapisuje się przy użyciu pojedynczych backticków: `variable_name`. Jest renderowany czcionką o stałej szerokości w obrębie zdania — doskonale nadaje się do:
- nazw zmiennych:
user_id - nazw funkcji:
calculate_tax() - nazw poleceń:
git commit - ścieżek plików:
/etc/nginx/nginx.conf - punktów końcowych HTTP:
/api/v1/users
Prośba: „Proszę użyć formatowania kodu w tekście dla wszystkich nazw zmiennych i funkcji.”
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Explain the difference between Python list .append() and .extend(). '
'Rules:\n'
'- Use inline code for all method names, parameter names, and variable examples\n'
'- Use a python code block for each demonstration example\n'
'- Prose sections: max 2 sentences\n'
'- Do NOT use headers or bullets — flowing prose with code blocks only'
)
}]
)
print(response.choices[0].message.content)Cytaty blokowe
Cytaty blokowe rozpoczynają się od znaku >. W Markdown:
> This is a blockquote.
Zastosowania: boksy z wyróżnieniem, ważne uwagi, przykładowe dialogi, cytowane materiały źródłowe i ostrzeżenia.
Prośba: „Proszę umieścić najważniejsze ostrzeżenie w cytacie blokowym” lub „Proszę użyć cytatu blokowego dla przykładowego scenariusza.”
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
messages=[{
'role': 'user',
'content': (
'Write a security guide section about SQL injection prevention. '
'Structure:\n'
'- 2-sentence explanation of the risk\n'
'- One blockquote containing a real example of vulnerable code (as a note/warning)\n'
'- 3 bullet points on how to prevent it\n'
'- One blockquote containing the safe alternative code pattern'
)
}]
)
print(response.content[0].text)Zagnieżdżone listy w Markdown
Zagnieżdżone listy Markdown tworzy się za pomocą wcięć (2 lub 4 spacji), aby zbudować hierarchię:
- Main item
- Sub-item
- Sub-item
- Sub-sub-itemProśba: „Proszę utworzyć dwupoziomową zagnieżdżoną listę zawierającą X elementów głównych i po Y elementów podrzędnych dla każdego z nich” lub „Proszę użyć zagnieżdżonych punktów, aby pokazać zależność między kategoriami a przykładami.”
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Create a 2-level nested markdown list of AWS services for a web startup. '
'Level 1: 4 service categories (Compute, Storage, Database, Networking). '
'Level 2: 3 specific services under each category with a 5-word description. '
'Format: markdown nested bullets with proper indentation.'
)
}]
)
print(response.choices[0].message.content)Linki i obrazy
Linki w Markdown: [link text](URL)
Obrazy w Markdown: 
Modele AI mogą generować zastępcze linki z opisowym tekstem: „Proszę uwzględnić linki w Markdown do odpowiedniej dokumentacji — proszę użyć zastępczych adresów URL, takich jak [oficjalna dokumentacja](https://example.com).”
W przypadku dokumentacji z zastępczymi diagramami: „Proszę uwzględnić zastępczy obraz z opisowym tekstem alternatywnym.”
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
messages=[{
'role': 'user',
'content': (
'Write a README section for a Python open-source project called "sqlens". '
'Include:\n'
'- An image placeholder for a demo screenshot: \n'
'- At least 2 markdown links: one to the PyPI page, one to the documentation\n'
'- A badge placeholder using an image link\n'
'- 3 bullet points of key features\n'
'Use realistic placeholder URLs (pypi.org/project/sqlens etc).'
)
}]
)
print(response.content[0].text)Poziome linie i separatory
Poziome linie tworzy się za pomocą trzech myślników (---), gwiazdek (***) lub podkreśleń (___).
Należy używać ich do wizualnego oddzielania głównych sekcji dokumentu. Prośba: „Proszę dodać poziomą linię --- między każdą główną sekcją” lub „Proszę oddzielić trzy sekcje separatorami Markdown.”
Poziome linie są renderowane w większości środowisk Markdown i ułatwiają czytelnikom poruszanie się po długich dokumentach.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Write a mini technical specification document for a user authentication API. '
'Include exactly 3 sections: Overview, Endpoints, Security Requirements. '
'Separate each section with a --- horizontal rule. '
'Each section: ## H2 header + 3-5 bullet points of content. '
'Under Endpoints: use inline code for all route paths and HTTP methods.'
)
}]
)
print(response.choices[0].message.content)Gdy Markdown nie jest renderowany
Markdown pomaga tylko wtedy, gdy środowisko wyjściowe go renderuje. Markdown NIE jest renderowany w:
- klientach poczty e-mail obsługujących zwykły tekst (wyświetlane są surowe gwiazdki)
- wiadomościach SMS
- większości pól notatek w systemach CRM
- wyjściu głosowym (syntezie mowy)
- starszych systemach oczekujących zwykłego tekstu
W takich przypadkach należy wyraźnie poprosić o zwykły tekst. Omówimy to w następnej lekcji.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Check if environment renders markdown before requesting it
rendering_environments = {
'GitHub': True,
'Notion': True,
'Obsidian': True,
'VS Code': True,
'Gmail body': False, # some markdown, not all
'Outlook': False,
'SMS': False,
'Plain text file': False,
}
print('Markdown rendering support:')
for env, renders in rendering_environments.items():
status = 'RENDERS' if renders else 'DOES NOT RENDER'
print(f' {env:<20} {status}')
# Decision: use markdown only when you know it renders
use_markdown = True # set based on your environment
format_instruction = (
'Use markdown headers, bold, and code blocks.' if use_markdown
else 'Plain text only — no markdown symbols.'
)
print('\nFormat instruction:', format_instruction)Łączenie elementów Markdown
Dokumenty generowane przez AI o jakości produkcyjnej łączą wiele elementów Markdown. Dobrze zorganizowany dokument techniczny może zawierać:
- tytuł H1 za pomocą
#oraz sekcje H2 za pomocą## - wyróżnienie kluczowych terminów za pomocą
**bold**przy ich pierwszym użyciu - bloki kodu z oznaczeniem języka dla całego kodu
- kod w tekście dla wszystkich nazw zmiennych i funkcji
- listy punktowane dla wymagań oraz listy numerowane dla kroków
- cytaty blokowe dla ostrzeżeń i ważnych uwag
- separatory
---między głównymi sekcjami
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Write a mini developer guide for the requests Python library. '
'Use all of the following markdown elements:\n'
'- # H1 title at the top\n'
'- ## H2 sections: Installation, Basic Usage, Error Handling\n'
'- Bold all key terms on first use\n'
'- Code blocks with python/bash language hints\n'
'- Inline code for all function names\n'
'- One blockquote warning about timeout best practice\n'
'- --- between each section\n'
'Max 300 words total.'
)
}]
)
print(response.choices[0].message.content)Sprawdzenie wiedzy
Programista tworzy asystenta AI, który wyświetla treści w terminalu za pomocą print() — bez interfejsu webowego i bez renderera Markdown. Programista prosi AI o wyjaśnienie funkcji i otrzymuje odpowiedź pełną gwiazdek oraz symboli hash. Co należy dodać do wiadomości systemowej, aby to naprawić?
Markdown w promptach — podsumowanie
Formatowanie Markdown nadaje dokumentom generowanym przez AI profesjonalną strukturę. Kluczowe elementy, o które warto poprosić:
- Nagłówki: # H1, ## H2, ### H3 — zapewniające strukturę dokumentu ułatwiającą nawigację
- Wyróżnienia: **bold** dla kluczowych terminów, *italic* dla nazw specjalnych
- Bloki kodu: potrójny backtick z oznaczeniem języka umożliwiający podświetlanie składni
- Kod w tekście: pojedynczy backtick dla nazw zmiennych, poleceń i ścieżek
- Cytaty blokowe: prefiks > dla ostrzeżeń, wyróżnionych informacji i cytowanych treści
- Zagnieżdżone listy: listy punktowane z wcięciami dla informacji hierarchicznych
Markdown należy stosować tylko wtedy, gdy wiadomo, że środowisko wyjściowe go renderuje.
Często zadawane pytania
Czy lekcja „Formatowanie Markdown w promptach” jest bezpłatna?
Tak — pełny tekst „Formatowanie Markdown w promptach” 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 „Formatowanie Markdown w promptach”?
Nagłówki, pogrubienie i bloki kodu — określanie rozbudowanego formatowania. Ć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 „Formatowanie Markdown w promptach”?
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
- Prośby o listy i wypunktowania
- Prośby o tabele i dane strukturalne
- Formatowanie Markdown w promptach
- Zwykły tekst a formatowany wynik