Porównanie nieprecyzyjnych i precyzyjnych promptów
Przykłady zestawione obok siebie pokazujące, jak ogromne znaczenie ma precyzja.
Porównanie nieprecyzyjnych i precyzyjnych promptów to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 4 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.
Metoda porównywania przykładów obok siebie
Najszybszym sposobem na przyswojenie zasad jakości promptów jest przeanalizowanie konkretnych przeredagowanych wersji obok siebie i zrozumienie, dlaczego każda poprawka działa.
W tej lekcji przeanalizujemy pięć nieprecyzyjnych promptów i ich konkretniejsze wersje. Dla każdej pary wskażemy dokładne wprowadzone zmiany oraz mechanizm, dzięki któremu każda poprawka pomaga modelowi wygenerować lepszy wynik.
Para 1: Wpis na blogu
Nieprecyzyjny: „Napisz wpis na blogu o pracy zdalnej”.
Konkretny: „Napisz 600-słowny wpis na blogu zatytułowany „3 nawyki związane z pracą zdalną, które zabiły moją produktywność (i co robię teraz)” dla odbiorców będących programistami na średnim poziomie zaawansowania. Narracja pierwszoosobowa, ton konwersacyjny. Struktura: 1 akapit wstępu, 3 sekcje z nagłówkami H2, 1 końcowe CTA zachęcające do pobrania bezpłatnego szablonu”.
Dlaczego to działa: Dodaje liczbę słów, tytuł (a tym samym punkt widzenia), odbiorców, sposób wypowiedzi, ton, strukturę i konkretny element zakończenia. Nic nie pozostaje przypadkowe.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{
'role': 'user',
'content': (
'Write a 600-word blog post titled '
'"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
'for an audience of mid-level software developers. '
'First-person voice, conversational tone. '
'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
'1 closing paragraph with a CTA to download a free productivity template.'
)
}]
)
print(response.content[0].text[:400], '...')Para 2: Przegląd kodu
Nieprecyzyjny: „Przejrzyj mój kod”.
Konkretny: „Przejrzyj poniższą funkcję w Pythonie. Skup się wyłącznie na: 1) błędach wpływających na poprawność, 2) nieuwzględnionych przypadkach brzegowych. NIE komentuj stylu, nazewnictwa ani formatowania. Format wyniku: numerowana lista problemów, z których każdy zawiera: opis problemu (1 zdanie), wskazany wiersz lub wskazane wiersze, sugerowaną poprawkę (fragment kodu)”.
Dlaczego to działa: Określa zakres przeglądu (poprawność i przypadki brzegowe), wyraźnie wyklucza inne aspekty (styl i nazewnictwo) oraz precyzuje strukturę wyniku z trzema polami dla każdego znaleziska.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
code = (
'def get_user(users, user_id):\n'
' for user in users:\n'
' if user["id"] == user_id:\n'
' return user["name"]\n'
' return users[0]["name"]\n'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Review the following Python function.\n'
'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
'Do NOT comment on style, naming conventions, or formatting.\n'
'Output format: numbered list. Each item: issue (1 sentence), '
'affected line, suggested fix as a code snippet.\n\n'
+ code
)
}]
)
print(response.choices[0].message.content)Para 3: Temat wiadomości e-mail
Nieprecyzyjny: „Napisz tematy wiadomości e-mail do mojego newslettera”.
Konkretny: „Napisz 10 tematów wiadomości e-mail do cotygodniowego newslettera o Pythonie dla analityków danych. Każdy temat musi mieć mniej niż 50 znaków, zawierać element zachęcający do otwarcia wiadomości (lukę ciekawości, numerowaną listę lub zaskakujące twierdzenie) i unikać słów wyzwalających filtry spamu, takich jak FREE lub URGENT. Przedstaw wynik jako numerowaną listę, a typ elementu zachęcającego oznacz w nawiasach kwadratowych”.
Dlaczego to działa: Określa liczbę elementów, ograniczenie długości, wymóg dotyczący elementu zachęcającego, listę wykluczeń i oznaczony format wyniku — przekształcając nieprecyzyjne zadanie kreatywne w zadanie generowania oparte na regułach.
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 10 email subject lines for a weekly newsletter '
'about Python tips for data scientists. '
'Requirements:\n'
'- Each under 50 characters\n'
'- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
'- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
'- Output as numbered list with hook type in brackets at the end of each line'
)
}]
)
print(response.content[0].text)Para 4: Podsumowanie spotkania
Nieprecyzyjny: „Podsumuj transkrypcję tego spotkania”.
Konkretny: „Podsumuj transkrypcję tego spotkania w następującym formacie: 1) Cel spotkania (1 zdanie), 2) Podjęte kluczowe decyzje (lista punktowana, maks. 5), 3) Zadania do wykonania (tabela z kolumnami: Zadanie, Osoba odpowiedzialna, Termin), 4) Otwarte pytania (lista numerowana). Jeśli w danym polu brakuje informacji, wpisz N/A. Nie dodawaj żadnych opinii — tylko fakty i zobowiązania”.
Dlaczego to działa: Podaje dokładny szablon, określa limity dla poszczególnych sekcji, definiuje strukturę tabeli, ustala sposób postępowania w przypadku braku danych i dodaje ograniczenie dotyczące tonu (tylko fakty).
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
transcript = (
'John: We need to decide on the launch date. '
'Sarah: I think Q3 works. We need the API done first. '
'John: Agreed. Sarah, can you own the API? '
'Sarah: Yes, I can have it by July 15th. '
'John: Great. Who handles marketing? '
'Mike: I will, but I need the feature list first. '
'John: We still need to confirm pricing — tabled for next week.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Summarize this meeting transcript in this exact format:\n'
'1. Meeting Purpose: (1 sentence)\n'
'2. Key Decisions: (bullet list, max 5)\n'
'3. Action Items: (markdown table: Task | Owner | Deadline)\n'
'4. Open Questions: (numbered list)\n'
'Missing info: write N/A. Facts only, no opinions.\n\n'
'Transcript:\n' + transcript
)
}]
)
print(response.choices[0].message.content)Para 5: Wyjaśnienie
Nieprecyzyjny: „Wyjaśnij machine learning”.
Konkretny: „Wyjaśnij machine learning w 3 akapitach product managerowi w firmie z branży ochrony zdrowia, który rozumie statystykę, ale nigdy nie pisał kodu. Akapit 1: czym jest machine learning i czym różni się od tradycyjnego programowania. Akapit 2: rzeczywisty przykład zastosowania w ochronie zdrowia (diagnozowanie lub odkrywanie leków). Akapit 3: jedno często spotykane błędne przekonanie, którego należy unikać. Łącznie maksymalnie 200 słów”.
Dlaczego to działa: Definiuje strukturę (3 akapity z przypisanymi tematami), odbiorców (konkretna rola, dziedzina i poziom wiedzy), wymagania dotyczące treści każdego akapitu oraz ogólny limit słów.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=350,
messages=[{
'role': 'user',
'content': (
'Explain machine learning in exactly 3 paragraphs. '
'Audience: a product manager at a healthcare company who understands statistics '
'but has never written code.\n'
'Paragraph 1: what ML is and how it differs from traditional programming.\n'
'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
'Paragraph 3: one common misconception non-technical people have about ML.\n'
'Max 200 words total. No bullet points — flowing prose only.'
)
}]
)
print(response.content[0].text)Budowa dobrej przeredagowanej wersji
Analizując wszystkie pięć par, można zauważyć, że każda skuteczna przeredagowana wersja robi te same rzeczy:
- Zastępuje nieprecyzyjny czasownik („napisz”, „przejrzyj”, „wyjaśnij”) zadaniem o określonej strukturze
- Określa format wyniku (lista, tabela, akapity z przypisaną treścią)
- Dodaje mierzalne ograniczenia (liczba słów, liczba elementów, limity znaków)
- Określa odbiorców (rola + poziom wiedzy + kontekst)
- Dodaje co najmniej jedną regułę wykluczenia (co należy pominąć)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
improvements = []
words = specific.lower()
if any(str(n) in words for n in range(10, 10000)):
improvements.append('Quantitative constraint added')
if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
improvements.append('Negative constraint added')
if 'audience' in words or 'for a' in words or 'targeting' in words:
improvements.append('Audience specified')
if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
improvements.append('Output format defined')
if 'example' in words or 'such as' in words or 'like:' in words:
improvements.append('Example provided')
print('Improvements detected:')
for i in improvements:
print(f' + {i}')
vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)Co się dzieje, gdy dodany zostaje tylko jeden wymiar
Dodanie jednej poprawki pomaga, ale częściowa konkretyzacja nadal pozostawia duże luki. Porównajmy:
- „Napisz wpis na blogu o pracy zdalnej” — brak ograniczeń
- „Napisz 600-słowny wpis na blogu o pracy zdalnej” — określona tylko długość; punkt widzenia, odbiorcy i struktura nadal są nieprecyzyjne
- „Napisz 600-słowny wpis na blogu o pracy zdalnej dla programistów, w tonie konwersacyjnym” — określona długość, odbiorcy i ton; struktura, CTA i styl nagłówków nadal są nieprecyzyjne
Każdy nieokreślony wymiar jest loterią. Dodajcie tyle wymiarów, na ile macie informacje.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Progressively more specific prompts
prompts = [
'Write about Python.',
'Write a 200-word article about Python.',
'Write a 200-word article about Python for beginners who know no programming.',
(
'Write a 200-word article about Python for beginners who know no programming. '
'Start with a real-world analogy. Use 3 short paragraphs. '
'End with one actionable first step they can take today.'
)
]
for i, p in enumerate(prompts, 1):
print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
print()Praktyczne wykorzystanie techniki par porównawczych
Technika par porównawczych jest skutecznym narzędziem debugowania. Gdy otrzymacie słaby wynik:
- Zapiszcie nieprecyzyjny prompt, który doprowadził do powstania słabego wyniku
- Wskażcie jeden wymiar, który spowodował problem
- Napiszcie konkretną przeredagowaną wersję ukierunkowaną wyłącznie na ten wymiar
- Uruchomcie oba prompty i porównajcie wyniki
- Ustalcie, co nadal wymaga poprawy, a następnie dodajcie kolejne ograniczenie
To naukowe podejście szybko uczy, które ograniczenia są najważniejsze w Państwa przypadku.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
response = client_ref.messages.create(
model='claude-opus-4-5',
max_tokens=150,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'=== {label} ===')
print(prompt)
print('--- OUTPUT ---')
print(response.content[0].text)
print()
compare_prompts(
prompt_a='Explain APIs.',
prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
label_a='VAGUE',
label_b='SPECIFIC'
)Dwuminutowy audyt promptu
Przed wysłaniem ważnego promptu przeprowadźcie 2-minutowy audyt. Jeśli odpowiedź na którekolwiek pytanie brzmi „nie”, dodajcie brakującą informację:
- Czy określono format? (lista / tabela / akapit / JSON)
- Czy określono długość? (liczba słów / liczba elementów)
- Czy opisano odbiorców? (rola + poziom wiedzy)
- Czy cel jest jasny? (do czego służy wynik)
- Czy istnieje co najmniej jedno wykluczenie? (co należy pominąć)
- Czy podano przykład lub szablon? (jeśli styl ma znaczenie)
def two_minute_audit(prompt):
score = 0
checks = {
'Format specified': any(w in prompt.lower() for w in
['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
'Length given': any(c.isdigit() for c in prompt),
'Audience named': any(w in prompt.lower() for w in
['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
'Exclusion added': any(w in prompt.lower() for w in
['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
'Goal stated': any(w in prompt.lower() for w in
['goal', 'purpose', 'so that', 'in order to', 'will be used']),
}
print('Prompt Audit:')
for check, passed in checks.items():
icon = 'PASS' if passed else 'FAIL'
print(f' [{icon}] {check}')
if passed: score += 1
print(f'Score: {score}/{len(checks)}')
two_minute_audit(
'Write 5 bullet-point suggestions for improving user onboarding '
'for a B2B SaaS app targeting first-time non-technical users. '
'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)Budowanie biblioteki promptów
Za każdym razem, gdy napiszecie prompt generujący doskonały wynik, zapiszcie go. Zbudujcie własną bibliotekę promptów uporządkowaną według typu zadania.
Dobry wpis w bibliotece promptów zawiera:
- Szablon promptu z symbolami zastępczymi, takimi jak
[AUDIENCE],[WORD_COUNT] - Przypadek użycia, dla którego został zaprojektowany
- Wykorzystany model i jego ustawienia
- Notatkę wyjaśniającą, co sprawia, że jest skuteczny
Z czasem biblioteka stanie się Państwa najcenniejszym zasobem zwiększającym produktywność dzięki AI.
# Example prompt library entry
prompt_library = {
'meeting_summary': {
'template': (
'Summarize the following meeting transcript in this format:\n'
'1. Purpose: (1 sentence)\n'
'2. Decisions: (bullet list, max 5)\n'
'3. Action Items: (table: Task | Owner | Deadline)\n'
'4. Open Questions: (numbered list)\n'
'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
),
'use_case': 'Post-meeting automation for Slack or Notion',
'model': 'claude-opus-4-5',
'temperature': 0,
'notes': 'Works best with verbatim transcripts, not paraphrased notes'
}
}
# Use the template
def run_meeting_summary(transcript):
template = prompt_library['meeting_summary']['template']
return template.replace('[TRANSCRIPT]', transcript)
print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])Sprawdzenie wiedzy
Patrząc na pięć par porównawczych z tej lekcji, która pojedyncza zmiana najbardziej konsekwentnie poprawiała jakość promptu we wszystkich pięciu przykładach?
Nieprecyzyjne a konkretne — podsumowanie
Pięć par porównawczych ujawnia stały wzorzec elementów, które sprawiają, że przeredagowane prompty są skuteczne:
- Struktura wyniku zapewnia największy zwrot z inwestycji — zawsze ją określajcie
- Liczba słów lub elementów całkowicie eliminuje negocjowanie długości
- Opis odbiorców automatycznie dostosowuje słownictwo i poziom szczegółowości
- Reguły wykluczenia zapobiegają przewidywalnym, ogólnym treściom
- Częściowa konkretyzacja nadal pozostawia luki — każdy nieokreślony wymiar staje się przedmiotem zgadywania
- Biblioteki promptów przechowują sprawdzone szablony do wielokrotnego użycia
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 „Porównanie nieprecyzyjnych i precyzyjnych promptów” jest bezpłatna?
Tak — pełny tekst „Porównanie nieprecyzyjnych i precyzyjnych promptów” 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 „Porównanie nieprecyzyjnych i precyzyjnych promptów”?
Przykłady zestawione obok siebie pokazujące, jak ogromne znaczenie ma precyzja. Ć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 4 z 4.
Ile czasu zajmuje lekcja „Porównanie nieprecyzyjnych i precyzyjnych promptów”?
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
- Dlaczego precyzja ma znaczenie
- Usuwanie niejednoznaczności z promptów
- Dodawanie konkretnych szczegółów
- Porównanie nieprecyzyjnych i precyzyjnych promptów