Sii Polska

SII UKRAINE

SII SWEDEN

  • Szkolenia
  • Kariera
Dołącz do nas Kontakt
Wstecz

Sii Polska

SII UKRAINE

SII SWEDEN

Wstecz
Sztuczna inteligencja w ekosystemie Spring Boot

Sztuczna inteligencja zmienia sposób, w jaki budujemy aplikacje, oferując nowe możliwości w zakresie personalizacji, automatyzacji i analizy danych. W szczególności modele takie jak GPT-4o od OpenAI rewolucjonizują podejście do przetwarzania języka naturalnego (NLP), pozwalając na tworzenie inteligentnych systemów opartych na rozmowach, analizach tekstu czy generowaniu treści.

Poniższy artykuł odpowie na następujący zestaw pytań:

  • Jak można łatwo i skalowalnie połączyć aplikację springową ze sztuczną inteligencją?
  • Czy popularne modele LLM to tak naprawdę podkręcona wyszukiwarka internetowa?
  • Czym jest Spring Functions i czy bean może być…funkcją?
  • Czym jest prompt enrichment?

Jeżeli na chociaż jedno z tych pytań nie znasz odpowiedzi, to zapraszam gorąco do poniższego wpisu.

Integracja AI z aplikacjami

Ekosystem Spring Boot, jako fundament nowoczesnych aplikacji, staje się idealną platformą do integracji modeli. Jednak zanim przejdziemy dalej, zbudujmy szerszy kontekst, zastanawiając się nad aktualnym sposobem użytkowania AI.

Obecnie popularne modele, takie jak GPT-4o, są najczęściej używane przez interfejs graficzny – np. poprzez ChatGPT. Użytkownik wchodzi na stronę, wpisuje zapytanie w polu tekstowym, a model zwraca odpowiedź w oknie czatu. Jest to prosty i intuicyjny sposób korzystania z AI, który zrewolucjonizował interakcje z technologią.

Natomiast gdy projektujemy bardziej złożone aplikacje, w których model AI ma być elementem architektury systemu i działać jako integralna część backendu, konieczne jest nawiązanie komunikacji z modelem z poziomu kodu. Sam interfejs graficzny to wygodny punkt startowy, ale nie umożliwia on bezpośredniej integracji z mechanizmami mikrousług, usługami REST czy infrastrukturą chmurową. Innymi słowy – w świecie oprogramowania liczy się możliwość automatyzacji, skalowalności i integracji z innymi systemami.

To prowadzi nas do kluczowego zagadnienia – integracji AI z aplikacjami. Dzięki niej możemy budować aplikacje, które potrafią m.in.:

  • obsługiwać zapytania klientów w czasie rzeczywistym (popularne chatboty osadzone w domenie klienta),
  • analizować dokumenty albo opinie klienta, generując automatycznie podsumowania lub raporty,
  • inteligentnie realizować przetwarzanie wsadowe, analizując setki lub tysiące dokumentów i szukając trendów w czasie nieosiągalnym dla człowieka,
  • wzbogacać komunikację z modelem wzbogacając prompty o dodatkowe źródła danych takie jak REST API, bazy danych czy systemy kolejkowe,
  • analizować strumienie danych w domenie IoT w czasie rzeczywistym, dzięki czemu mogą generować alarmy na podstawie wykrycia niestandardowego wzorca.

Kluczowe więc jest zrozumienie, że integracja AI z aplikacjami nie ma na celu zastąpić chatbotów typu ChatGPT, ale ma realizować inny rodzaj potrzeb. Nie mówimy tutaj o rywalizacji, ale synergicznym uzupełnieniu.

Scenariusz demonstracyjny

Mając już nadany kontekst wprowadzający w domenę pracy AI z aplikacją, przyjrzyjmy się przykładowej demonstracji takiej integracji. Scenariusz zakłada sytuację, w której użytkownik chce poznać najnowsze rekomendacje na temat książek science-fiction. Chcąc wyjść maksymalnie naprzeciw użytkownika, nasz system pozwala przesłać prompt w postaci nagrania audio, tak żeby użytkownik mógł prawie wręcz „rozmawiać” z naszą aplikacją.

