08 · LLM · 4 min czytania · aktualizacja
Czym jest prompt engineering i jak pisać dobre polecenia dla LLM?
W skrócie
Prompt to tekst wejściowy, który warunkuje odpowiedź modelu. Dobre polecenie podaje cel, kontekst, format i przykłady, bo model widzi tylko to, co mu napiszesz.
Co to jest
Prompt to cały tekst, który trafia do modelu językowego przed jego odpowiedzią: instrukcja systemowa, polecenie użytkownika, przykłady, dokumenty i historia rozmowy. Prompting (inżynieria promptów) to sztuka takiego formułowania tego tekstu, by model niezawodnie robił to, czego chcemy — bez zmieniania jego wag.
Z punktu widzenia modelu prompt nie jest „rozkazem”, tylko początkiem tekstu, który ma dokończyć. Każde słowo zmienia rozkład prawdopodobieństwa kolejnych tokenów. Dlatego drobne różnice w sformułowaniu potrafią mocno zmienić wynik, a polecenie jasne dla człowieka bywa niejednoznaczne dla modelu.
Dobra analogia: prompt to brief dla bardzo zdolnego, ale nowego współpracownika, który nie zna Twojej firmy, nie widzi Twojego ekranu i nie może dopytać. Wszystko, czego potrzebuje, musi być w briefie.
Mechanizm — dlaczego tak działa
Warunkowanie rozkładu. Model liczy P(odpowiedź | prompt). Prompt „Napisz o kawie” jest zgodny z milionami tekstów: reklamą, esejem, wpisem z bloga. Model wybiera coś przeciętnego z tego zbioru. Gdy dodasz odbiorcę, cel, długość i ton, zawężasz zbiór pasujących kontynuacji i przesuwasz prawdopodobieństwo w stronę tej, której chcesz.
Model nie zna ukrytego kontekstu. Najczęstszy błąd to zakładanie, że model „wie, o co chodzi”: zna nasze dane, standardy firmy, poprzednie ustalenia. Nie zna. Konkretne informacje — definicje, ograniczenia, przykładowe dane wejściowe — usuwają zgadywanie.
Przykłady działają silniej niż opisy. Kilka par „wejście → oczekiwane wyjście” (few-shot) pokazuje format i kryteria lepiej niż akapit instrukcji, bo model naśladuje wzorce z kontekstu (zob. uczenie w kontekście). Trzeba jednak uważać: model kopiuje także przypadkowe cechy przykładów, np. ich długość czy rozkład etykiet. Zhao i in. (2021) pokazali, że sama kolejność przykładów potrafi istotnie zmieniać trafność.
Miejsce na rozumowanie. Model wykonuje stałą ilość obliczeń na każdy token. Prośba o rozpisanie kroków przed odpowiedzią daje mu więcej tokenów, czyli więcej obliczeń i miejsca na wyniki pośrednie. To podstawa techniki łańcucha myśli.
Struktura i separatory. Wyraźne oddzielenie instrukcji od danych (nagłówki, znaczniki typu <dokument>) zmniejsza ryzyko, że model pomyli tekst do analizy z poleceniem. Ma to też znaczenie dla bezpieczeństwa: tekst z zewnątrz może zawierać wstrzyknięte instrukcje (prompt injection), a model nie ma niezawodnego sposobu odróżniania „danych” od „poleceń”.
Granice. Prompt nie doda modelowi wiedzy, której nie ma, ani nie wyeliminuje halucynacji. Wyniki dobrego promptu na jednym modelu nie przenoszą się w pełni na inny. Gdy prompt robi się bardzo długi i kruchy, często lepszym narzędziem jest RAG albo dostrajanie.
Na przykładzie
Słabe polecenie: „Oceń tę opinię klienta”. Model nie wie, czy chodzi o sentyment, ton, czy wiarygodność, ani w jakim formacie odpowiedzieć. Lepsze: „Jesteś analitykiem obsługi klienta sklepu z elektroniką. Sklasyfikuj opinię w znacznikach <opinia> jako POZYTYWNA, NEUTRALNA lub NEGATYWNA. Jeśli opinia dotyczy dostawy, a nie produktu, dodaj etykietę DOSTAWA. Odpowiedz tylko etykietami.” Do tego dwa–trzy przykłady z poprawnymi odpowiedziami. Każdy element zawęża przestrzeń odpowiedzi: rola ustala perspektywę, lista etykiet i format pozwalają odczytać wynik automatycznie, przykłady pokazują kryteria w przypadkach granicznych.
Siłę pojedynczego zdania dobrze pokazał eksperyment Kojimy i in. (2022). Dopisanie do pytania frazy „Let’s think step by step” (pomyślmy krok po kroku) podniosło trafność modelu InstructGPT na zadaniach tekstowych z arytmetyki MultiArith z 17,7% do 78,7%, a na GSM8K z 10,4% do 40,7%. Model był ten sam — zmienił się tylko kontekst, który skłonił go do rozpisania obliczeń.
W praktyce
- Zaczynaj od jasnego celu, odbiorcy i formatu wyjścia; dla danych strukturalnych poproś o JSON i waliduj go (wiele API ma tryb wymuszonego schematu).
- Oddziel instrukcję od danych znacznikami lub nagłówkami; najważniejsze polecenie powtórz po długim dokumencie.
- Dodaj 2–5 zróżnicowanych przykładów, w tym przypadki graniczne; zrównoważ etykiety.
- Traktuj prompt jak kod: wersjonuj go i testuj na stałym zestawie kilkudziesięciu przypadków, zanim uznasz zmianę za poprawę.
- Typowy błąd: dopisywanie kolejnych zakazów („nie rób X, nie rób Y”) zamiast opisania, co model ma zrobić.
Najczęstsze pytania
- Czy pisanie „jesteś ekspertem” coś daje?
- Rola ustawia styl, słownictwo i poziom szczegółowości, więc bywa przydatna. Nie daje jednak wiedzy, której model nie ma. Konkretny opis zadania i kryteriów zwykle pomaga bardziej niż sama etykieta roli.
- Pisać prompty po polsku czy po angielsku?
- Współczesne modele dobrze rozumieją polskie polecenia. Język promptu wpływa jednak na język odpowiedzi i liczbę tokenów. Najlepiej przetestować oba warianty na własnym zadaniu.
- Kiedy prompt przestaje wystarczać?
- Gdy potrzebna jest wiedza spoza modelu (wtedy RAG), stały styl lub format na tysiącach przypadków (dostrajanie) albo działanie w świecie, np. obliczenia i wyszukiwanie (narzędzia, agenci).
Źródła
- Brown T. i in., 2020, „Language Models are Few-Shot Learners”, NeurIPS 2020.
- Kojima T. i in., 2022, „Large Language Models are Zero-Shot Reasoners”, NeurIPS 2022.
- Wei J. i in., 2022, „Chain-of-Thought Prompting Elicits Reasoning in Large Language Models”, NeurIPS 2022.
- Zhao Z. i in., 2021, „Calibrate Before Use: Improving Few-Shot Performance of Language Models”, ICML 2021.
- Liu P. i in., 2023, „Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing”, ACM Computing Surveys 55(9).