IT-PRAXIS10. Februar 2025

Erfolgreiche Software-Entwicklung in KI-Projekten – die Experten-Erfahrungen aus der Praxis

Dr. Boris Eberhardt, Dipl.-Physiker, adesso über die Experten-Erfahrungen aus der Praxis mit LLMs
von Dr. Boris Eberhardt, Dipl.-Physiker, adessoadesso

KI ist in der Finanzwirtschaft zwar im Grundsatz angekommen, aber in der praktischen Umsetzung von SW-Entwicklungsprojekten hin zu Anwendungen in Produktion tun sich viele noch schwer. Hier folgen daher Erfahrungswerte aus der Praxis, abgeleitet aus einer Vielzahl bereits realisierter KI-Entwicklungsprojekte.

von Dr. Boris Eberhardt, Dipl.-Physiker, adesso

Damit KI-Anwendungen in der Finanzwirtschaft erfolgreich produktiv gesetzt werden können, braucht es eine durchdachte Architektur und eine flexible Integration. Ein zentraler Aspekt ist die Einbindung von LLMs – sei es über Cloud-Dienste, lokale Inferenz-Server oder hybride Modelle. Welche Strategien sich in der Praxis bewährt haben – der Überblick:

Flexible Integration von LLMs

Für die Integration von LLMs sollte auf Modularität und Austauschbarkeit geachtet werden:

Cloud-Provider APIs: Anbieter wie OpenAI, Google oder Azure ermöglichen eine schnelle Integration. OpenAI ist weit verbreitet. Viele Unternehmen bevorzugen Azure aufgrund der nahtlosen Microsoft-Integration und strengeren Sicherheitsvorgaben. AWS bietet ebenfalls skalierbare und flexible Alternativen. OpenRouter.ai vereinfacht die Anbindung an verschiedene Modelle, erfüllt jedoch nicht immer Enterprise-Anforderungen wie SLAs und hohe Sicherheitsstandards – hier sind Azure oder AWS oft robuster.

Self-Hosting von Modellen: Lokale LLMs bieten maximale Kontrolle, erfordern jedoch leistungsfähige Hardware, insbesondere GPUs mit ausreichend VRAM, sowie Expertise in Performance-Optimierung und Datenschutz. Inferenz-Server-Frameworks wie vllm, llama.cpp, Text Generation Inference (Hugging Face) und OpenLLM optimieren das Serving von LLMs, indem sie API-Endpunkte bereitstellen und Funktionen wie Batch-Inferenz für eine effiziente Ressourcennutzung integrieren. Trotz Quantisierung bleibt der Speicherbedarf hoch, je größer das Modell.

Austauschbarkeit durch standardisierte APIs: Ein entscheidender Vorteil moderner Inferenz-Server-Frameworks ist, dass sie API-Schnittstellen bieten, die Cloud-Modelle und self-hosted Modelle vergleichbar machen. Dadurch können Cloud- und lokale Lösungen oft mit minimalem Aufwand ausgetauscht werden, z. B. durch das Anpassen der Endpunkt-URL. Dies bietet Flexibilität, um je nach Anforderungen – wie Datenschutz, Kosten oder Verfügbarkeit – zwischen Hosting-Optionen zu wechseln. Eine abstrahierte Serviceschicht (z. B. über gRPC oder REST) kann diese Flexibilität zusätzlich erhöhen und das System zukunftssicher gestalten.

Dr. Boris Eberhardt, Dipl.-Physiker, adesso
Dr. Boris Eberhardt, Dipl.-Physiker, adesso

LangChain & Co. vs. eigene Routinen

Bibliotheken wie LangChain oder LlamaIndex liefern vorgefertigte Pipelines, vereinfachen das Prototyping und standardisieren Aufgaben wie das Ansprechen von LLMs, das Parsen von Antworten oder das Verketten von Aufrufen. Diese zusätzlichen Abstraktionsebenen können jedoch das Debugging erschweren, die zugrunde liegende Logik weniger transparent machen und zusätzliche Abhängigkeiten schaffen, die potenziell die Sicherheit und Wartbarkeit eines Projekts beeinträchtigen können.