Naszym zadaniem jest otrzymanie od użytkownika nagrania, wyekstrahowanie z niego treści promptu, odpytanie modelu, a następnie zwrócenie odpowiedzi użytkownikowi. Zadanie z pozoru trywialne okaże się jednak nie tak proste, gdy zrozumiemy lepiej, jak działają modele LLM.

Mianowicie – sam model nie ma dostępu do Internetu – opiera się na zestawie wytrenowanych danych, do których ma dostęp. Odpytanie go więc o najnowsze książki z gatunku science-fiction musi być skazane na porażkę, co widać poniżej:

Jest to fundamentalne ograniczenie, które wynika z architektury samego modelu oraz jego treningu. Innymi słowy – same modele nie działają jak wyszukiwarka internetowa.

GPT-4o jako przykład

GPT-4o to model statystyczny, który został wytrenowany na ogromnym zbiorze danych do określonego momentu w przeszłości. Po zakończeniu treningu model staje się „zamrożony” – nie posiada mechanizmu do dynamicznego uczenia się nowych danych w czasie rzeczywistym ani możliwości samodzielnego ich pobierania. Nie jest to wyszukiwarka ani aplikacja, która w trakcie działania mogłaby komunikować się z zewnętrznymi źródłami informacji.

Dzięki temu utrzymana jest lepsza kontrola nad działaniem samego modelu, ponieważ proces jego trenowania jest nadzorowany i, co ciekawe, nie chodzi tutaj nawet od odcinanie go od sieci rodem właśnie z gatunku sci-fi, żeby nie stał się rodzajem omnipotentnego bytu – ale żeby nie stracić wysokiej jakości wyselekcjonowanego treningu, na który cała masa śmieciowego contentu mogłaby mieć wpływ. Do tego dochodzą oczywiście kwestie ochrony prywatności danych oraz po prostu kwestie wydajnościowe same w sobie – brak dostępu do Internetu to więc świadomy wybór projektowy.

W związku z tym, chcąc projektować systemy opierające się na danych zmieniających się w czasie rzeczywistym, musimy doprowadzić do zjawiska tzw. „prompt enrichment” – czyli wzbogacenia naszego promptu o kontekst, w ramach którego model będzie mógł wnioskować. W rozumieniu naszego scenariusza, musimy więc sami zadbać o to, żeby mieć dostęp do źródła danych na temat najnowszych książek sci-fi, a następnie wzbogacić o nie naszego prompta.

Implementacja

Opisane wyżej zadanie realizuje poniższa architektura:

Opierając się na warstwie abstrakcji, poprzez interfejs TranscriptService oraz ReasoningService sprawiamy, że domenowa logika aplikacji staje się niezależna od konkretnego modelu, na który patrzymy tutaj jak na konkretną implementację rozwiązania interesującego nas problemu.

W powyższym scenariuszu odpowiedzialność ekstrakcji tekstu z pliku audio wydzielono do AssemblyAi jako rozwiązania specjalizującego się w tej odpowiedzialności, ale także dlatego, że ma ono bardziej interesujące plany używania ich API – dywersyfikując odpowiedzialności w ten sposób, możemy zaoszczędzić na używaniu modeli, co jest szczególnie ważne, biorąc pod uwagę generowane koszty.

Chcąc zrealizować funkcjonalność pobierania informacji na temat książek sci-fi, wykorzystano Google API Books oraz Spring Functions. To część ekosystemu Springa, która pozwala na tworzenie lekkich funkcji wielokrotnego użytku, które są ukierunkowane na realizowanie jednego jasno określonego zadania, enkapsulując w sobie całą logikę potrzebną do jego realizacji.

Natomiast – co jest najciekawsze – funkcje te są rejestrowane jako beany, dzięki czemu mogą być wielokrotnie użyte w wielu miejscach aplikacji. Podejście to jest jeszcze bardziej wspierane w Spring Cloud, który umożliwia tworzanie bardzo wydajnych rozwiązań serverless np. z wykorzystaniem AWS Lambdy.

W ramach naszego scenariusza Spring także oferuje wsparcie dla wykorzystania tej funkcji poprzez zarejestrowanie jej w ramach budowanego przez nas promptu w ten sposób:

gdzie „fetchBooks” to właśnie nazwa naszej funkcji, która wygląda następująco:

Zachęcam Was do przejścia oraz przeanalizowania całego kodu za pomocą dedykowanego repozytorium.

