Jeśli myślisz, że Java nie wsiadła do hype train związanymi z LLM – źle myślisz. Dlatego dzisiaj zrobimy sobie przegląd po narzędziach.
Ostatnimi czasy zastanawiałem się jak urozmaicić nasze edycje, i od dłuższego czasu przymierzałem się do tego, żeby ostatnia edycja każdego miesiąca była poświęcona ciekawym projektom JVM-owego Open-Source, które pojawiły się (lub zaczęły trendować, bo to też się zdarza) przed ostatni miesiąc. Ale nie takiego Open-Source jak Micronaut czy Smallrye – raczej takich Hidden Pearls naszego community. Jako, że wakacje jak zawsze są nieco spokojniejszym okresem, akurat przydarza się dobra okazja. Dodatkowo, pewnym zaskoczeniem (choć właściwie nie wiem dlaczego, mogłem się spodziewać) jest fakt, że wyszło nam bardzo tematycznie.
2023 to rok LLMów, i choć JVM nie do końca kojarzy się z tym ekosystemem, to jednak również i jego nie ominęła fala hype. Dlatego mam dla was dzisiaj czterech projektów, a każdy z nich w jakimś stopniu dotyka tematu modeli językowych. Przy okazji porozmawiamy sobie o projektach i koncepcjach, na których każda z zaprezentowanych bibliotek bazuje.
VertexAI-kt
Ja wiem, że w masowej świadomości istnieje głównie OpenAI i ChatGPT, ale pozostali gracze też posiadają swoje rozwiązania. Taki Vertex AI od Google to wszechstronna platforma do uczenia maszynowego, rozwijana od lat (pamiętacie, gdy to Google kojarzył się z „The AI Company?), która teraz została wzbogacona również o wsparcie dla LLM i generatywnej sztucznej inteligencji. Obejmuje to zaawansowane modele, takie jak PaLM 2 (odpowiednik GPT od OpenAI), Imagen (model Text-to-Image) i Codey, który jest odpowiedzią firmy na GitHub Copilota. Taki GitLab podzielił się na przykład, że korzysta przykładowo Codey do swojej funkcji „explain this vulnerability”.
hexascribe/vertexai-kt to zaś biblioteka Kotlin Multiplatform, zaprojektowana w celu ułatwienia integracji z API Vertex AI, a wszystko w sposób natywny dla Kotlina. VertexAI-kt skupia się głównie na aplikacjach mobilnych, ale części wspólnej powinno dać się użyć w zasadzie każdym projekcie, również serwerowym. W końcu MultiPlatform to MultiPlatform.
Ale jeżeli budujecie własne aplikacje mobilne, ta sama organizacja w swoich repozytoriach posiada też zestaw komponentów opartych na Kotlin MultiPlatform, umożliwiających łatwe tworzenie chatbotów opartych o OpenAI – hexascribe/chatbot-builder.
Zainstaluj teraz i czytaj tylko dobre teksty!
langchain4j
LangChain to framework stworzony przez Harrisona Chase’a, skoncentrowany na Dużych Modelach Językowych (LLMach – Large Language Models), które zdobyły ogromną popularność po wydaniu GPT-3 (a pewnie nawet bardziej GPT-3.5 i GPT-4) przez OpenAI. LangChain, który pojawił się pod koniec października 2022 roku, wykorzystuje te rozwiązania, oferując platformę do tworzenia nie eksperymentów, a production-ready aplikacji opartych na LLMach.
Podstawowym konceptem stojącym za LangChain jest możliwość „łańcuchowego” łączenia różnych komponentów w celu tworzenia zaawansowanych zastosowań. Te łańcuchy mogą zawierać elementy z kilku modułów, takie szablony dla różnych typów promptów, (takich jak odpowiedzi w stylu chatbota, ELI5 itp), integrację z różnymi modelami LLM (GPT-3, BLOOM, itp), agenci (którzy korzystają z LLMs, aby decydować o działaniach, zresztą jeszcze dziś będzie o projekcie gpt-engineer, należącym do tej kategorii), oraz pamięć (krótko- i długoterminowa). A wszystko podane w formie typowo aplikacyjnego frameworku.
langchain4j/langchain4j to zaś javowy wrapper do langchaina – taki na sterydach. Całość już w tej chwili prowadzi za rękę i skupia się na klarownym pokazaniu możliwości (w projekcie znajdziecie podany katalog z przykładami), a twórcy zapowiadają dalszy rozwój. Na ten moment całość jeszcze nie przebiła się do masowej świadomości, ale osobiście trzymam kciuki – a że nawet podczas pisania tego tekstu pojawiły się nowe commity, a twórcy dostali w Issues zaproszenie na Devoxx Belgium, myślę że o langchain4j jeszcze usłyszymy.
midjourney-proxy
O ile o poprzednich dwóch projektach mogliście nie słyszeć, o tyle zakładam, że Midjourney jest znane w zasadzie każdemu, kto nie schował się pod kamieniem. LLM do generowania jest wiele… ale Midjourney jest jedno. YMMV, ale dla mnie ani Stable Diffusion, ani Dalle projekt nie mają startu do tego projektu – nawet taki laik jak ja jest w stanie osiągnąć naprawdę dobre efekty.
Midjourney ma jednak jedną wadę – nie posiada API. Jedynym interfejsem obsługi tego projektu jest bowiem Discord, pozwalający na używanie bota do generowania obrazów. Wiadomo jednak, że w lukę po brakuj oficjalnych rozwiązań pojawią się takie… mniej oficjalne. Tym jest właśnie trzeci z opisywanych dziś projektów – novicezk/midjourney-proxy. To takie „fanowskim” API, pod postacią zarówno kodu źródłowego, jak i dockerowego obrazu, do którego trzeba przekazać klucz autoryzacyjny wykradziony z headerów Discorda, a które zarządza generowaniem obrazu, udostępniając odpowiednie endpointy i hooki, które możemy używać do sprawdzania, czy mamy już wygenerowany odpowiedni obrazek.
A, i żeby nie było za prosto, repozytorium jak i cała dokumentacja są… po chińsku. Na szczęście nie jest jakoś skomplikowane, a przebijanie się przez instrukcje uruchomienia dała mi najwięcej zabawy od czasu potrzeby reverse-engineeringu integracji z azjatyckimi smart-gniazdkami za 15$.
PS: Kocham Midjourney, to właśnie ono generuje dla mnie obrazki do zajawek postów. Dzisiejszy wygenerowałem właśnie za pomocą midjourney-proxy.
Chat2DB
Pozostając w chińskiej strefie wpływów (aczkolwiek tym raz już takiej z angielską dokumentacją), kolejnym projektem jest stworzony przez Alibabę klient do baz danych SQL. Zgodnie jednak z tematyką tej edycji, nie może to być „zwykły”, klasyczny klient.
chat2db/Chat2DB charakteryzuje się bowiem integracją z OpenAI (dokumentacja podpowiada też, jak podłączyć się do niego z terenu Chin za pomocą VPN), co pozwala na konwersję języka naturalnego na SQL i odwrotnie, co znacznie poprawić ma wydajność deweloperów. Przyznam, że miałem przyjemność bawić się już w generowanie zapytań SQL z poziomu takiego ChatGPT, i to rzeczywiście bywa pomocne. Równocześnie jednak poza integracją z API, program ma również „klasyczne” funkcje, takie jak zarządzania danymi, obsługując różne rodzaje baz danych.
Zainstaluj teraz i czytaj tylko dobre teksty!
Bonus
Dwa ostatnie projekty dostajecie zaś niejako w bonusie, ponieważ mimo że nie są w Javie, wpisują mi się w tematykę. Jeśli więc po powyższej czwórce macie ochotę na więcej, czytajcie do końca.
GPT Engineer
AntonOsika/gpt-engineer to „adaptowalne i rozszerzalne narzędzie AI przeznaczone do zadań programistycznych” – taki Developer-as-a-Sevice. Generuje ono projekty programistyczne na podstawie instrukcji użytkownika, umożliwiając łatwe przekazanie początkowej specyfikacji (plik tekstowy, w którym można też zasugerować, jaką specjalizacje ma założyć bot) i późniejszą interakcje w konsoli, w wypadku gdy bot będzie wymagał klaryfikacji.
Mamy więc do czynienia z nieco bardziej wyspecjalizowaną wersją Auto-GPT – kto siedział w temacie LLM to na pewno się na ten projekt nadział. Powiem Wam szczerze, że nie mam za bardzo cierpliwości do tego typu narzędzi (aczkolwiek budują empatię – jak bardzo sfrustrowani muszą być czasem PMi, nie mogąc klarownie przekazać co chcą osiągnąć). Ale wiecie co… prostego scrappera projektów javowych Open Source z GitHuba mi napisał. I to takiego co rzeczywiście zadziałał – będę miał jak ulał na za miesiąc.
AI For Beginners
Dla tych zaś, którzy nie czują się komfortowo z tym co zobaczyli powyżej i chcieliby nieco bardziej zgłębić temat, a dodatkowo mają trochę czasu – dla nich jest ostatnimi link, microsoft/AI-For-Beginners. Pracownicy Microsoftu stworzyli bowiem 12-tygodniowy program nauczania składający się z 24 lekcji, skoncentrowany na Sztucznej Inteligencji. Program pokrywa różne podejścia do AI, w tym symboliczne AI, sieci neuronowe i Deep Learning, wykorzystując popularne frameworki, takie jak TensorFlow i PyTorch. Włączono również inne aspekty, takie jak NLP, analiza obrazów, algorytmy genetyczne i systemy wieloagentowe.
Co też ciekawe, program celowo nie skupia się na praktycznych zastosowaniach, nie chcąc wpychać przez gardło użytkownikowi konkretnych rozwiązań. Dla tych, którzy chcą poznać jednak teoretyczne podstawy podejścia do AI (klasyczne, historyczne podejścia są celowo pominięte), kurs będzie interesującym źródłem dla osób chcących zrozumieć podstawowe koncepcje i zastosowania AI.
Mam nadzieje, że się podobało 😄. Już za tydzień kolejna edycja (zamiast czwartku/piątku planuje teraz publikować po weekendzie – we wtorek) i tym razem powrócimy do klasycznego przeglądu.
A na sam koniec, jeśli jesteście mocno sceptyczni do AI, polecam stronę pessimistsarchive.org – pozwoli to uzmysłowić, jak bardzo przewidywalna jest nasza każda reakcja na nową technologie.