Anthropic hebt hervor, dass viele gängige Muster bereits in wenigen Zeilen Code direkt mit LLM-APIs implementiert werden können. Dieser Ansatz auf REST-API-Ebene wird als besonders transparent und nachvollziehbar angesehen, da er es Entwicklern ermöglicht, die zugrunde liegende Logik besser zu kontrollieren und zu verstehen.

Frameworks haben den Nachteil, dass sich Entwickler an das jeweilige mentale Modell des Frameworks anpassen müssen. Dennoch können sie in komplexeren Workflows zu Arbeitserleichterungen führen – vorausgesetzt, ihre interne Funktionsweise ist gut verstanden. Eine Entscheidung zwischen Frameworks und direkter API-Nutzung sollte daher immer auf den Anforderungen des jeweiligen Projekts basieren.

Performance: Python vs. Java

Python eignet sich hervorragend für schnelles Prototyping und unterstützt dank zahlreicher Bibliotheken viele Anwendungsfälle.”

Im Vergleich zu kompilierten Sprachen wie Java, Go oder Rust fehlen jedoch native Typsicherheitsmechanismen. Tools wie Pydantic (Python) oder statische Typisierung in TypeScript können dies teilweise ausgleichen, ersetzen jedoch keine echte statische Typisierung.

Autor Dr. Boris Eberhardt, Dipl.-Physiker, adesso
Dr. Boris Eberhardt ist AI-Engineer im Competence Center Data & Analytics AI bei adesso (Website). Eberhardt besitzt langjährige Erfahrung in Softwareentwicklung, Bildverarbeitung und generativer KI. Er entwickelt KI-gestützte Lösungen mit Fokus auf Machine Learning, Computer Vision und Datenanalyse in Python.
Nach seinem Diplom und seiner Promotion in Physik mit Schwerpunkt auf KI-Algorithmen in der medizinischen Bildgebung spezialisierte er sich auf die Entwicklung und den Einsatz von KI-Modellen. Seine Expertise umfasst Full-Stack-Webentwicklung, MLOps sowie den produktiven Einsatz von Open-Source-Technologien wie Stable Diffusion und LLMs in Cloud- und Container-Umgebungen.
Kompilierte Sprachen bieten Vorteile wie effizienteren Ressourcenverbrauch, höhere Skalierbarkeit und geringere Latenzen. Bei LLMs, insbesondere komplexen Reasoning-Modellen wie OpenAIs o1 oder DeepSeeks R1, sind die Inferenzzeiten jedoch so hoch, dass die Laufzeitvorteile kompilierter Codes oft weniger ins Gewicht fallen. In solchen Szenarien spricht die hohe Entwicklungs- und Modellvielfalt von Python für seinen Einsatz.

Python bleibt dank seines umfangreichen Ökosystems an Modellen und Bibliotheken wie TensorFlow, PyTorch oder Hugging Face eine beliebte Wahl. Frameworks wie FastAPI ermöglichen zudem die schnelle Entwicklung modularer Microservices mit einfacher Integration in größere Systeme. Diese Vorteile machen Python besonders in Szenarien sinnvoll, in denen Flexibilität, schnelle Entwicklungszyklen oder die Verfügbarkeit spezialisierter Tools wichtiger sind als maximale Effizienz.

KI-generierter Code

KI-gestützte Tools wie GitHub Copilot, Cursor oder Windsurf können die Produktivität erheblich steigern, insbesondere bei der Generierung von Boilerplate-Code und Unit-Tests. Es ist jedoch unerlässlich, den von KI erzeugten Code sorgfältig zu überprüfen, da blindes Vertrauen zu schwer nachvollziehbaren Fehlern führen kann – besonders in sicherheitskritischen oder hochkomplexen Systemen.

Ein zentrales Problem besteht darin, dass diese Tools keinen vollständigen Überblick über das gesamte System haben und daher möglicherweise unnötige oder redundante Codefragmente erzeugen.”

Selbst die fortschrittlichsten Modelle sind nicht frei von Fehlern. Daher sind Code-Reviews, statische Code-Analysen, Tests und eine klare Dokumentation essenziell, um Qualität und Wartbarkeit sicherzustellen.

