Przyszło mi do głowy, że mogę sobie podsumować co się ostatnio nauczyłem, i to też właśnie robię.
Że LLM fine-tuning nie zawsze jest konieczny
W pracy mamy swój własny język programowania (nieduży, do specyficznego zadania), wygląda trochę jak pseudocode i jako, że jest do specyficznego zadania, zawiera niewielką grupę instrukcji jak if/else
, operacje matematyczne i kilka tym podobnych.
Wiosną ubiegłego roku pomyślałem, że to dobra okazja by zobaczyć czym jest fine tuning: postanowiłem zrobić czata, który w odpowiedzi na pytanie (np, “policz ile to jest 2 + zmienna1, jeśli wynik będzie większy niż zmienna2, napisz ‘za dużo'”). Jako, że żaden model językowy nie zna naszego języka, postanowiłem za pomocą fine-tuningu nauczyć nowy model i go użyć. Wtedy zadziałało.
Firmie się spodobało i dostałem zadanie by czat był dostępny dla użytkowników naszych produktów. Tyle, że miałem to zrobić bez fine-tuningu.
Już miałem pójść w embeddings i zacząłem z nimi ekseprymentować, ale znajomy podpowiedział, że ju próbował przekazać dokumentację języka – okrojoną – zwyczajnie jako system prompt.
I faktycznie: pierwsze próby dały od razu pozytywne rezultaty, a dopieszczanie system prompt daje już rezultaty niemal idealne. Do tego stopnia, że spodziewajcie się, że napiszę więcej gdy produkt będzie już na rynku.
Skille podszlifowane: OpenAi API, fine tunning, embeddings i wyczajnie prompting.
Że web components są fajne
Czat ma bazować na UI, który już mamy do czatów w innych celach dodanych tu i tam. Całe UI to jeden HTML-pseudo-element napisany jako Web Component.
Spodobało mi się to do tego stopnia (działa to i wygląda podobnie do komponentów React, Svelte czy innych, tylko, że nie wymaga niczego więcej niż czystego JS i przeglądarki), że przez kilka dni myślałem co by tu dla siebie napisać w tym API i wymyśliłem: narzędzie do wrzucania obrazków ponad swoją stronę, z designu by porównywać z tworzoną stroną czy jest taka, jak grafik sobie zażyczył.
Jak to działa możecie zobaczyć tutaj (spójrzcie w prawy dolny róg), tu jest repo jeśli chcecie sami użyć (dodajcie wtedy na stronie element <pixel-perfect>
i tyle), a jeśli chcecie w postaci wtyczki do WordPressa to też oczywiście jest.
To była fajna zabawa, serio.
Skille: web components, shadow DOM, localStorage API i do tego kolejny raz użyte Github Pages.
Że takie narzędzia już są, ale to dobrze
Plugin wam nie zadziała z marszu, musicie sklonować repo i zrobić composer install
. Buildów nie zrobiłem, a tym bardziej nie wrzuciłem do repo WordPressa, bo gdy pokazałem to narzędzie w firmie, powiedziano, że przypomina już istniejące dodatki do przeglądarek. Tu dla Firefoksa, a tu dla Chrome.
Tak więc wtyczki dalej nie będę rozwijał (chyba).
Ale to, że narzędzia już istnieją przyjąłem z entuzjazmem. Nawet czułem, że musi być już coś takiego, ale nie szukałem, bo głównym celem było “użyć web components w czymkolwiek i nie patrzeć się na nic”. Chciałem się nauczyć nowej technologii i już umiem.
A czemu z entuzjamem? Było to dla mnie wielkie wow, jak bardzo trafiłem z wyborami:
- ta sama nazwa biblioteki jak istniejacych rozwiązań
- upload obrazka (to oczywiste)
- zmiana przezroczystości za pomocą suwaczka
- inwersja kolorów!
- przesuwanie obrazka po ekranie kursorem lub klawiszami strzałek (z shiftem przesuwa bardziej)
- zapamiętywanie położenia i parametrów pomiędzy odświeżeniami strony
Moja biblioteka i dostępna rozszerzenia robią dokładnie to samo choć nie podglądałem “konkurencji”. Cieszy mnie, że zrobiłem coś, tak jak tego oczekuje rynek.
Skille: samozadowolenie.
Że można hostować WordPressa jako static page
Dla mojej wtyczki WC Price History musiałem zrobić landing page. Domenę już mam w OVH i do niej za darmo mikrohosting więc stwierdziłem, że na jedną stronę, no może kilka, wystarczy.
Zdziwiłem się, że tam nie ma bazy danych, no ale dobra: za darmo. WordPress więc nie pójdzie, więc może jakiś static page?
Jako, że z designem u mnie nie najlepiej, mimo wszystko chciałem wykorzystać jakiś gotowy motyw WordPressa i Gutenberga do budowania blokowych treści.
I się udało, tu jest strona, zupełnie statyczna, a zbudowana w WordPressie. Jak?
- na localhost mam stronę normalną w WP
- za pomocą Gutenberga zbudowałem jej cały wygląd, to było w sumie pierwsze użycie (bez porażek) Gutenberga nie do edycji treści a budowy całego layoutu. Nadal nie jest to idealne user experience ale już zaczynam czuć to narzędzie
- za pomocą wtyczki Simply Static (wersji darmowej) generuję wersję statyczną
- potem przez ftp wysyłam do OVH. Automatyczne wysyłanie jest w wersji płatnej ale udało mi się je zastąpić prostym skryptem w bash.
Skille: już mi o wiele lepiej z Gutenbergiem, statyczne strony są szybkie, bash scripting
Web components i statyczne strony zainteresowało mnie Astro.
Powyższe doświadczenia plus ten film na youtube sprawiły, że wyszedłem troszkę z WordPressa i zacząłem szukać innych ciekawych rzeczy wokół JS. W filmie można zobaczyć jak duże frameworki JS wykorzystują web components i tag <template>
do streamowania danych i hydracji widoku użytkownika. Pomysłowe, sam myślałem, że to po prostu jakiś ajax.
W filmie pada stwierdzenie, że Astro to taki framework, w którym można używać Reacta, Svelte, Vue czy czego się chce do budowania komponentów (plus własne elementy Astro) i zacząłem czytać o tym więcej.
Rewelacyjny pomysł, szczególnie jeśli chcesz używać strony do nauki kolejnych frameworków. Znam już React i dość sporo wiem o Svelte (na poziomie stworzonych mini projektów). Jak stworzysz stronę w React, a chcesz się nauczyć Svelte to musisz stworzyć kolejną stronę lub przepisać poprzednią. A z Astro nie: jak masz już komponenty napisane w React, a chcesz się nauczyć Vue, po prostu piszesz kolejny moduł w Vue. I wszystko razem działa i wymienia między sobą informacje.
Astro jeszcze czeka na użycie, takie prawdziwe. Ale cała idea “static first”, wysp dynamicznych i ewentualnego SSR na koniec bardzo mi się podoba.
Skille: Astro, jak działa hydracja
To tyle z ostatniego miesiąca
To tylko ostatnie mniej więcej 40 dni, może mniej, a na pewno nie dzień w dzień. Raz na jakiś czas przychodzi mi taka maniakalna faza na poznawanie nowych rzeczy (a potem i tak kończę w WordPressie). Ale chyba każdy programista tak ma.
W komentarzach możecie mi podesłać swoje nowo nauczone rzeczy lub co jeszcze wokół tematów powyżej krąży i mógłbym poczytać. Jestem głodny 🙂
Dodaj komentarz