Context is the King!

Co najmniej kilka osób z którymi rozmawiałem na temat sztucznej inteligencji, wypowiadało się z podziwem na temat tej technologii, ale gdy zapytałem o efekty ich eksperymentów z modelem (głównie GPT 3.5) wspominali o tym, że działa to niesamowicie, ale jednak nic konkretnego lub wartościowego nie byli w stanie stworzyć.

Owszem, model podpowiedział rozwiązanie, albo zaproponował akapit, ale po głębszym wczytaniu się w odpowiedź i jej ocenie zazwyczaj dostajemy oklepane pomysły, sztampowe teksty i jednocześnie mało konkretów. A gdy o te konkrety dopytamy i je zweryfikujemy, okazuje się, że mijają się one z prawdą. Co najmniej kilka osób ostrzegało mnie przed GPT mówiąc:

Uważaj na niego. GPT kłamie.

Czy rzeczywiście? Czy model może kłamać? Zapytajmy o to GPT-4:

User: Czy LLMy kłamią?

GPT-4: Language models like me generate responses based on patterns in data and don’t intentionally lie, but our responses can be inaccurate or misleading. This can be due to outdated or incorrect information in our training data, lack of understanding, or ambiguity in questions. It’s crucial for users to verify information from language models using reliable sources.

Zdecydowane podanie nieprawdziwej informacji nazywamy halucynacją modelu. Jak jej unikać?
Odpowiedź od GPT-4 zawiera istotny w tym rozważaniu fragment: lack of understanding, or ambiguity in questions. Krótko mówiąc You get what you asked for.

I tutaj na scenę wchodzi on. Cały na biało. Król promptów: Kontekst
Im więcej danych dostarczymy, im bardziej będą one precyzyjnie określać kontekst w którym się poruszamy, tym bardziej wartościowe odpowiedzi otrzymamy.

Jakość odpowiedzi jest wprost proporcjonalna do jakości dostarczonego kontekstu.

W poprzednim wpisie wskazywałem mankamenty chataGPT. Jednym z nich jest tylko częściowa kontrola nad promptem i przede wszystkim bardzo ograniczona kontrola nad kontekstem. W pierwszej wiadomości, owszem to co dostarczymy, będzie kontekstem dla modelu. Ale z czasem odpowiedzialność za utrzymanie kontekstu całej rozmowy znika, ponieważ zaczyna za to odpowiadać samo oprogramowanie chat’a (otoczka wokół modelu GPT, który jest pod spodem).

Pełną kontrolę uzyskujemy w Playgroundzie lub po prostu przez API.

Na koniec dwa przykłady, które mogą być dobrymi wskazówkami jak budować prompty i kreować skuteczny kontekst.

Tutaj przykład kiepskiego kontekstu. Wejście użytkownika zmieniło cel działania modelu

Po uzupełnieniu kontekstu o jasne instrukcje model działa już jak powinien:

A teraz programowanie. Wymyśliłem sobie, że potrzebuję taką funkcję, więc pytam:

Otrzymałem długą odpowiedź. Kod wygląda ok, ale zawiera niepotrzebne komentarza, a w wyjaśnieniu kodu jest w ogóle błąd, bo wynik kodu będzie zupełnie inny. Dużo tekstu, słabej jakości wynik. Ot codzienność modelu GPT.

A co jeśli nadamy jakiś kontekst tej rozmowie? Może możemy zmusić model do większego wysiłku i właściwie ukierunkować jego potencjał?

Teraz jest zdecydowanie lepiej. Dostałem konkretną odpowiedź, kod jest krótki i zwięzły, funkcja nazywa się też dużo lepiej i nie otrzymałem całkowicie zbędnych wyjaśnień.

Używając chatGPT również możecie nadawać kontekst konwersacjom. Po prostu zacznijcie od kontekstu, a potem zadajcie pytanie. Przy pierwszej interakcji zadziała to dokładnie tak samo. Pamiętać trzeba jedynie, że z czasem kontekst nadany na początku zacznie być wypierany przez historię rozmowy i może zaistnieć potrzeba, aby go odnawiać.