Niedawno brałem udział w kursie na patent Żeglarza Jachtowego. Na koniec każdy uczestnik przystępuje do egzaminu składającego się z części teoretycznej i praktycznej. Stwierdziłem, że jest to bardzo dobra okazja do przetestowania sztucznej inteligencji i sprawdzenia, czy jest w stanie pomóc mi w przygotowaniach. Oczywiście chodzi o część teoretyczną, bo w praktycznej AI raczej nie da rady :)
Okazało się, że egzamin teoretyczny na pierwszy stopień patentów żeglarskich (żeglarz jachtowy) nie jest taki prosty. Na 75 pytań możemy mieć tylko 10 błędnych odpowiedzi. Pytania mogą dotyczyć całego spektrum zagadnień związanych z żeglarstwem, czyli budowa jachtów, teoria żeglowania, ratownictwo na wodzie i pierwsza pomoc, przepisy, meteorologia, czy oznakowanie dróg wodnych. Jest to sporo materiału do “wkucia” i zastanawiałem się, co może mi w tym pomóc?
Wpadłem na pomysł, aby wykorzystać AI do stworzenia prostej aplikacji internetowej o roboczej nazwie “Fiszki”, która jak sama nazwa wskazuje, będzie prezentować karty z pojedynczymi pytaniami (tzw. fiszki) wraz z możliwymi odpowiedziami. Dzięki temu można szybko i sprawnie powtarzać materiał przerabiany na kursie, czy podczas lektury podręczników. Aby możliwie przyspieszyć cały proces, postanowiłem zaprząc do pracy AI, żeby nie tracić czasu na budowanie narzędzia do nauki, tylko poświęcić go na faktyczną naukę :) Poniżej przedstawiam pełny proces, który przeszedłem tworząc moją aplikację. Wszystko robiłem przy wykorzystaniu Chata GPT.
Jak zabrać się do tworzenia autorskiej pomocy naukowej?
Zacząłem od funkcji Deep Research w celu znalezienia w internecie bazy pytań, które pojawiają się na egzaminie. Otrzymałem ciekawe wyniki z kilkoma źródłami z dużymi listami pytań w pliku pdf. W dodatku były to strony, na które nie trafiłem wcześniej robiąc standardowy research poprzez Google.
Kolejnym krokiem było stworzenie klucza odpowiedzi, ponieważ niestety udało mi się znaleźć tylko same pytania i odpowiedzi bez wskazania, która jest prawidłowa. Tutaj również wykorzystałem AI (model Chat GPT o3). Samodzielne tworzenie klucza dla 700+ pytań byłoby zbyt czasochłonnym zadaniem. Okazało się, że AI całkiem dobrze poradziło sobie ze znalezieniem poprawnych odpowiedzi. Niestety chciałem, aby od razu wszystkie pytania, odpowiedzi oraz poprawną odpowiedź zapisać w pliku json wg poniższego schematu, ale niestety tutaj już nie dawało rady :/
Przykładowe pytanie w formacie json:
{
"id": 16,
"question": "Jak nazywają się liny służące do ustawiania żagli względem wiatru? ",
"category": "budowa_jachtu",
"answer_1": "szoty ",
"answer_2": "fały ",
"answer_3": "wanty ",
"correct_answer": 1
}
Musiałem w osobnym wątku konwersacji wstawić listę pytań wraz kluczem odpowiedzi i wzorem, według którego ma powstać gotowy plik json. Również trzeba było podzielić pytania na mniejsze kawałki, bo Chat GPT nie dawał rady obrobić wszystkich na raz. Jednak finalnie po kilku iteracjach uzyskałem klucz odpowiedzi dla każdej kategorii pytań w pożądanym formacie.
W tym momencie można zadać pytanie, czy na pewno można zaufać AI w kwestii znalezienia prawidłowych odpowiedzi? Też się nad tym zastanawiałem, ale stwierdziłem, że nie mam czasu na analizowanie każdego pytania i po prostu trochę zaryzykuję. Podczas nauki z moją aplikacją, kiedy miałem jakiekolwiek wątpliwości, co do poprawności odpowiedzi w kluczu, to dodatkowo sprawdzałem ją ręcznie. Okazało się, że znalazłem 6 błędnych odpowiedzi, co przy tej liczbie pytań daje wynik poniżej 1% błędów, który uważam za naprawdę niski.
W takich sytuacjach dobrą metodą jest tzw. sampling review. Wybieramy losową próbkę pytań i weryfikujemy je z innymi źródłami. W ten sposób można szybko sprawdzić, czy odpowiedzi znalezione przez AI rzeczywiście są prawdziwe i od razu poznamy skalę błędnych wyników. W moim przypadku podczas rozwoju aplikacji cały czas przeglądałem pytania i jeśli jakakolwiek odpowiedź wydawała mi się wątpliwa lub mało prawdopodobna, to ją dodatkowo sprawdzałem.
Jak “stworzyłem” aplikację od zera dzięki AI?
Z gotowym kluczem mogłem przystąpić do pracy nad faktyczną aplikacją. Miałem tutaj następujące założenia:
- ma to być prosta aplikacja stworzona w HTML/JS w formie tzw. single page app.
- aplikacja powstaje przy użyciu vibe-codingu tj. cały kod generuje AI i ja się do tego nie dotykam.
- celem tego narzędzia jest wyświetlanie kart z pytaniem (tzw. fiszki) i sprawdzenie, czy znam prawidłową odpowiedź. Najważniejsze jest poprawne działanie aplikacji i nie skupiam się w ogóle na warstwie estetycznej.
- stosuję metodę “spaced repetition”, czyli każde pytanie w zależności od dobrej lub złej odpowiedzi ze strony użytkownika, wpada do odpowiedniego “koszyka”. Celem jest przerzucenie wszystkich pytań z koszyka 1 do koszyka 5.
- za każdym razem kolejność wyświetlanych odpowiedzi jest losowa.
- aplikacja ma “sama pamiętać” status mojej sesji bez żadnego logowania, kont użytkownika itd.
- wszystko ma być tak proste, jak się tylko da pod kątem technicznym.
W tym aspekcie AI bardzo dobrze sobie poradziło i dosłownie po kilku promptach miałem działającą pierwszą wersję aplikacji dla pojedynczej kategorii pytań. Pewnym ułatwieniem było to, że ogarniam HTML i podstawy JS, ale każdy mógłby coś takiego stworzyć i uruchomić bez większego doświadczenia.
Wszystkie szczegóły techniczne działania aplikacji oraz pełny kod znajdują się na moim repozytorium: https://github.com/wojciechkarcz/fiszki
Aplikacja w takiej formie może jak najbardziej funkcjonować całkowicie lokalnie na komputerze i nie ma potrzeby publikowania jej w internecie. Na tym polega też piękno konceptu tzw. single page app działających w oknie przeglądarki.
Pro tip
Kiedy mamy pomysł na własny “program” lub aplikację, to można poprosić AI o przygotowanie kodu właśnie tylko za pomocą HTML/JS w formie single page app. Dzięki temu otrzymujemy na koniec zwykły plik .html, który otworzymy w każdej przeglądarce i mamy działającą aplikację z prostym interfejsem graficznym.
Kolejnym krokiem było już dodawanie kolejnych funkcjonalności i testowanie, czy zmiany działają poprawnie. Po kilkunastu iteracjach uzyskałem efekt końcowy, który można zobaczyć pod adresem: http://egzamin.tojest.dev
Wnioski i przemyślenia
W dosyć krótkim czasie udało mi się całkowicie od zera za pomocą AI stworzyć spersonalizowaną aplikację, która efektywnie pomogła mi przygotować się do egzaminu żeglarskiego, który zdałem bez większego problemu. Nie jest to oczywiście coś super zaawansowanego, ale działa i realizuje wszystkie moje specyficzne założenia.
Poza tym dawno nie miałem okazji przystąpić do takiego tradycyjnego testu, gdzie trzeba “wkuć” sporo materiału. W takim wypadku metoda fiszek i spaced repetition sprawdza się idealnie. Polecam wszystkim to podejście w podobnych sytuacjach.
Wraz z coraz większymi możliwościami nowych LLMów otwierają się interesujące opcje wykorzystania ich do tworzenia mocno zindywidualizowanych pomocy naukowych. Mój skromny mini projekt jest tylko demonstracją, jak możemy już teraz wykorzystywać AI do nauki. Na pewno będę dalej eksplorował to podejście przy okazji kolejnych wyzwań.
Jestem bardzo ciekaw, czy ktoś z Was wykorzystał AI (lub planuje) do stworzenia pomocy naukowej?