Przejdź do głównej zawartości

Skuteczne techniki promptowania

Prosisz o „system uwierzytelniania użytkowników z weryfikacją e-mail”, a model wybiera strategię sesji, której nigdy byś nie wdrożył, na sztywno wpisuje mailer, którego nie używasz, i przez następne dwadzieścia minut odplątujesz decyzje, które podjął za ciebie, bo ty ich nie podjąłeś. Model się nie mylił — był niepokierowany. Przepaść między frustrującą sesją a świetną niemal nigdy nie leży w modelu. Leży w tym, jak formułujesz prośbę.

Oto wzorce promptowania, które konsekwentnie dają trafny, dobrze zaprojektowany kod w Cursorze, Claude Code i Codeksie.

  • Wzorzec promptu zaczynającego od doprecyzowania, który dopiszesz do każdej złożonej prośby
  • Pętlę plan-potem-wykonanie, która powstrzymuje model przed rzuceniem się w wadliwą implementację
  • Prompty few-shot i z personą, które przykuwają model do konwencji twojej bazy kodu
  • Tabelę rozwiązywania problemów dla każdego narzędzia, gdy jakość wyników spada

Działa to, bo zmusza model do ujawnienia założeń, póki ich zmiana jest jeszcze tania. Stosuj ten sam wzorzec przez cały cykl życia:

  • PRD: “Ask for everything you need to prepare the best PRD”
  • Planowanie: “Ask for everything you need to prepare the best plan”
  • Implementacja: “Ask for any clarifications before starting”
  • Debugowanie: “Ask for any additional context that would help diagnose this issue”

Im więcej ograniczeń podasz, tym mniej model improwizuje. Ogólnikowe prośby dają generyczny kod; konkretne prośby dają kod, który da się wdrożyć.

  • Nie mów: „Dodaj połączenie z bazą danych.”
  • Mów: „Dodaj połączenie z naszą bazą PostgreSQL za pomocą biblioteki pg. Ładuj connection string ze zmiennej DATABASE_URL. Dołącz logikę ponawiania prób z wykładniczym wycofywaniem i typowaną funkcję health-check.”

Nazwanie biblioteki, zmiennej środowiskowej i zachowania przy błędach z góry kieruje model ku właściwej implementacji w jednym przebiegu, a nie w trzech.

W przypadku czegokolwiek większego niż jednolinijkowa zmiana zmuś model do myślenia, zanim zacznie kodować.

  1. Najpierw poproś o plan — i zabroń kodu.

    I need a feature that lets users upload a profile picture. First,
    produce a detailed, step-by-step plan: list the files you'll create
    or modify and the order of changes. Do NOT write any code yet.
  2. Przejrzyj i udoskonal plan. Model zwraca zarys („1. Dodaj /api/upload-avatar. 2. Dodaj pole pliku do ProfilePage…”). Popraw go, zanim powstanie jakikolwiek kod: „Użyj osobnego komponentu AvatarUpload zamiast edytować ProfilePage bezpośrednio.”

  3. Wykonaj zatwierdzony plan.

    The plan looks good. Implement step 1 only, then stop so I can review
    the diff before we continue.

Ta dwufazowa pętla wyłapuje błędy architektoniczne, gdy ich poprawienie kosztuje jedno zdanie, a nie diff na 30 plików. Po pełną dyscyplinę zajrzyj do PRD → plan → todo.

Żeby model dopasował się do konwencji twojej bazy kodu, pokaż mu istniejący plik, zamiast opisywać konwencję prozą.

  • Nie mów: „Stwórz klasę serwisu z konstruktorem, prywatnym loggerem i JSDoc na metodach publicznych.”
  • Mów: „Stwórz klasę PaymentService, która podąża dokładnie za wzorcem i strukturą pliku @/services/AuthService.ts.”

Modele doskonale rozpoznają wzorce. Konkretny przykład to ciaśniejsza specyfikacja niż jakikolwiek opis.

Przygotowanie modelu rolą skupia go na właściwej dziedzinie wiedzy.

Ekspert ds. bezpieczeństwa

„You are an expert security engineer. Review this code for XSS, CSRF, and SQL injection. List every issue with a concrete fix.”

Guru wydajności

„You are a senior performance engineer. Find bottlenecks in this function and suggest optimizations that reduce allocations and time complexity.”

Traktuj sesję jak dialog, a nie pojedynczy strzał. Pokieruj pierwszą próbą ku temu, czego naprawdę chcesz:

  • „Dobry początek, ale nie obsłużyłeś przypadku niezalogowanego użytkownika. Dodaj to sprawdzenie.”
  • „To działa, ale źle się czyta — zrefaktoryzuj zagnieżdżone if-y na switch.”
  • „Dodaj kompleksowy zestaw testów jednostkowych dla funkcji, którą właśnie napisałeś.”

Gdy to zawodzi: rozwiązywanie problemów dla każdego narzędzia

Dział zatytułowany „Gdy to zawodzi: rozwiązywanie problemów dla każdego narzędzia”

Gdy jakość wyników spada, przyczyną niemal zawsze jest kontekst lub konfiguracja — nie model. Naprawy różnią się w zależności od narzędzia, więc tu trzy podejścia rozchodzą się najbardziej.

  • Model nie rozumie bazy kodu: stwórz regułę komendą New Cursor Rule (Cursor Settings > Rules, Commands) albo wygeneruj ją z czatu. Reguły utrwalają konwencje projektu w każdym żądaniu.
  • Model odtwarza istniejący kod: @-wskaż źródło — @auth.ts extend the login logic — żeby edytował, a nie wymyślał od nowa.
  • Dezorientacja co do biblioteki: dodaj Context7 MCP („use Context7 for docs”), żeby do kontekstu trafiła aktualna dokumentacja biblioteki.
  • Słaba jakość przy trudnych zadaniach: upewnij się, że wybrałeś topowy model w selektorze (Claude Fable 5, Opus 4.8 lub Sonnet 4.6) i włącz tryb MAX do pracy z dużym kontekstem. Fable 5 to najmocniejsza opcja do najtrudniejszych refaktoryzacji i złożonej pracy wieloplikowej; pełne zestawienie poziomów i cen znajdziesz w porównaniu modeli.
  1. Skonfiguruj kontekst. Utrzymuj reguły projektu / CLAUDE.md / AGENTS.md; odświeżaj je w miarę zmian w bazie kodu.

  2. Wykorzystaj właściwą możliwość. Wybierz topowy model; w Claude Code podnieś poziom wysiłku do pracy architektonicznej; w Cursorze włącz tryb MAX dla dużego kontekstu.

  3. Bądź konkretny. Odwołuj się do konkretnych plików @-wskazaniami i pokazuj przykładowe wzorce.

  4. Proś o doprecyzowanie. Kończ prompty pytaniem, czego model potrzebuje; używaj pętli PRD → plan → todo dla kontroli.

  5. Skonfiguruj dostęp do dokumentacji. Dodaj Context7 MCP albo poleć wyszukanie aktualnej dokumentacji biblioteki w sieci.