Przejdź do treści
Home Blog Projekty O mnie

AlIna - Chat AI

🤖 AlIna - Chat AI

Natywna aplikacja czatu AI, która strumieniuje odpowiedzi modeli, przechowuje rozmowy lokalnie i zapewnia płynny interfejs JavaFX zintegrowany z usługami Spring Boot.

✨ Funkcjonalność

  • Streamingowy czat z kontekstem – rozmowy są aktualizowane w czasie rzeczywistym, zapisują się w data/conversations/, a historia może być szybko duplikowana lub resetowana dzięki wewnętrznemu silnikowi wątku czatu.
  • Tryb ciemny i jasny wraz ze stylami Atlantafx – przełączanie motywów zachowuje czytelność UI i pozwala na dodatkowe motywy CSS trzymane w data/css/.

Widok trybu ciemnego

Widok trybu jasnego

  • Komendy i automatyzacje – wbudowana lista komend (edytowalna w data/commands/) z podpowiedziami po wpisaniu „/” pozwala szybko uruchamiać akcje, narzędzia MCP i makra rozmowy.

Podgląd okna komend

  • Przypinanie okna – pin w nagłówku pozwala utrzymać aplikację zawsze na wierzchu podczas pracy w innych programach; jednym kliknięciem można przełączać tryb „stay-on-top”.
  • Wielojęzyczny interfejs – zasoby Bundle_en.properties oraz Bundle_pl.properties wczytywane przez LanguageManager umożliwiają natychmiastowe przełączanie języka UI.
  • Konfigurowalny asystent – ustawienia (np. limit wiadomości przekazywanych do modelu, personalizacja promptów, klucze API w zmiennych środowiskowych) są dostępne z poziomu aplikacji i zapisywane lokalnie.

🧱 Architektura

  • JavaFX UI (com.patres.alina.uidesktop) – komponenty FXML (np. fxml/header-bar-button-box.fxml) odpowiadają za rozmieszczanie widoków, przełączanie motywów i interakcje użytkownika.
  • Spring Boot backend (com.patres.alina.server) – usługi czatu, zapisywanie wątków i obsługa komend działają w tym samym procesie, dzięki czemu nie potrzeba osobnego serwera.
  • Warstwa wspólna (com.patres.alina.common) – modele rozmów, zdarzenia oraz narzędzia współdzielone przez UI i backend zapewniają spójny kontrakt.
  • Integracje AI – Spring AI (OpenAI) oraz klient MCP dostarczają połączenia z dużymi modelami językowymi i zewnętrznymi narzędziami.
  • Dane i konfiguracja – katalogi data/ (rozmowy, komendy, style), config/ (lokalne YAML-e) i logs/ izolują dane użytkownika od kodu, co ułatwia przenoszenie instancji między komputerami.