Der Entwicklungsprozess ist oft iterativ, wobei der Mensch als Prüfer und Koordinator agiert. In mehreren Schritten überprüft der Entwickler den generierten Code, gibt dem Modell Anweisungen und verfeinert so kontinuierlich das Ergebnis. Diese enge Zusammenarbeit zwischen Mensch und KI ermöglicht es, die Stärken beider Seiten zu nutzen und qualitativ hochwertigen Code zu erstellen.

Microservices vs. Monolithen

Microservices punkten durch Skalierbarkeit und Flexibilität, da einzelne Services unabhängig voneinander entwickelt, skaliert und ausgetauscht werden können. Dieser Vorteil bringt allerdings eine erhöhte Systemkomplexität mit sich – insbesondere in Bezug auf Service Discovery, Lastverteilung und Datenkonsistenz.

Für weniger komplexe oder kleinere Projekte sind monolithische Architekturen oft die bessere Wahl, da sie schneller zu entwickeln und einfacher zu debuggen sind.”

In Cloud-nativen Umgebungen entfalten Microservices ihr volles Potenzial, wenn sie mithilfe von Best Practices wie automatisierten Deployments und guter Observability umgesetzt werden. So bleibt die Komplexität trotz verteilter Architektur handhabbar.

Standardisierung von Komponenten: OCR, Embeddings & Co.

Ein modularer Aufbau ermöglicht es, Technologien wie OCR, Embeddings oder multimodale LLMs flexibel zu kombinieren und gezielt für spezifische Anwendungsfälle einzusetzen. Dieses Baukastenprinzip schafft Flexibilität und erleichtert das Austauschen oder Aktualisieren einzelner Module.

Embeddings: Besonders im RA-Kontext nützlich, können Embeddings über Cloud-APIs oder lokal mit Open-Source-Lösungen wie dem Embedding Inference Server bereitgestellt werden. Einen Überblick über leistungsstarke Modelle bietet das MTEB Leaderboard auf Hugging Face.

OCR-Lösungen: Tools wie PaddleOCR erzielen überzeugende Ergebnisse und können durch LLMs ergänzt werden, um den Output in strukturierte Formate wie JSON zu überführen. Für Enterprise-Anwendungen bieten Cloud-Dienste wie AWS Textract oder Azure Document Intelligence zuverlässige Alternativen.

Multimodale LLMs: Open-Source-Modelle wie Qwen2.5-VL oder Methoden wie ColPali kombinieren Bild- und Textverarbeitung, wodurch sie zusätzliche Präzision und Funktionalität in datenintensiven Szenarien ermöglichen. Multimodale Modelle sind auch bei großen Cloud-Providern wie Azure und AWS verfügbar, was eine skalierbare Alternative zu Open-Source-Lösungen bietet. Hybride Ansätze, die OCR, Embeddings und multimodale Modelle vereinen, sind besonders für komplexe Anforderungen geeignet.

Die optimale Kombination hängt stets vom spezifischen Problem ab – eine modulare Architektur gewährleistet die nötige Flexibilität, um Technologien je nach Bedarf anzupassen oder auszutauschen.

Fazit

Die Integration von LLMs erfordert eine durchdachte Architektur, die sowohl Modularität als auch Flexibilität sicherstellt. Während Frameworks wie LangChain eine rasche Implementierung unterstützen, bieten individuelle Routinen mehr Kontrolle und Transparenz. Für hochperformante Anwendungen sind kompilierte Sprachen häufig im Vorteil, wohingegen Python in Prototypen oder weniger kritischen Szenarien seine Stärken ausspielt.

Zudem zeigt sich, dass LLMs in Kombination mit OCR und multimodalen Ansätzen erhebliches Potenzial haben, strukturierte Ergebnisse effizient zu erzeugen. Für Enterprise-Anwendungen sind verlässliche und skalierbare Cloud-Angebote wie AWS und Azure nach wie vor zentrale Optionen, die durch lokale oder Open-Source-Alternativen ergänzt werden können – abhängig von individuellen Anforderungen an Sicherheit, Skalierbarkeit und Kosten.Dr. Boris Eberhardt, adesso

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert