poniedziałek, 25 sierpnia 2025

AI Chatbot w Javie - RAG krok po kroku

Na bazie świetnego artykułu Baeldung o budowie chatbota w Javie z LangChain4j i MongoDB przygotowałem podobny, praktyczny przewodnik – ze wskazówkami, kodem i alternatywami. Oryginał znajdziesz tutaj: Building an AI Chatbot in Java With Langchain4j and MongoDB Atlas .



Dlaczego ten stack?

  • LangChain4j – wygodna warstwa do pracy z LLM w Javie (prompty, łańcuchy, pamięci, narzędzia).
  • MongoDB Atlas + Vector Search – trwałe przechowywanie embeddingów i szybkie zapytania semantyczne; idealne do RAG.

Efekt końcowy: prosty chatbot w stylu Q&A nad Twoimi dokumentami – z indeksem wektorowym w Atlasie, generacją embeddingów i łączeniem wyników z modelem językowym (RAG).

Wymagania wstępne

  • Java 17+
  • Konto w MongoDB Atlas i klaster (free tier wystarczy)
  • Klucz do dostawcy LLM/embeddingów (np. OpenAI) lub lokalny Ollama

Struktura projektu (Maven + Spring Boot)

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>5.1.0</version>
  </dependency>

  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>0.35.0</version>
  </dependency>

  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-openai</artifactId>
    <version>0.35.0</version>
  </dependency>

  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-mongodb</artifactId>
    <version>0.35.0</version>
  </dependency>
</dependencies>

Konfiguracja środowiska

server:
  port: 8080

app:
  mongo:
    uri: ${MONGODB_URI}
    db: ragdb
    collection: chunks
  openai:
    apiKey: ${OPENAI_API_KEY}
  rag:
    indexName: rag_vector_index
    dimensions: 1536

Definicja indeksu wektorowego

{
  "fields": [
    { "type": "vector", "path": "embedding", "numDimensions": 1536, "similarity": "cosine" },
    { "type": "string", "path": "source" },
    { "type": "string", "path": "text" }
  ]
}

Chunkowanie i embeddingi

Przykładowy kod Java generujący embeddingi i zapisujący do MongoDB:

float[] vec = embeddings.embed(chunk);
col.insertOne(new Document()
  .append("source", sourceName)
  .append("text", chunk)
  .append("embedding", toList(vec))
);

Retriever i RAG

Zapytanie semantyczne do Atlas Vector Search:

List<Bson> pipeline = List.of(
  Aggregates.vectorSearch("embedding", toList(qVec), indexName, 5, 200),
  Aggregates.project(Projections.include("text", "source"))
);

Łańcuch RAG z kontekstem i modelem czatu:

var messages = List.of(
  SystemMessage.from("Jesteś asystentem RAG..."),
  UserMessage.from("Kontekst:\n" + contextBlock + "\n\nPytanie: " + userQuestion)
);
return chat.generate(messages).content().text();

REST API

@PostMapping("/ingest")
public void ingest(@RequestBody IngestRequest req) {
  ing.ingest(req.source(), req.text());
}

@PostMapping
public ChatResponse chat(@RequestBody ChatRequest req) {
  return new ChatResponse(rag.ask(req.question()));
}

Alternatywy

Typowe pułapki

  1. Niedopasowany numDimensions w indeksie vs. model embeddingów.
  2. Brak overlapu przy chunkowaniu – tracony kontekst.
  3. Za duży kontekst – tnij do top-k i stosuj re-ranking.
  4. Sekrety w repo – używaj zmiennych środowiskowych.

Podsumowanie

W kilkudziesięciu linijkach kodu stworzyliśmy RAG chatbota – z MongoDB Atlas, LangChain4j i prostym REST API. Teraz możesz dodać streaming, cache embeddingów, czy personalizację dostępu.

Źródło, na którym bazowałem: Baeldung – Building an AI Chatbot in Java With Langchain4j and MongoDB Atlas

Dalsza lektura

poniedziałek, 18 sierpnia 2025

Nowe modele OpenAI gpt-oss – otwarte wagi i praktyczne wdrożenia AI

OpenAI wprowadza gpt-oss — serię modeli z otwartymi wagami, które możesz pobrać, uruchamiać lokalnie i dostosować do własnych potrzeb. To kolejny krok w kierunku większej kontroli nad sztuczną inteligencją, bez kompromisów w jakości rozumowania i elastyczności wdrożeń. Sprawdź, co oferują wersje 20b i 120b oraz jak szybko zacząć z nimi pracę.




1. O co chodzi z gpt‑oss?

gpt‑oss to rodzina modeli OpenAI z otwartymi wagami (open‑weight), które można pobierać, uruchamiać lokalnie i dostrajać pod własne przypadki użycia. Seria obejmuje dwa warianty: gpt‑oss‑120b (wyższa wydajność) oraz gpt‑oss‑20b (lżejszy, „edge/on‑device”).

  • Wydajność: 120b osiąga wyniki bliskie o4‑mini na kluczowych benchmarkach; 20b jest porównywalny do o3‑mini.
  • Wymagania sprzętowe: 120b działa na pojedynczej karcie 80 GB; 20b może działać przy ~16 GB pamięci.
  • Licencja: Apache 2.0 + zasady użycia gpt‑oss.
  • Przeznaczenie: rozumowanie, zadania agentyczne, elastyczne scenariusze developerskie.

2. Co dostajesz „w pudełku”

