Jak rozmawiać z AI, żeby chciało nas słuchać
SP#42 Jak rozmawiać z AI, żeby chciało nas słuchać?https://stormit.pl/prompt-engineer/
Czyli to nie wystarczy zadać jakiegoś po prostu, od takiego prostego pytania na zasadzie mój modelu wygeneruj mi jakiś wpis na bloga, czy wygeneruj mi jakąś aplikację. Tylko musimy naprawdę w bardzo dobry sposób zadać te nasze pytania. Czyli musimy, to co za chwilę sobie powiemy, stworzyć taki odpowiedni prompt. Prompt, który właśnie pozwala nam komunikować się z naszymi modelami językowymi. No i dlaczego to jeszcze jest takie ważne? A to przede wszystkim dlatego, że ta technologia jest na tyle skomplikowana, że jeżeli nieodpowiednio podejdziemy do komunikacji z nią, no to uzyskamy albo totalnie błędne wyniki i no możemy się bardzo szybko zniechęcić, wręcz możemy wprowadzić siebie czy kogoś innego w błąd, dlatego że jeżeli
No i to szczególnie jest istotne, kiedy będziemy chcieli coś odrobinę więcej zrobić z tym naszym modelem, niż poprosić go, żeby wygenerował nam jakiś wierszyk czy jakiś prosty wpis do social mediów. No a my jako osoby techniczne jednak cały czas będziemy starali się no lepiej wykorzystać te narzędzia, chociażby żeby szybciej się uczyć czy wytwarzać nasze aplikacje, bo tak jak najbardziej z poziomu naszych aplikacji też jesteśmy w stanie tego typu komunikacje zrobić. I okazuje się, że takie efektywne przygotowanie promptów, czyli tej komunikacji ze sztuczną inteligencją, to nie jest tylko i wyłącznie sama kwestia techniczna, ale jest to coś dużo większego, dużo szerszego, dlatego że potrzebujemy też tutaj umiejętności na styku językoznawstwa, po prostu logiki, ale też takiej empatii w komunikacji, w tym wypadku właśnie ze sztuczną inteligencją, czyli dobrze musimy
Podsumowując, w dzisiejszym odcinku przyjrzymy się jak projektować prompty, aby uzyskać lepsze rezultaty. Prompt Ingeniera, czyli właśnie takiego specjalisty od komunikacji ze sztuczną inteligencją, od tworzenia, utrzymywania promptów. Porozmawiamy o tych wszystkich wyzwaniach, problemach, jakie możemy spotkać, korzystając ze sztucznej inteligencji. Tutaj sztuczną inteligencję przede wszystkim rozumiemy jako modele Językowe, czyli tak jak nasz tytuł mówił, porozmawiamy o tym, co zrobić, żeby sztuczna inteligencja chciała nas słuchać, ale też żeby w odpowiedzi dostarczyła nam jak najlepsze, jak najpełniejsze dane.
I chciałbym, żebyśmy tutaj przeszli przez kilka takich praktycznych przykładów, jak przygotować takie prompty, jakie. Jakich odpowiedzi możemy się w tym wypadku spodziewać? Dobrze, zanim jeszcze przejdziemy do głównej części naszego odcinka, małe ogłoszenia. A mianowicie jest to już kolejne nasze spotkanie, kolejna rozmowa, gdzie poruszamy tematy związane ze sztuczną inteligencją i okazuje się, że ten temat naprawdę jest na tyle interesujący, na tyle dużo osób wyraziło swoje zainteresowanie, że zdecydowałem się wydzielić całkowicie osobną społeczność ludzi zainteresowanych, przede wszystkim programistów zainteresowanych tematami związanymi ze sztuczną inteligencją, ale też różnego rodzaju automatyzacjami no-code i low-code.
Dlatego, że staram się znaleźć takie rozwiązanie, które będzie z waszego punktu widzenia jak najlepsze. No i jedną z rzeczy, którą dzisiaj testuję jest to, że nie mamy wideo. Mamy tylko i wyłącznie samo audio. I jestem ciekaw, co o tym myślisz. I będę bardzo wdzięczny za taką krótką informację zwrotną, jaka forma najbardziej Ci się odpowiada, czego też oczekujesz od tego typu komunikacji. Możesz się ze mną skontaktować np. pisząc do mnie na LinkedIn lub w dowolny inny sposób znajdziesz mnie w wielu różnych kanałach. I przechodząc już do głównej części naszych rozważań, zacznijmy w ogóle od podstaw i odpowiedzmy sobie na pytanie, co to właściwie jest prompt.
Możemy w takiej najprostszej postaci powiedzieć, że jest to tekstowa instrukcja, Sprawny Programista. Ale jak za chwilę się też przekonamy, może to być bardziej skomplikowana taka struktura tekstowa. No i przykłady prostych promptów. Taki totalnie najprostszy. Możemy zadać pytanie, co to jest sztuczna inteligencja? Czyli mamy pytanie, wysyłamy to do naszego promptu i oczekujemy, że dostaniemy jakąś odpowiedź. Ale możemy też bardziej skomplikować te nasze pytania. Na przykład, wciel się w programistę Java z 10-letnim doświadczeniem.
I napisz kod w Java, który sortuje listę liczb w porządku rosnącym. I zobacz, że ten prompt jest już dużo bardziej zaawansowany, bo nie tylko dokładnie określiliśmy, czego my tutaj oczekujemy, ale daliśmy też dużo więcej kontekstu dla naszego modelu, bo chociażby poprosiliśmy go, żeby wcielił się w jakąś rolę, czyli wciel się w programistę Java, więc bardzo dokładny kontekst, ale jeszcze to uszczegółowiamy z dziesięcioletnim doświadczeniem. I zobacz, jeżeli wcześniej my tego nie podaliśmy, to model językowy nie do końca wiedział, jakiej my odpowiedzi oczekujemy, czego my właściwie chcemy, bo wyobraź sobie taki totalnie skrajny przypadek. Jeżeli zadamy pytanie, co to jest sztuczna inteligencja i zadamy to jakiemuś przedszkolakowi, no to przecież będzie to inna odpowiedź, niż gdybyśmy zadali właśnie programiście Java z 10-letnim doświadczeniem.
A to jest tylko jeden przykład, jakby w podobny sposób Możemy przejść dalej i nadawać inne fragmenty tego naszego kontekstu. I dlatego jest bardzo istotne, żebyśmy dobrze określali to, co my oczekujemy, ale też wszystkie informacje, jakie my przekazujemy w ramach tego promptu do naszego modelu. On nie ma więcej tych informacji. On, możemy o AI myśleć jako takim bardzo zaawansowanym specjaliście, który jest zamknięty w pomieszczeniu i on ma dostęp do naprawdę ogromnej wiedzy, ale komunikujemy się z nim tylko i wyłącznie przez taką dziurkę od klucza. Czyli on nie widzi tego, co my bezpośrednio, nie siedzi w naszej głowie i jeżeli chcemy, żeby coś dla nas zrobił, to wszystkie te dokładne informacje musimy mu przekazać w ramach naszego promptu.
Oczywiście on podejmie jakby jakieś decyzje w trakcie generowania odpowiedzi, ale niekoniecznie te decyzje, które on będzie podejmował, będą spójne z tym, co my chcemy. Podsumujmy w takim razie tę pierwszą część i odpowiedzmy sobie na pytanie, jakie jest tak naprawdę znaczenie dobrze sformułowanego, dobrze przygotowanego promptu. I wypisałem sobie tutaj kilka takich rzeczy. Pierwsza, na pewno bardzo podstawowa, to precyzja odpowiedzi. Im dokładniej Jak rozmawiać z AI, żeby chciało nas słuchać. Names mentioned.
Oczywiście, jeżeli korzystamy tutaj z tej formy z czatem, to możemy później poprosić o to, żeby uszczegółowił niektóre rzeczy, czyli możemy poprosić, żeby skupił się na jednym konkretnym aspekcie, ale wtedy jakby cała ta komunikacja oczywiście się wydłuża, też ta historia naszej rozmowy dodawana jest do promptu. Więc potencjalnie istnieje dużo większe ryzyko, że ta komunikacja się rozmyje. To tak jakbyśmy rozmawiali z żywą osobą. Im dokładniej określimy to, co chcemy, tym istnieje dużo większa szansa, że szybciej dostaniemy tą odpowiedź. A jak rozbijemy tą naszą komunikację na kilka dodatkowych iteracji, czyli poprosiłem Ciebie O jedną rzecz, później dodałem jeszcze drugą, później jeszcze trzecią, to istnieje ryzyko, że o tej pierwszej rzeczy, o którą poprosiliśmy nasz rozmówca już zapomniał.
No i w przypadku komunikacji z modelami językowymi naprawdę wygląda to bardzo podobnie. Trzecia rzecz, dlaczego ma to jeszcze bardzo duże znaczenie, no unikanie błędów. Niewłaściwie skonstruowany prompt może doprowadzić do błędnej interpretacji i niepożądanych wyników. Czyli im precyzyjniej, ale też jeżeli będziemy na przykład unikali różnego rodzaju nieścisłości. Znowu podam tutaj analogię do komunikacji z żywym człowiekiem. Jeżeli poprosimy kogoś, Żeby przyniósł nam na przykład zamek, no to zamek nie jest jednoznacznym słowem. I oczywiście wielu rzeczy możemy się domyślić z kontekstu, ale czasami nasz rozmówca, czy w tym wypadku sztuczna inteligencja, może podjąć niewłaściwą decyzję.
A pamiętajmy, że jeżeli już będziemy wykorzystywali taką komunikację w naszych aplikacjach, to my tak naprawdę będziemy płacili czy ponosili te koszty za każdy token, który zostanie wysłany. Zarówno jeżeli chodzi o ten, który będzie w promcie, ale również ten, jeżeli chodzi o odpowiedź. Więc im szybciej uzyskamy to, czego chcemy, tym zapłacimy mniej za takie wywołanie. Skoro wiemy w takim razie już, dlaczego ta komunikacja ze sztuczną inteligencją jest tak ważna, no i co może się stać, kiedy po drodze coś pójdzie nie tak, przejdźmy do kolejnej części i zastanówmy się, jak mamy zaprojektować, jak mamy zrobić tą komunikację, żeby rzeczywiście ona działała na jak najwyższym poziomie. Przygotowałem kilka takich kluczowych elementów, jak powinniśmy projektować nasze prompty.
Można powiedzieć taki punkt wyjścia, No do pracy już jako prawdziwy prompt engineer. Pierwsza rzecz, na którą warto na pewno zwrócić uwagę, to klarowność naszej komunikacji, czyli ten prompt powinien być jasny, powinien być zrozumiały, unikamy takiego skomplikowanego, niejednoznacznego, Jeżeli tylko mamy możliwość, staramy się używać jasnych poleceń. Przykładowo, zamiast pytać, czy możesz napisać artykuł, lepiej będzie, jeżeli powiemy coś takiego. Napisz artykuł na temat korzyści z używania AI w medycynie, uwzględniając trzy główne obszary zastosowania. Zobacz, dużo bardziej kolorownie, dużo bardziej precyzyjnie.
Tak komunikacją z żywą osobą. Jeżeli opowiemy przez pół godziny o całej naszej sytuacji, co tam robiliśmy wcześniej przez święta i w wakacje, a między wierszami delikatnie o coś poprosimy, żeby pożyczył nam 1000 zł, no to to gdzieś tam zginie w tej całej komunikacji. Ale jeżeli w tym kontekście będą tylko najistotniejsze informacje i nasza prośba, no to Czyta żywa osoba, czy sztuczna inteligencja też dużo łatwiej będzie miała, żeby to wszystko zrozumieć. Także kontekst. Przykładowo, jak możemy to zrobić? Tak mógłby wyglądać taki prompt. Mam blog i społeczność ludzi zainteresowanych nauką programowania, wejściem do IT i byciem lepszym programistami. Dokładnie określiłem cały kontekst. I teraz moja prośba.
I same wyjście, ten oczekiwany rezultat, też jak najbardziej możemy dokładnie doprecyzować. Kolejny przykład. Jeżeli potrzebujesz odpowiedzi w jakimś określonym formacie, zaznaczamy to w tym prompcie. Wymień trzy główne korzyści z używania AI w edukacji w formie punktów. Wymień trzy główne. Więc oczekujemy, że dostaniemy trzy punkty w odpowiedzi, gdybyśmy chcieli to Jak rozmawiać z AI, żeby chciało nas słuchać. Format oczekiwany.
Warto też określić, co ja chcę, po co ja tego potrzebuję. Jeżeli ja generuję ten jakiś fragment kodu, no to mógłbym dodać, że później będę chciał wykorzystać ten fragment kodu do zapisu dużej ilości danych. I zobacz jaką to niesie dodatkową informację. Już w tym momencie model językowy ma informację, że ja wykorzystam to nie do zapisania jednej czy dwóch gdzieś prostych liczb, ale do dużej, dużej ilości danych. W ogóle moglibyśmy jeszcze precyzyjniej określić, na przykład tysiąca linijek tekstu czy czegoś w tym stylu. I on wtedy dopasuje te swoje rozwiązanie konkretnie do naszych oczekiwań. No i ostatni, piąty punkt, któremu się przyjrzymy, to sama struktura naszego promptu, dlatego że dobrze zorganizowany prompt, a w momencie kiedy dodamy te wszystkie rzeczy, o których mówiliśmy sobie wcześniej, będzie zdecydowanie bardziej rozbudowany niż takie proste zapytania, więc musimy określić tą naszą strukturę, która ma wręcz jasno wydzielone takie części.
I to pomoże łatwiej wtedy przekazać te wszystkie nasze intencje. Najczęściej robimy to w taki sposób. Na początku mamy wcielenie się w jakąś rolę, czyli te nasze wcześniejsze przykłady. Pracuj jako programista z 10-letnim doświadczeniem, pracuj jako copywriter. Możemy właśnie tutaj uszczegółowić specjalizujący się w czymś. Później określamy nasz kontekst, czyli możemy napisać to, co mówiliśmy sobie wcześniej, że mam. Społeczność, ludzi zainteresowanych nauką programowania i wszystkie tutaj rzeczy z kontekstu wymieniamy. Kolejna rzecz, zadanie, polecenie, to czego my konkretnie oczekujemy, o co prosimy. Przykłady, oczekiwany rezultat. Czasami niektóre rzeczy jak ograniczenia, takie najważniejsze rzeczy, jeżeli ten nasz prompt rzeczywiście jest dosyć długi, warto jeszcze na samym końcu
Jak rozmawiać z AI, żeby chciało nas słuchać. Wirtualnego asystenta nauki programowania. Ja wiedziałem, że ten prompt będzie testowany przez ludzi, no przez Was, przez najróżniejsze sposoby. No i było pewne, że ktoś wpadnie na pomysł, żeby go wykorzystać nie tylko do nauki programowania, ale właśnie, żeby zobaczyć jak on się zachowa, jeżeli podamy mu jakieś bardzo złośliwe dane, jak chociażby poprosimy go, żeby napisał nam przepis, Sprawny Programista.
Oczywiście gdzieś w kolejnych odcinkach wrócimy do tego tematu. Ale podsumowując tą część, widzisz, że nie jest to takie trywialne, jak na początku mogłoby się wydawać. Naprawdę wiele rzeczy wpływa na to, jak my przygotowujemy ten prąd, czego też my oczekujemy i jaka będzie ta odpowiedź. Właśnie dlatego coraz więcej osób specjalizuje się w przygotowywaniu takiej całej komunikacji ze sztuczną inteligencją, czyli płynnie dochodzimy do kolejnej naszej części, czyli do roli Prompt Ingeniera. Kim w takim razie jest Prompt Ingenier i jakie ma zadania? Jest to specjalista, który będzie nam projektował i optymalizował, przygotowywał Nasze prompty do komunikacji ze sztuczną inteligencją w jakimś konkretnym celu.
Trochę to, co robił do tej pory taki analityk w firmie. I kiedy mamy te rzeczy już zrobione, oczywiście taka osoba też może z analitykiem współpracować, no to w drugim kroku trzeba to przetłumaczyć. I on jest takim pośrednikiem. Tłumaczy to w tym wypadku na nasz Kolejny krok, tworzenie promptów. Sprawny Programista.
Jedną wersję wcale nie znaczy, że będzie to działało tak samo na innej wersji. Tutaj jest jeszcze troszeczkę dziki zachód, tak jak było te kilkanaście lat temu, jeżeli chodzi o frontend. Jeżeli wcześniej zdarzyło Ci się projektować właśnie strony internetowe jeszcze za czasów wczesnych wersji Internet Explorer, było to naprawdę bardzo trudne. Na różnych wersjach, na różnych przeglądarkach te strony nie działały całkowicie. I nie było to łatwe i w tym momencie wygląda to trochę podobnie, jeżeli chodzi właśnie o modele językowe. Jeden prompt może się całkowicie zachowywać na różnych wersjach, nawet niby ten sam model, ale on też przecież jest co jakiś czas aktualizowany, są wprowadzone czasami nowe ograniczenia, które teoretycznie mają nas bronić przed jakimiś niechcianymi zachowaniami.
Ale zmodyfikuje to już nasz wynik, więc niekoniecznie dostaniemy to, czego spodziewaliśmy się wcześniej. No i powiązana z tym rzecz optymalizacja. No chcemy jak najmniej płacić, chcemy uzyskać jak najlepsze wyniki, więc jest to zdecydowanie proces iteracyjny. Rzadko się zdarza, że ta pierwsza wersja promptu, którą przygotuję, jest tą finalną. Tylko właśnie to trochę żyje. Dodaję jakieś rzeczy, usuwam coś tam, coś tam po drodze zmieniam. Gdzie w praktyce takie kompetencje jeszcze mogą nam się przydać? Przede wszystkim do tworzenia różnego rodzaju treści, tak jak wspomniałem wcześniej, ja chociażby wykorzystuję to do przygotowania treści na naszego bloga. Tylko tutaj taka uwaga, o ile mamy odpowiednie umiejętności techniczne, jeżeli chodzi o daną wiedzę, w tym wypadku, jeżeli chodzi o mnie, programowanie i potrafimy komunikować się ze sztuczną inteligencją, mamy też podstawy marketingu,
To naprawdę jest to potęga, możemy uzyskać genialne wręcz wyniki, ale znowu istnieje tutaj ogromne ryzyko, że jakaś osoba, która nie miałaby chociażby odpowiednich kompetencji, żeby zweryfikować później te wyniki, jakie dostaniemy, po prostu rzuciłaby to dalej. Niestety, a może właśnie niestety, bardzo często dostaje wyniki, które no nie nadają się do tego, żeby opublikować, albo są zbyt płytkie, Kolejna rzecz, wsparcie techniczne dla innych osób. Zobacz, że mając takie kompetencje, możemy też pomóc innej osobie przygotować taką komunikację ze sztuczną inteligencją albo dostać taki prompt do odpowiedniej optymalizacji.
Coraz częściej przygotowuje się różnego rodzaju chatboty, jak chociażby ten, który my już obecnie przygotowaliśmy, wspomagający naukę programowania. Też tutaj nie obyło się bez różnego rodzaju trudności, bo przygotowanie takiego promptu, który byłby na tyle użyteczny, że jednak daje odpowiedzi, które są zrozumiałe dla osoby, która dopiero uczy się programowania, które nie prowadzą go w błąd, jednak wymagało całkiem sporo tutaj wysiłku. No i oczywiście możemy też te rzeczy wykorzystać przy generowaniu różnego rodzaju materiałów edukacyjnych. Osobiście często wykorzystuję właśnie przy pomocach dla naszych kursantów, przy tworzeniu nowych programów. Na przykład można wygenerować w prosty sposób jakiś quiz albo listę jakichś pomysłów.
No i tutaj już to naprawdę genialnie się sprawdza. Ostatni przykład, z którego stosunkowo niedawno korzystałem, była to analiza ankiet i wcześniej jak musiałem dużą ilość ankiet sprawdzić ręcznie, wyciągnąć wnioski z tych ankiet, naprawdę było to trudne zadanie, przede wszystkim czasochłonne. W tym wypadku mogę wrzucić wszystkie te odpowiedzi i poprosić o podsumowanie, o streszczenie, o wyciągnięcie głównych wniosków, głównych problemów, jakie mają osoby, które odpowiadały na te pytania. Więc taka analiza biznesowa świetnie się sprawdza. Ale oczywiście dostaniemy dużo lepsze wyniki, jeżeli napiszemy odpowiedni prompt, czyli jeżeli w ramach kontekstu przekażemy te odpowiedzi, jeżeli poprosimy go, żeby na przykład wcielił się w analityka biznesowego, który specjalizuje się w naszej dziedzinie, w tym wypadku, jeżeli chodzi o naukę programowania, wtedy dostaniemy całkowicie inne wyniki.
Pokazano pierwszych 25 dopasowań — doprecyzuj frazę, aby zawęzić wyniki. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Kliknij, aby znaleźć fragmenty, w których pada.
https://stormit.pl/prompt-engineer/