Usuwanie niejednoznaczności z promptów
Poznaj techniki eliminowania wielu możliwych interpretacji instrukcji.
Usuwanie niejednoznaczności z promptów to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 2 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.
Wpływ niejednoznaczności na AI
Niejednoznaczne prompty zmuszają model do wyboru spośród wielu prawidłowych interpretacji. Model wybiera jedną — zazwyczaj najczęstszą — i konsekwentnie się jej trzyma, nie sygnalizując, że dokonał wyboru.
W rezultacie otrzymuje się doskonale sformułowaną odpowiedź na niewłaściwe pytanie. Rozpoznanie i usunięcie niejednoznaczności przed wysłaniem promptu jest szybsze niż późniejsze przeredagowywanie wyniku.
Klasyk: „Ulepsz to”
„Ulepsz to” to prawdopodobnie najbardziej niejednoznaczny prompt, jaki istnieje. W jaki sposób ma być lepiej?
- Krócej? Dłużej?
- Bardziej formalnie? Swobodniej?
- Więcej przykładów? Mniej?
- Inny ton? Inna struktura?
- Poprawiona gramatyka? Inne słownictwo?
Model wybiera jeden wymiar i go zmienia. Jeśli nie jest to wymiar, o który chodziło, pozostaje przeredagowywanie tekstu w nieskończonej pętli.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
original_text = (
'Our software helps companies manage their data. '
'It has many features. Customers like it a lot.'
)
# Ambiguous improvement request
vague = f'Make this better:\n\n{original_text}'
# Unambiguous improvement request
specific = (
f'Rewrite this product description to be exactly 50% shorter, '
f'more confident in tone, and replace vague phrases like "many features" '
f'and "a lot" with specific claims. Do not add new features I have not mentioned.\n\n'
f'{original_text}'
)
for label, prompt in [('VAGUE', vague), ('SPECIFIC', specific)]:
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=200,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'--- {label} ---')
print(response.content[0].text)
print()Wiele interpretacji: przykłady praktyczne
Każdy prompt zawierający nieokreślony zaimek, względny przymiotnik lub brakujący podmiot może być niejednoznaczny. Przykłady:
- „Ulepsz wydajność” — czego? Szybkości, dokładności, zaangażowania użytkowników?
- „Napisz o wpływie” — pozytywnym, negatywnym, gospodarczym, społecznym?
- „Napraw to” — logikę, styl, formatowanie czy gramatykę?
- „Nadaj temu profesjonalny charakter” — formalne słownictwo? Uporządkowane akapity? Usunięcie emoji?
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Disambiguating 'fix this code'
buggy_code = 'def divide(a, b): return a / b'
ambiguous = f'Fix this:\n{buggy_code}'
unambiguous = (
f'Fix only the division-by-zero bug in this function. '
f'Add a guard that raises a ValueError with message "b cannot be zero" when b=0. '
f'Do not change anything else — keep the function signature and return type identical.\n\n'
f'{buggy_code}'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': unambiguous}]
)
print(response.choices[0].message.content)Technika usuwania niejednoznaczności: określenie interpretacji
Jeśli wiadomo, że prompt można zinterpretować na kilka sposobów, należy wyraźnie określić oczekiwaną interpretację.
Szablon: „Kiedy mówię [niejednoznaczny termin], mam na myśli [konkretna definicja]”.
Przykłady:
- „Kiedy mówię «edytuj», mam na myśli wyłącznie poprawę gramatyki i pisowni — treści nie należy zmieniać”.
- „Kiedy mówię «zwięźle», mam na myśli maksymalnie 3 zdania”.
- „Kiedy mówię «profesjonalnie», mam na myśli brak zaimków pierwszej osoby i brak form skróconych”.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
messages=[{
'role': 'user',
'content': (
'Edit the following paragraph. '
'When I say "edit", I mean: fix grammar and punctuation only. '
'Do NOT change vocabulary, sentence structure, or content. '
'When done, list each change you made in a numbered list below the edited text.\n\n'
'The team have went to the meeting early, but the manager '
'werent there so they waited for alot of time before leaving.'
)
}]
)
print(response.content[0].text)Technika usuwania niejednoznaczności: definiowanie zakresu
Niejednoznaczność zakresu często pojawia się przy prośbach o ulepszenie lub rozszerzenie treści. Można ją usunąć, dokładnie określając, co wchodzi w zakres, a co pozostaje poza nim.
W zakresie: co model może zmienić
Poza zakresem: co musi pozostać bez zmian
Jest to szczególnie ważne podczas edytowania kodu, redagowania dokumentów i przetwarzania zbiorów danych, ponieważ niezamierzone zmiany mogą powodować poważne problemy.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
code_block = '''
def calculate_tax(income, rate):
return income * rate
def calculate_net(income, tax):
return income - tax
'''
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Add Python type hints to the following code.\n'
'IN SCOPE: adding type hints to parameters and return values only.\n'
'OUT OF SCOPE: changing function names, logic, docstrings, or formatting.\n'
'Do not add any comments or docstrings.\n\n'
+ code_block
)
}]
)
print(response.choices[0].message.content)Technika usuwania niejednoznaczności: określenie formatu wyniku
Niejednoznaczność formatu wyniku pojawia się wtedy, gdy oczekuje się konkretnego formatu, ale nie zostanie on określony. „Proszę podać dane” — w akapicie? W formie listy? Tabeli? Obiektu JSON?
Zawsze należy wskazać dokładny oczekiwany format wyniku. Gdy zostanie on wyraźnie określony, model precyzyjnie się do niego dopasuje.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
candidates_text = (
'Alice: 5 years Python, worked at Stripe, has a CS degree.\n'
'Bob: 3 years JavaScript, worked at a startup, self-taught.\n'
'Carol: 8 years Java, worked at Google, has an MS in CS.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
messages=[{
'role': 'user',
'content': (
'Extract the candidate data below into a JSON array. '
'Each object must have exactly these keys: name, years_experience, primary_language, '
'previous_employer, education_level. '
'education_level values: DEGREE, MASTERS, SELF_TAUGHT.\n\n'
+ candidates_text
)
}]
)
print(response.content[0].text)Technika usuwania niejednoznaczności: poproszenie modelu o doprecyzowanie
Podczas tworzenia złożonego i niejednoznacznego promptu można polecić modelowi zadawanie pytań doprecyzowujących przed podjęciem próby wykonania zadania.
Jest to szczególnie przydatne podczas tworzenia asystentów AI — model powinien gromadzić informacje zamiast snuć założenia, tak jak zrobiłby to dobry ludzki konsultant.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[
{
'role': 'system',
'content': (
'You are a professional copywriter. '
'Before starting any writing task, ask exactly 3 clarifying questions '
'that would most improve the output quality. '
'Only proceed to write after the user answers those questions.'
)
},
{
'role': 'user',
'content': 'Write a landing page headline for my business.'
}
]
)
print(response.choices[0].message.content)Określenia względne wymagające doprecyzowania
Określenia względne nie mają stałego znaczenia — różne osoby rozumieją je inaczej:
- „Zwięzłe” — 1 zdanie? 3 zdania? 1 akapit?
- „Formalne” — bez form skróconych? Akademicki styl cytowania? Język prawniczy?
- „Proste” — poziom czytania odpowiedni dla ucznia piątej klasy? Bez terminów technicznych? Tylko krótkie zdania?
- „Wyczerpujące” — uwzględniające wszystkie najważniejsze przypadki? Także przypadki brzegowe? Z przykładami?
Każde określenie względne należy zastąpić konkretnym, mierzalnym odpowiednikiem.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Relative terms mapped to concrete equivalents
mapping = [
('Give me a brief summary', 'Summarize in exactly 2 sentences'),
('Write something formal', 'Write using no contractions, no first person, and Flesch-Kincaid grade 12+'),
('Make it simple', 'Use only words a 10-year-old would know; max 15 words per sentence'),
('Be comprehensive', 'Cover at least 5 distinct subtopics with one example each'),
]
for vague, concrete in mapping:
print(f'Vague: "{vague}"')
print(f'Concrete: "{concrete}"')
print()Niejednoznaczność podmiotu: kto wykonuje działanie?
Niejednoznaczność podmiotu pojawia się wtedy, gdy nie wiadomo, do kogo lub czego odnosi się instrukcja.
„Przeredaguj wstęp” — czego? Wklejonego dokumentu? Dokumentu, o którym rozmawialiśmy 5 wypowiedzi wcześniej? Nowego dokumentu?
„Przetłumacz to” — którą część? Całą odpowiedź? Tylko sekcję z podsumowaniem? Komentarze w kodzie?
Zawsze należy wskazać konkretny obiekt lub sekcję, o które chodzi, szczególnie w rozmowach wieloetapowych.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Clear subject reference prevents wrong-section edits
contract_text = (
'## Section 1: Payment Terms\nPayment is due within 30 days.\n\n'
'## Section 2: Termination\nEither party may terminate with 30 days notice.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'In the contract below, rewrite ONLY Section 2 (Termination). '
'Change the notice period from 30 days to 90 days. '
'Do not change Section 1 or any other text.\n\n'
+ contract_text
)
}]
)
print(response.choices[0].message.content)Niejednoznaczność czasowa: kiedy?
Określenia czasu w promptach mogą być niejednoznaczne: „niedawny”, „obecny”, „najnowszy”, „teraz”.
Dane treningowe modelu mają określoną datę odcięcia — model nie wie, co oznacza „teraz”, jeśli nie zostanie mu to wyjaśnione. W zadaniach zależnych od czasu zawsze należy podawać konkretne daty.
- „Najnowsze badania” → „Badania opublikowane w 2024 lub 2025 roku”
- „Obecne najlepsze praktyki” → „Najlepsze praktyki aktualne na styczeń 2025 roku”
- „Najnowsza wersja” → „Wersja 3.12 (wydana w październiku 2024 roku)”
import anthropic
from datetime import date
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
today = date.today().isoformat()
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
system=f'Today is {today}. Use this as the reference for any time-related words.',
messages=[{
'role': 'user',
'content': (
'Describe the best practices for Python async programming '
'as of January 2025. If your knowledge does not cover this timeframe, '
'say so explicitly and share what you know up to your cutoff.'
)
}]
)
print(response.content[0].text)Tworzenie radaru niejednoznaczności
Przed wysłaniem dowolnego promptu należy sprawdzić, czy występują w nim następujące sygnały niejednoznaczności:
- Zaimek bez jasnego odniesienia: to, ten, tamto, oni
- Względne przymiotniki: lepszy, krótszy, formalny, prosty, wyczerpujący, niedawny
- Nieprecyzyjne czasowniki: napraw, ulepsz, zaktualizuj, zrób, coś z tym zrób
- Brak określonego zakresu: brak informacji o tym, co wchodzi w zakres, a co pozostaje poza nim
- Brak formatu: nie określono formatu wyniku
- Brak kontekstu: nie określono, kim są odbiorcy ani do czego służy wynik
def scan_prompt_for_ambiguity(prompt):
'''Simple heuristic scanner for common ambiguity patterns.'''
warnings = []
vague_verbs = ['fix', 'improve', 'make it', 'update', 'change it', 'redo']
relative_adj = ['better', 'shorter', 'longer', 'formal', 'simple', 'recent', 'comprehensive']
missing_format = ['json', 'table', 'list', 'bullet', 'paragraph', 'word', 'sentence']
lower = prompt.lower()
for v in vague_verbs:
if v in lower:
warnings.append(f'Vague verb detected: "{v}" — specify what change exactly')
for a in relative_adj:
if a in lower:
warnings.append(f'Relative adjective: "{a}" — anchor with a measurable definition')
if not any(f in lower for f in missing_format):
warnings.append('No output format specified — add format, length, or structure')
return warnings
test = 'Make the report better and more formal.'
print('Prompt:', test)
for w in scan_prompt_for_ambiguity(test):
print(' WARNING:', w)Sprawdzenie wiedzy
Deweloper wysyła następujący prompt: „Uprość kod”. AI skraca kod, ale deweloper chciał zastosowania bardziej czytelnych nazw zmiennych, a nie skrócenia kodu. Na czym polegał główny problem?
Usuwanie niejednoznaczności — podsumowanie
Niejednoznaczność zmusza model do zgadywania — jego domysł jest najbardziej przeciętną interpretacją, a nie interpretacją użytkownika. Najważniejsze techniki usuwania niejednoznaczności:
- Określenie interpretacji: „Kiedy mówię X, mam na myśli Y”
- Zdefiniowanie zakresu: wymienienie elementów wchodzących w zakres i pozostających poza nim
- Wskazanie formatu wyniku: JSON / tabela / akapit / liczba zdań
- Doprecyzowanie określeń względnych: „zwięzłe” → „2 zdania”, „formalne” → „bez form skróconych”
- Wskazanie podmiotu: „Sekcja 2”, a nie „ta część”
- Poproszenie o doprecyzowanie: polecenie modelowi zadawania pytań przed rozpoczęciem pracy
Często zadawane pytania
Czy lekcja „Usuwanie niejednoznaczności z promptów” jest bezpłatna?
Tak — pełny tekst „Usuwanie niejednoznaczności z 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 „Usuwanie niejednoznaczności z promptów”?
Poznaj techniki eliminowania wielu możliwych interpretacji instrukcji. Ć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 2 z 4.
Ile czasu zajmuje lekcja „Usuwanie niejednoznaczności z 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