3. Jak to uruchomić w praktyce

Poniżej minimalny szkic — dopasuj do swojego środowiska:

# vLLM (przykład)
python -m vllm.entrypoints.openai.api_server \
  --model openai/gpt-oss-20b \
  --max-model-len 8192

# Zapytanie w stylu OpenAI Responses API (HTTP)
POST /v1/responses
{
  "model": "openai/gpt-oss-20b",
  "input": "Napisz krótkie streszczenie wpisu na blog."
}

Jeśli używasz Ollama, sprawdź gotowe pliki Modelfile i instrukcje z Cookbook/Guides. Do strumieniowania i pracy z narzędziami wykorzystaj format Harmony, który odwzorowuje zachowanie Responses API.

4. Zastosowania i wzorce

  • Na urządzeniu / edge: 20b do asystentów offline, automatyzacji IDE, podsumowań i ekstrakcji danych.
  • Serwerowo: 120b do pipeline’ów analitycznych, agentów wykonujących wieloetapowe zadania i klasycznych RAG.
  • Dostrajanie: klasyczne fine‑tuning + taktyki optymalizacji (LoRA/QLoRA, 4‑bit), gotowe „recipes”.

5. Bezpieczeństwo i zgodność

Modele gpt‑oss przeszły szkolenia i ewaluacje bezpieczeństwa (w tym testy zgodne z Preparedness Framework). Zadbano o redukcję ryzyk i zgodność z dobrymi praktykami — to ważne przy wdrożeniach komercyjnych.

6. Szybki start — checklista

  1. Pobierz wagi 20b lub 120b i sprawdź wymagania sprzętowe.
  2. Wybierz runtime (Ollama, vLLM, Transformers) i uruchom endpoint kompatybilny z OpenAI API.
  3. Włącz Harmony dla stabilnego formatowania odpowiedzi i integracji narzędzi.
  4. Skonfiguruj logowanie, limity tokenów, caching i monitorowanie.
  5. Jeśli potrzebujesz — wykonaj fine‑tuning na własnych danych zgodnie z „recipes”.

7. Podsumowanie

gpt‑oss to pragmatyczne otwarcie: realne wagi, solidne wyniki i komplet materiałów do wdrożeń. Dla developerów oznacza to większą kontrolę kosztów, szybszą iterację i możliwość działania lokalnie — bez rezygnacji z jakości rozumowania.

poniedziałek, 11 sierpnia 2025

ChatGPT-5 – co nowego w najnowszym modelu OpenAI?

1. Nowy model w codziennej pracy

W sierpniu 2025 r. OpenAI udostępniło GPT-5 – najnowszy i najbardziej zaawansowany model językowy firmy, dostępny dla wszystkich użytkowników ChatGPT, także w wersji bezpłatnej (openai.com). To znaczący krok naprzód pod względem jakości odpowiedzi, precyzji i elastyczności w dopasowaniu do kontekstu.



2. Co nowego?

  • Automatyczny wybór modelu – GPT-5 sam dobiera wewnętrzny wariant do konkretnego zadania, więc nie trzeba ręcznie przełączać wersji (businessinsider.com).
  • Wyższy poziom inteligencji – według Sama Altmana to krok w stronę AGI, a użytkownicy zauważają lepsze efekty w kodowaniu, analizach i pisaniu (theatlantic.com).
  • Większa precyzja – poprawione rozumienie kontekstu, mniej tzw. halucynacji, szybsze odpowiedzi (wired.com).
  • Wersje do różnych zastosowań – standardowa, mini, nano, a także Pro i “Thinking” dla bardziej złożonych problemów.
  • Nowe integracje – łączenie z Gmail i Google Calendar, personalizacja stylu rozmowy, lepszy tryb głosowy i wgląd w proces myślowy.

3. Empatyczne podejście

Jedną z ciekawszych zmian jest większa wrażliwość na ton i treść rozmowy. Model nie rzuca się od razu do realizacji każdej prośby, jeśli brzmi ona jak efekt chwili emocji.

Przykład:

Ty: „Mam dość wszystkiego. Chcę dziś sprzedać cały majątek i wyjechać na 10 lat.”
GPT-5: zamiast szukać biletów i ofert sprzedaży, odpowiada:
– „To brzmi jak poważna decyzja. Chcesz opowiedzieć, co się stało? Możemy rozważyć różne opcje.”

To celowy zabieg – OpenAI stawia na bezpieczniejsze i bardziej odpowiedzialne interakcje, które najpierw skłaniają do refleksji, a dopiero później do działania.

4. Niedoskonałości wciąż są

Nowy model nie jest wolny od błędów. Zdarzają się literówki i drobne wpadki faktograficzne („Nowe Jefst”, „Mitroinia”), a część użytkowników zgłasza problemy z routingiem zapytań (theguardian.com). Na forach pojawiają się też głosy, że brakuje możliwości korzystania ze starszych wersji, takich jak GPT-4o czy 4.1 (techradar.com).

5. Podsumowanie

GPT-5 to wszechstronny model, który łączy wyższą jakość odpowiedzi z nowymi możliwościami integracji i lepszym wyczuciem kontekstu. Dla użytkowników oznacza to narzędzie, które potrafi nie tylko generować treści i analizować dane, ale też reagować w sposób bardziej odpowiedzialny. Jeśli do tej pory korzystałeś z GPT-4, różnicę zauważysz szybko – szczególnie w dialogach wymagających refleksji i delikatnego podejścia.


Źródła: