Wie LLMs mit Spring Boot verwendet werden können
Einführung
LLMs sind schon lang mehr als nur eine Spielerei. Kürzlich haben wir auch bei einem unserer Kunden ein LLM einsetzen können, um den Prozess von bestimmten B2B-Bestellungen zu vereinfachen. Dazu wurde ein Chatbot entwickelt, mit dem (Business-)Kunden Produkte per Messenger-App beim Händler bestellen können. Für das Backend sollte ein Spring Boot-Projekt entwickelt werden. Spring AI ist eine Library für Spring Boot, die die Schnittstellen verschiedener LLMs abstrahiert, sodass diese leichter beispielsweise mit Datenbanken oder Logik verbunden werden können. Insbesondere EntwicklerInnen, die mit Spring Boot bereits vertraut sind, können somit mit wenig Lernaufwand LLM-Projekte umsetzen.
Abb. 1: Screenshot eines Tools – eine Funktion, die von der LLM selbstständig aufgerufen werden kann. In diesem Beispiel wird eine Adresse einer Map hinzugefügt. Für die LLM sind Tools Blackboxes. Sie kennt nur die Datentypen und Namen der Argumente und des Rückgabetyps, sowie die angegebenen Beschreibungen in natürlicher Sprache. Welche Werte als Argumente verwendet werden, entscheidet die LLM ebenfalls selbstständig.
Warum Spring AI?
Die Verwendung von LLMs und KI im Allgemeinen ist für viele Firmen eine neue Erfahrung. Das bringt nicht nur Schwierigkeiten in der Entwicklung mit sich, sondern wirft auch organisatorische und rechtliche Fragen auf. Wie verwendet das LLM interne wie auch Kundendaten? Achten manche LLM-Hersteller mehr auf Datensicherheit als andere? Werden die Daten zum Trainieren neuer LLM-Versionen verwendet? Welche Modelle eignen sich für das jeweilige Projekt am besten? Diese Fragen ziehen oft langwierige Diskussionen und Freigabeprozesse nach sich, die entweder den Projektstart hinauszögern können oder alternativ einen Wechsel des LLMs mitten in der Entwicklung nötig machen können. Auch außerhalb dieser Fragen kann ein LLM-Wechsel während der Projektlaufzeit nötig oder sinnvoll werden. LLMs und ihre APIs werden schnell weiterentwickelt und es werden ständig neue Modelle veröffentlicht. Diese neuen Modelle sind oft nicht nur inhaltlich besser, sondern zum Teil auch günstiger, da die Hersteller die Nutzung der neueren Modelle vorantreiben wollen.
Genau hier hat Spring AI seine Stärke. Es bietet einen Abstraktionslayer, durch den verschiedene Modelle auch verschiedener Hersteller mit relativ wenig Aufwand, zumindest im Vergleich zu einer eigenen Implementierung, eingebunden und ausgetauscht werden können. Verschiedene Modelle eines oder mehrerer Hersteller können vermischt und je nach Aufgabe eingesetzt werden. Ergänzt wird das Ganze um viele praktische Features: Verwalten des ChatMemorys, eigenständiges Aufrufen von Funktionen, aber auch die Verwendung verschiedener Modellarten wie Embedding oder Image Modellen sind gegeben. Als Spring Boot Library verbindet Spring AI außerdem die Vorteile, die wir bereits von Spring Boot kennen, mit LLM-Funktionalitäten. Das Ergebnis ist skalierbar, durch Spring Security abgesichert und robust, auch für Enterprise-Anwendungen. Wer bereits mit Spring Boot entwickelt, wird sich auch schnell in SpringAI einfinden können.
Abb. 2: Zu sehen ist die Einbindung und Konfiguration des ChatClients. Dies wird bei jeder Nachricht an den Chatbot aufgerufen und sorgt für die korrekte Anbindung an die LLM. In diesem Beispiel wird dem ChatClient der System Prompt, die Eingabe des Users, verwendbare Tools und der Kontext für das Chatmemory übergeben. Zurückgegeben wird die Antwort der LLM.
Nachteile von Spring AI
Im Laufe unserer Entwicklung haben wir auch schnell einige Probleme mit Spring AI aufgedeckt, die allerdings hauptsächlich von der Neuheit der Library stammen.
Jede Spring AI-Version unterliegt noch teils größeren Änderungen, die dann im eigenen Code Anpassungen erforderlich machen. Beispielsweise wurden Functions im Laufe der Entwicklung zu Tools umbenannt und damit natürlich auch alle Klassen, Methodennamen usw., die mit diesen Tools zusammenhängen. Tools sind in Spring AI Funktionen, die dem LLM bereitgestellt und von diesem selbstständig aufgerufen werden können, um beispielsweise mit einer Datenbank oder anderen Schnittstellen zu interagieren. Damit bilden sie eine Kernfunktionalität von Spring AI.
Ein weiteres Problem ist, dass sich im Internet neben der offiziellen Dokumentation bisher nur wenige Artikel finden, wenn es um schwierigere Probleme oder Fragen geht. Das erschwert die Entwicklung, wird aber dadurch ein wenig mitigiert, dass die Dokumentation von Beginn an relativ ausführlich war und auch stetig erweitert wird.
Ich bin sehr zuversichtlich, dass sich diese Probleme im Laufe der weiteren Entwicklung immer mehr verbessern werden und Spring AI an Stabilität gewinnen wird. Inzwischen gibt es eine erste offizielle Release-Version, sodass die Wahrscheinlichkeit hoch ist, dass sich in der Zukunft weniger von Version zu Version ändern wird als dies bei den Milestone-Releases der Fall war.
Wechsel zwischen LLMs verschiedener Hersteller
Ein weiteres Problem, das wir bei der Entwicklung feststellen mussten, wurde beim Wechsel von OpenAI auf Gemini ersichtlich. Während es sehr einfach war, z.B. von gpt-4o-mini auf gpt-4.1-mini oder gar auf das Reasoning-Modell o4-mini zu upgraden und auch der Wechsel von OpenAI auf OpenAI Azure recht unkompliziert war, hat die Umstellung auf Gemini etwas mehr Code-Änderungen nötig gemacht. Dies lag nicht an Spring AI selbst, sondern an den Unterschieden zwischen der OpenAI und der Gemini-Schnittstelle. Im Gegensatz zu OpenAI erlaubt sie beispielsweise keine Aneinanderreihung von System-Messages im Chatverlauf, sodass die Struktur unseres Bots angepasst werden musste. Trotzdem muss dazu gesagt werden, dass die Umstellung deutlich einfacher war als dies ohne Spring AI der Fall gewesen wäre.
Ausblick
In der Praxis eignet sich Spring AI wirklich gut, um schnell in die Welt der LLM-Projekte einzusteigen. Die Library hat zwar noch einige Kinderkrankheiten, wird aber stetig verbessert und ist auch jetzt durchaus schon einsatzfähig, auch wenn der Wartungsaufwand noch höher als erhofft ist. In unserem Kundenprojekt hat sich der Einsatz von Spring AI auf jeden Fall gelohnt und die Entwicklung sehr angenehm gemacht, da sich nicht um die Details der LLM-Anbindung gekümmert werden musste. Ich freue mich darauf, zu sehen wo die Reise der Library in den nächsten Monaten und Jahren hin geht und wie die Entwicklungserfahrung noch weiter verbessert wird!
Autor
Franziska, Softwareentwicklerin
Quellen
Spring AI Reference: https://docs.spring.io/spring-ai/reference/index.html