Uruchomiwszy tak zrealizowaną architekturę, możemy odpytać system w ramach założonego przez nas scenariusza, wysyłając request na poniższy endpoint:

co doprowadzi do następującej odpowiedzi:

Jak widać, daty publikacji książek są nowsze niż ostatnia aktualizacja modelu, ale dodane adresy URL wskazują na domenę Google, co jednoznacznie pokazuje, że model otrzymał prompt wzbogacony kontekstowo. Dzięki temu był w stanie przeprowadzić wnioskowanie i dostarczyć nam odpowiedź.

oferty pracy

Podsumowanie

Podczas eksploracji możliwości integracji sztucznej inteligencji z aplikacjami opartymi na Spring Boot zademonstrowaliśmy, jak modele językowe, takie jak GPT-4o, mogą być wzbogacone o zewnętrzne źródła danych, aby przezwyciężyć swoje ograniczenia.

Kluczową kwestią jest zrozumienie, że modele takie jak GPT-4o nie mają natywnego dostępu do internetu, co wynika z ich architektury i ograniczeń projektowych. W naszym scenariuszu, gdzie użytkownik oczekuje rekomendacji najnowszych książek science-fiction na podstawie zapytania w formie audio, to właśnie brak aktualnych danych stanowi wyzwanie. Rozwiązaniem było zastosowanie mechanizmu „prompt enrichment”, gdzie dane z Google Books API zostały włączone do prompta, umożliwiając modelowi wygenerowanie odpowiedzi opartej na bieżących informacjach.

Całość pokazuje, jak Spring Boot i jego ekosystem wspierają tworzenie nowoczesnych aplikacji, które są elastyczne, skalowalne i dostosowane do dynamicznych potrzeb użytkowników. Wdrożenie tego rodzaju architektury pozwala zbudować systemy zdolne do przetwarzania złożonych danych, analizy w czasie rzeczywistym i współpracy z różnorodnymi źródłami informacji. Dzięki temu użytkownicy mogą doświadczać bardziej inteligentnych i spersonalizowanych aplikacji, które wychodzą naprzeciw ich potrzebom.

Ten przykład to dowód, że dobrze zaprojektowana integracja między AI a Spring Boot może dostarczyć realną wartość, łącząc zalety modeli AI z mocą sprawdzonych narzędzi backendowych. To idealne rozwiązanie dla każdego, kto chce tworzyć aplikacje na miarę współczesnych wyzwań technologicznych.

Warto pamiętać, że takie systemy nie mają na celu zastąpić człowieka, ale wspierać go, umożliwiając skupienie się na bardziej wartościowych zadaniach. To podejście, w którym sztuczna inteligencja i backend tworzą zgrany duet, dostarczając rozwiązania odpowiadające na realne potrzeby użytkowników i ułatwiające pracę twórców. Jest to dopiero początek nowego podejścia, w którym technologia, dane i inteligencja współgrają w sposób bardziej naturalny niż kiedykolwiek wcześniej. Wszystko zależy od tego, jak z tego skorzystamy i jakie praktyczne rozwiązania z tego stworzymy.

***

Jeśli interesuje Cię tematyka AI, zajrzyj koniecznie również do innych artykułów naszych ekspertów.

5/5
Ocena
5/5
Avatar

O autorze

Bartłomiej Drobczyk

Software Engineer z doświadczeniem w tworzeniu oprogramowania, projektowaniu architektury systemów, zagadnieniach DevOps oraz zastosowaniach sztucznej inteligencji. Interesuje go pełne spektrum tworzenia i rozwijania rozwiązań technologicznych – od kodu, przez infrastrukturę, aż po aspekty skalowalności i niezawodności. Ceni sobie przejrzysty kod, przemyślaną architekturę i efektywną współpracę zespołową. Po godzinach chętnie podróżuje i spędza czas na świeżym powietrzu – zazwyczaj w towarzystwie swojego psa. Kiedy tylko może, łączy pasję do technologii z zamiłowaniem do odkrywania nowych miejsc. Kawa to jego codzienny rytuał – zarówno w biurze, jak i w trasie

Wszystkie artykuły autora

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Dołącz do nas

Sprawdź oferty pracy

Pokaż wyniki
Dołącz do nas Kontakt

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?