Netidee Blog Bild
Das Java Ökosystem und große Sprachmodelle
Wie gellingt die Integration von großen Sprachmodellen in bestehende Java Anwendungen (19.11.2024)
Förderjahr 2023 / Projekt Call #18 / ProjektID: 6716 / Projekt: shrinkwrap.legal

Da wir langjährige Erfahrung in der Softwareentwicklung mit Java und vor allem dem verbreiteten Spring Framework haben, ist es für uns naheliegend auch dieses Projekt mit Java umzusetzen. 

Im Bereich Machine Learning ist Python als Programmiersprache stark verbreitet und auch viele wichtige Bibliotheken sind in dieser Sprache geschrieben. Eine sehr beliebte Bibliothek zum Arbeiten mit großen Sprachmodellen in Python ist LangChain (https://www.langchain.com).

Bei der Evaluierung von NLP Bibliotheken zum Sentence Splitting, wie im vorigen Beitrag beschrieben, hat sich dann auch herausgestellt, dass Bibliotheken in Python bessere Ergebnisse liefern. 

Daher haben wir uns angesehen, wie sich einerseits Large Language Models in Java und Spring Anwendungen integrieren lassen, aber auch wie wir für einzelne Aufgaben Python einsetzen können. 

Dabei haben wir uns drei Varianten näher angesehen:

  • LangChain4J
  • Spring AI 
  • GraalPy

LangChain4J

LangChain4J ist eine Bibliothek für Java zum Einbinden von großen Sprachmodellen in Java-Anwendungen, es handelt sich dabei um eine Adaption der verbreiteten Python Bibliothek LangChain. Es kann die API von OpenAI, ein lokales Sprachmodell mit Ollama und viele weitere eingebunden werden. Dies ist durch eine vereinheitlichte Abstraktion der Schnittstellen und konkreten Implementierungen für die jeweiligen Anbieter möglich. Zur Aufbereitung von eigenen Daten müssen diese in einer Vektor-Datenbank gespeichert werden und auch dafür gibt es viele Anbieter eine Integration.

https://docs.langchain4j.dev/

 

Spring AI

Das Spring Framework ist ein Framework für Java zur Umsetzung für Geschäftsanwendungen, hierbei hat es eine große Verbreitung. Damit die mit Spring erstellten Web-Applikationen einfach mit Sprachmodellen zu integrieren sind, hat Spring das Spring AI Projekt ins Leben gerufen. Es bietet eine abstrahierte Integration und dadurch können ohne Code-Änderungen verschiedene lokale oder cloud-basierte Sprachmodelle aufgerufen werden. Des Weiteren können mit den bestehenden Datenbank-Abstraktionen nun auch Vektor-Datenbanken eingebunden werden.

https://spring.io/projects/spring-ai

 

GraalPy

GraalVM kann aus Java Code mit einer Ahead-Of-Time Kompilierung ein nativ für die jeweilige Hardware ausführbares Programm erstellen. Das ermöglicht es, dass Java Programme schneller gestartet werden können und mit einer besseren Performance sowie weniger Ressourcen ausgeführt werden können. Neben diesen Vorteilen für Java Programme unterstützt die GraalVM mit der Polyglot API noch weitere Programmiersprachen, die mit der Java Virtual Machine (JVM) ausgeführt werden können. 

Mit GraalPy kann Python Programmcode in einer JVM ausgeführt werden und somit schafft man die Brücke, dass verbreitete Bibliotheken von Python für Machine Learning und LLM direkt innerhalb von Java ausgeführt werden können. Somit kann die Web-Anwendung weiterhin in Java bleiben aber einzelne Python Bibliotheken, welche im Machine Learning und bei großen Sprachmodellen eine hohe Verbreitung haben, können ohne eigenen Server aufgerufen werden.

https://github.com/oracle/graalpython

 

Tags:

LLM Java python

Bernhard Jungwirth

Profile picture for user bernhardjungwirth

Skills:

Java
,
Backend Entwicklung
,
React
CAPTCHA
Diese Frage dient der Überprüfung, ob Sie ein menschlicher Besucher sind und um automatisierten SPAM zu verhindern.
    Datenschutzinformation
    Der datenschutzrechtliche Verantwortliche (Internet Privatstiftung Austria - Internet Foundation Austria, Österreich) würde gerne mit folgenden Diensten Ihre personenbezogenen Daten verarbeiten. Zur Personalisierung können Technologien wie Cookies, LocalStorage usw. verwendet werden. Dies ist für die Nutzung der Website nicht notwendig, ermöglicht aber eine noch engere Interaktion mit Ihnen. Falls gewünscht, können Sie Ihre Einwilligung jederzeit via unserer Datenschutzerklärung anpassen oder widerrufen.