Czatboty: jak się z nimi dogadać?

Czatboty: jak się dogadać?

Budowanie skutecznego zapytania

Witaj ponownie! W poprzednim artykule pisałam o LLM’ach, bezpieczeństwie i ochronie danych w trakcie korzystania z ogólnodostępnych czatbotów.

Myślałeś już o tym, na którym etapie pracy projektowej możesz wykorzystać ChatGPT lub Gemini? A może znalazłeś innego ogólnodostępnego czatbota, który pomaga w pracy kierownika projektu? Potrzebujesz pomocy przy stworzeniu uniwersalnego szablonu wiadomości email, który wyślesz wybranym interesariuszom (patrz poprzedni artykuł), a może zależy ci na szczegółowej analizie danych umieszczonych w tabeli?

W każdym z tych przypadków przydatne będzie skuteczne zapytanie, czyli prompt. Zanim jednak przejdę do tego tematu, opiszę format danych wynikowych, które, jeśli umiejętnie zapytasz, zwróci ci chatbot.

Idź po wynik

Czy wiesz, że wynikiem prompta może być nie tylko tekst? Jeśli dokładnie określisz, czego potrzebujesz, to popularne czatboty mają dużo większy wachlarz formatów do zaoferowania. Są to formaty, które ułatwią ci stworzenie prostych aplikacji czy stron internetowych, obróbkę dużej ilości danych, wygenerowanie arkuszy kalkulacyjnych oraz wykonanie innych zadań, które zazwyczaj wymagają dużo technicznej wiedzy i czasu.

Listę dostępnych formatów najlepiej zapytać u źródła. Poniżej umieszczam doprecyzowaną przeze mnie odpowiedź ChatGPT.

  • Tekst – dane w formacie tekstu.
  • JSON (JavaScript Object Notation) – lekki format wymiany danych, który jest łatwy do odczytu i zapisu dla ludzi oraz łatwy do przetwarzania i generowania przez maszyny. Jest często używany do przesyłania danych w aplikacjach internetowych.
  • CSV – format pliku używany do przechowywania danych tabelarycznych. Każdy wiersz w pliku CSV reprezentuje jeden rekord w tabeli, a pola w rekordzie są oddzielone przecinkami. Format ten jest szeroko stosowany do importowania i eksportowania danych w arkuszach kalkulacyjnych oraz w bazach danych.
  •  XML – uniwersalny format do reprezentowania danych w strukturze hierarchicznej, który jest zarówno czytelny dla ludzi, jak i maszyn. XML jest szeroko stosowany w różnych aplikacjach do przechowywania i wymiany danych.
  • Markdown – lekki język znaczników, który jest łatwy do czytania i pisania dla ludzi, a jednocześnie może być przekształcany w różne formaty, takie jak HTML, PDF, itp. Markdown jest szeroko stosowany w dokumentacji, blogach, forach dyskusyjnych i innych miejscach, gdzie tekst wymaga formatowania.
  • HTML – standardowy język znaczników używany do tworzenia stron internetowych. HTML opisuje strukturę dokumentu webowego za pomocą znaczników (tagów). Każdy znacznik HTML określa różne elementy dokumentu, takie jak nagłówki, paragrafy, linki, obrazy, listy itp.
  • Python / Pandas DataFrame – dwuwymiarowa, tabelaryczna struktura danych w języku Python, która jest częścią biblioteki pandas. DataFrame zawiera etykietowane osie (wiersze i kolumny) i jest jednym z podstawowych narzędzi do analizy i manipulacji danymi w Pythonie.

No dobrze, ale jeżeli potrzebujesz tabeli lub wykresu, to czy ją otrzymasz? Odpowiem jednym słowem – tak. ChatGPT wygeneruje odpowiedź w którymś z formatów, które opisałam powyżej, a później ją odpowiednio zinterpretuje. Na przykład, jeżeli poprosisz o wykres, to wygeneruje kod programu w języku Python, który wykorzystuje bibliotekę Matplotlib, a następnie uruchomi go i zwróci to, o co prosiłeś, czyli wykres. A jeżeli chcesz później taki wykres lub tabelę edytować w innym programie, to też będziesz miał taką możliwość, wystarczy, że wspomnisz o tym w zapytaniu. W dalszej części artykułu wkleję wykres Gantta, który wygenerował mi ChatGPT.

Gemini, niestety, nie ma takich możliwości – zwróci prostą tabelę, ale nie zwróci wykresu. Może natomiast wygenerować wynik w postaci tekstu, HTML’a, XML’a, JSON’a i CSV. Oczywiście, możesz to później przenieść do innych programów i odpowiednio obrobić.

Prompt, czyli co?

Wiesz już, jaki format odpowiedzi oczekujesz od czatbota, to teraz skupmy się na samym zapytaniu. Wyobraź sobie, że prompt to klucz, który otwiera drzwi do wiedzy i umiejętności czatbota. To, jak dokładnie dopasujesz ten klucz, ma ogromne znaczenie dla tego, co znajdziesz po drugiej stronie otwieranych drzwi.

Ja tu metaforycznie o kluczach i drzwiach piszę, ale jak ten prompt przygotować? W tej części artykułu postaram się przybliżyć tworzenie instrukcji, które wpiszesz w okno czatbota, aby otrzymać najlepszy wynik.

Skuteczny prompt powinien zawierać jak najwięcej informacji, ale powinien być również jasny i konkretny. Poniżej przedstawię kilka elementów, które pomogą zbudować zapytanie, które zwróci satysfakcjonujący cię wynik:

  • Zacznij od kontekstu i celu zapytania – podaj dodatkowe informacje i okoliczności, które pomogą lepiej zrozumieć twoje potrzeby i cel zapytania. Napisz, do czego wykorzystasz odpowiedź czatbota, a on potraktuje to jako wytyczne. Podając kontekst, dostarczasz niezbędnych informacji, które pozwolą na udzielenie bardziej precyzyjnej, trafnej i użytecznej odpowiedzi.
  • Zadbaj o jasność i zwięzłość – unikaj niejednoznaczności i żargonu. Używaj prostego i zrozumiałego dla każdego języka. Dziel długie pytania na krótsze, bardziej szczegółowe.
  • Wybierz format odpowiedzi – napisz, jaki wynik chcesz otrzymać. Czy ma to być tekst, lista punktowana, wykres, a może tabela? Napisz, czy odpowiedź ma być szczegółowa, czy zwięzła.
  • Nie zapomnij o osobie, do której ma być zaadresowana (np., email do zarządu, do zespołu, do najemcy, do kontrahenta, etc.).
  • Dodaj szczegóły, które uważasz za ważne – np., liczba akapitów, styl wypowiedzi (formalny, nieformalny, zabawny, merytoryczny, naukowy, etc.).
  • Podaj przykłady lub odniesienia – pomogą czatbotowi w lepszym zrozumieniu, na czym ma się wzorować.

Teoria a praktyka

Tyle z teorii, przejdźmy do praktyki. Załóżmy, że jesteś kierownikiem projektu X i na dzisiejsze spotkanie z zarządem potrzebujesz raportu, w którym zawarte będą informacje na temat postępów w projekcie. Przygotowałeś odpowiednie dane z uwzględnieniem wskazówek, dotyczących bezpieczeństwa, o których pisałam w poprzednim artykule. Przykładowe zapytanie z rozbiciem na poszczególne elementy mogłoby wyglądać w następujący sposób:

  • [Kontekst i cel] – Stwórz mi wykres Gantta w formie graficznej oraz raport statusowy dla zarządu na temat postępów w projekcie X.
  • [Osoba i styl] – Raport będzie przedstawiony przed zarządem, powinien być sformułowany w sposób formalny.
  • [Format] – Chciałabym, aby zawierał tabelę z informacjami o poszczególnych zadaniach, w tym nazwę zadania, odpowiedzialną osobę, datę rozpoczęcia, datę zakończenia oraz aktualny status.
  • [Szczegóły] – Dodatkowo proszę o akapit podsumowujący, który będzie skierowany do zarządu i w zwięzły sposób opisze najważniejsze postępy, ewentualne ryzyka i usprawnienia. Użyj danych zawartych w tabeli poniżej.

Tabela z zadaniami:

Zadanie Odpowiedzialny Data rozpoczęcia Data Zakończenia Status
Analiza wymagań A. K. 2024-06-01 2024-06-10 W toku
Projektowanie UI J. N. 2024-06-11 2024-06-20 Zaplanowane
Implementacja Zespół Dev 2024-06-21 2024-07-10 Zaplanowane
Testowanie Zespół QA 2024-07-11 2024-07-20 Zaplanowane

Zdaję sobie sprawę z tego, że podany przeze mnie przykład przedstawia uproszczoną sytuację, a w rzeczywistych projektach musisz się mierzyć z bardziej złożonymi problemami oraz z większą ilością danych. Przykład ten jednak pokazuje, jak możesz wykorzystać czatboty w codziennej pracy.

Poniżej umieszczam odpowiedź, którą otrzymałam od ChatGPT na przygotowany przeze mnie prompt. Jeśli masz ochotę, sprawdź, jaką odpowiedź wygeneruje tobie.

Odpowiedź na zapytanie o raport do projektu X, wygenerowana przez ChatGPT
Odpowiedź na zapytanie o raport do projektu X, wygenerowana przez ChatGPT, wykres Gantta

Halucynacje i inne pułapki

Zakładam, że udało ci się wygenerować wynik, którego oczekiwałeś. Możliwe, że jesteś zaskoczony tym, w jak łatwy sposób możesz uprościć swoją pracę. Rzeczywiście, umiejętne posługiwanie się czatbotami skraca czas wykonywanych zadań. Teraz jednak zatrzymaj się, zanim bezkrytycznie wkleisz odpowiedź czatbota do swojego raportu.

Czy słyszałeś o tym, że czatboty halucynują? Zapytasz pewnie, jak to jest możliwe, skoro przekazałeś mu wszelkie potrzebne informacje, a twój prompt przygotowany był zgodnie z wskazówkami, które opisałam powyżej?

Niestety, musisz pamiętać o tym, że na obecnym etapie zaawansowania czatboty potrafią generować wyniki, które są nieprawdziwe, niespójne i wprowadzające w błąd. To nie znaczy, że każdy wynik, który otrzymasz, będzie błędny. Z mojego doświadczenia wynika, że w większości przypadków wystarczy tylko uważnie przeczytać i wprowadzić drobne poprawki, dopasowując treść do swoich potrzeb. Natomiast w sytuacjach, kiedy wymagasz merytorycznej odpowiedzi, bazującej na najnowszych danych, musisz szczególnie uważać na niedokładne lub nawet skonfabulowane informacje, zwane halucynacjami. Mogą przybierać różne formy w zależności od kontekstu i zadań. Pomimo swojej potwierdzonej użyteczności, czatboty potrafią wplatać pomiędzy fakty również te nieistniejące.

Poniżej zabawny przykład halucynacji dotyczącej cytatu z utworu literackiego. Proponuję odkryć „nieścisłości” samodzielnie. Zwróć uwagę na to, jak uporczywie czatbot trzyma się swojej wersji, potwierdzając ją dowodami, które sam tworzy.

ChatGPT halucynacja

Czemu duże modele językowe halucynują? Jest kilka możliwości takiego zachowania:

  • Brak pełnych informacji – model może nie mieć dostępu do pełnych informacji lub danych potrzebnych do dokładnej odpowiedzi. Dlatego, jeżeli zależy ci na jakościowych wynikach, dostarczaj modelowi jak najpełniejszej informacji.
  • Jakość danych treningowych – modele językowe uczą się na dużych zbiorach tekstów, które mogą zawierać błędy, nieścisłości lub dezinformacje.
  • Złożoność języka – naturalny język jest niezwykle złożony i pełen niuansów, co może prowadzić do błędów w interpretacji i generowaniu odpowiedzi.
  • Optymalizacja pod kątem płynności – modele językowe są stworzone tak, aby generować teksty, które brzmią płynnie i naturalnie, ale czasami stawiają one te cechy ponad dokładnością informacji.

Moja rada na zakończenie tego artykułu? Znajdź zadania, w których możesz wykorzystać ogólnodostępne czatboty. Zacznij od tych prostych, a później przejdź do tych bardziej pracochłonnych i skomplikowanych. Poświęć swój czas i wysiłek na naukę formułowania promptów. Ćwicz, testuj i nie zrażaj się drobnymi niepowodzeniami, a z upływem czasu dojdziesz do perfekcji. Pamiętaj o uważności i rozwadze, zwłaszcza w zadaniach wymagających dużej dokładności. Halucynacje są jednym z głównych wyzwań w rozwoju i zastosowaniu dużych modeli językowych. Świadomość ich istnienia oraz możliwych skutków pomaga w odpowiedzialnym korzystaniu z czatbotów.

Urszula Ćwiklińska

Dodatkowe materiały

Zapisz się na AgilePMOwy newsletter. Co tydzień otrzymasz od nas list, a w nim artykuły warte przeczytania, narzędzia do pracy z zespołami, wskazówki i ciekawostki odnośnie zarządzania projektami.