Prompt i kontekst
Prompt i kontekst są fundamentalnymi pojęciami w prompt inżynierii dla dużych modeli językowych (LLM).
Kontekst jest krytycznie ważnym komponentem promptu, określającym zdolność LLM do generowania dokładnych, trafnych i użytecznych odpowiedzi. Skuteczny prompt inżyniering w znacznej mierze polega na sztuce zbierania, filtrowania, strukturyzowania i prezentowania właściwego kontekstu modelowi we właściwym momencie, pokonując przy tym ograniczenia współczesnych LLM.
Definicja Promptu
Prompt (ang. prompt) — to kompletny zestaw danych wejściowych dostarczanych LLM w celu wygenerowania odpowiedzi. To nie tylko pytanie lub polecenie, lecz ustrukturyzowany tekst, który może zawierać:
- Instrukcje: Bezpośrednie wskazówki dla modelu dotyczące tego, co należy zrobić, w jakim formacie, stylu lub tonie.
- Główne zapytanie (Query): Bezpośrednie pytanie użytkownika lub opis głównego zadania.
- Kontekst: Dodatkowe informacje niezbędne do prawidłowego wykonania zapytania.
- Przykłady (Few-shot examples): Demonstracja pożądanego formatu lub stylu odpowiedzi na analogicznych zadaniach.
Jakość i kompletność promptu bezpośrednio determinują trafność, dokładność i użyteczność odpowiedzi LLM.
Definicja Kontekstu
Kontekst w ramach prompt inżynierii — to wszelkie informacje wewnątrz promptu, które pomagają modelowi lepiej zrozumieć zadanie, specyfikę sytuacji lub oczekiwania użytkownika, lecz nie są częścią jego wyjściowych danych treningowych. Kontekst dostarcza szczegółów sytuacyjnych niezbędnych do wygenerowania adekwatnej odpowiedzi.
Kontekst może obejmować:
- Historię poprzedniego dialogu (w chatbotach).
- Dane pobrane z zewnętrznych źródeł (dokumenty, bazy danych, strony internetowe) — podstawa RAG.
- Informacje o użytkowniku (profil, preferencje).
- Specyficzne szczegóły bieżącego zadania lub sytuacji.
- Przykłady wykonania analogicznych zadań (jako część few-shot prompting).
Ważne jest odróżnienie kontekstu dostarczanego w prompcie od ogólnej wiedzy uzyskanej przez model podczas jego wstępnego treningu. Prompt inżyniering koncentruje się na efektywnym dostarczaniu właśnie sytuacyjnego kontekstu.
Wzajemne Powiązania i Wpływ
Prompt i kontekst – fundamentalne pojęcia przy pracy z transformerami, określające to, jak model postrzega dane wejściowe i na jakiej podstawie generuje wynik. Architektonicznie transformer nie rozróżnia specjalnie „promptu" i „kontekstu" – oba są częściami wejściowej sekwencji tokenów, które przekształcane są w embedding, wzbogacane o informacje pozycyjne i łącznie przetwarzane przez warstwy self-attention.
Prompt i kontekst są nierozerwalnie ze sobą związane: kontekst jest integralną częścią promptu.
- Kontekst tworzy prompt: Inżynier dobiera i strukturyzuje trafny kontekst w celu włączenia go do promptu.
- Kontekst kieruje modelem: Dostarczone informacje pozwalają LLM zawęzić przestrzeń możliwych odpowiedzi, skupić się na trafnych aspektach i unikać halucynacji.
- Jakość kontekstu determinuje jakość odpowiedzi: Niewystarczający, nieistotny lub sprzeczny kontekst prowadzi do niedokładnych, ogólnych lub błędnych odpowiedzi. Dokładny i kompletny kontekst zwiększa specyficzność i użyteczność generowania.
- Wpływ na interpretację instrukcji: Kontekst może doprecyzowywać lub zmieniać interpretację ogólnych instrukcji w prompcie.
Skuteczność promptu w dużej mierze zależy od tego, na ile skutecznie inżynier zdołał zebrać, odfiltrować i przedstawić modelowi trafny kontekst.
Typy Kontekstu
Kontekst można klasyfikować według różnych kryteriów:
Według źródła:
- Dostarczony przez użytkownika: Jawne dane wejściowe użytkownika, jego pytanie lub opis zadania.
- Z historii dialogu: Poprzednie wiadomości użytkownika i asystenta (pamięć krótkoterminowa).
- Pobrany (Retrieved): Dane z zewnętrznych źródeł (dokumenty, bazy danych, sieć) za pomocą RAG.
- Z profilu/bazy wiedzy: Długoterminowe informacje o użytkowniku lub domenie.
- Statyczny/Instruktażowy: Informacje wbudowane przez inżyniera w szablon promptu (instrukcje, przykłady, definicje ról).
Według dynamiczności:
- Kontekst statyczny: Niezmienna część promptu (instrukcje, definicje, przykłady). Określa ogólne zadanie.
- Kontekst dynamiczny: Informacje zmieniające się od zapytania do zapytania (dane użytkownika, wyniki RAG, bieżący czas). Dostarcza szczegółów specyficznych.
Według czasu przechowywania (Pamięć):
- Kontekst krótkoterminowy: Historia bieżącej sesji dialogu.
- Kontekst długoterminowy: Zapisane dane o użytkowniku lub poprzednich interakcjach, wymagające mechanizmów przechowywania i pobierania.
Zarządzanie Kontekstem
Efektywne zarządzanie kontekstem — kluczowe zadanie prompt inżynierii, szczególnie w świetle ograniczeń okna kontekstowego LLM. Podstawowe metody:
- RAG: Najpowszechniejsza metoda pracy z dużymi wolumenami informacji. Pozwala dynamicznie znajdować i włączać do promptu jedynie najbardziej trafne fragmenty z rozległej bazy wiedzy. Wymaga wektorowej bazy danych i efektywnych mechanizmów wyszukiwania (leksykalnego lub semantycznego).
- Chunking (Dzielenie na fragmenty): Podział dużych dokumentów na semantycznie powiązane lub stałych rozmiarów części do indeksowania i późniejszego pobierania przez RAG.
- Sumaryzacja: Kompresja długiej historii dialogu lub obszernych dokumentów w celu przekazania głównego sensu w ograniczonym oknie kontekstowym.
- Zarządzanie Pamięcią (Memory Management): Stosowanie różnych strategii przechowywania i pobierania historii dialogu w chatbotach i agentach (np. ConversationBufferMemory, ConversationSummaryBufferMemory w LangChain).
- Przesuwające się okno (Sliding Window): Utrzymywanie w kontekście jedynie N ostatnich wiadomości dialogu.
- Filtrowanie i Priorytetyzacja: Wybór najbardziej trafnych fragmentów kontekstu na podstawie ich ważności (np. za pomocą ocen trafności uzyskanych podczas wyszukiwania) przed złożeniem finalnego promptu.
Rola Kontekstu w Prompt Inżynierii
- Zwiększanie Trafności: Kontekst pozwala modelowi generować odpowiedzi dokładnie odpowiadające zapytaniu i sytuacji użytkownika.
- Ograniczanie Halucynacji: Dostarczanie informacji faktycznych (przez RAG) skłania model do opierania się na nich, a nie wymyślania faktów.
- Personalizacja: Kontekst o użytkowniku (preferencje, historia) pozwala dostosowywać odpowiedzi.
- Zarządzanie Stanem: W dialogach i procesach wieloetapowych kontekst (historia) zapewnia ciągłość i świadomość modelu o poprzednich krokach.
- Pokonywanie Ograniczeń Wiedzy Modelu: RAG pozwala modelowi odpowiadać na pytania o zdarzenia, które nastąpiły po jego treningu, lub o specyficzne/prywatne dane.
Ograniczenia
- Limit Okna Kontekstowego: Pomimo zwiększenia do 1-2 milionów tokenów we współczesnych modelach, przetwarzanie takich wolumenów może być kosztowne i powolne. Wymaga efektywnych strategii kompresji i selekcji (RAG, sumaryzacja).
- Wyszukiwanie Trafnego Kontekstu: Skuteczność RAG zależy od jakości wyszukiwania. Nieprawidłowo pobrany kontekst może wprowadzać model w błąd („śmieci na wejściu – śmieci na wyjściu").
- „Dolina Obojętności" (Valley of Meh): Informacje umieszczone w środku bardzo długiego promptu mogą być ignorowane przez model. Wymaga strukturyzowania promptu (np. technika „kanapki").
- Ryzyko Wstrzyknięcia Kontekstu: Jeśli kontekst pobierany jest z niezaufanych źródeł (np. stron internetowych), może zawierać złośliwe instrukcje (prompt injection).
Literatura
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
- Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
- Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
- Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
- Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
- Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
- Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
Zobacz też
- Duże modele językowe
- Okno kontekstowe
- Wektorowe bazy danych
- LangChain