Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

GenAI für Full Stack EntwicklerInnen: Aller Anfang ist... lokal? (Teil 1)

14.6.2024 | 7 Minuten Lesezeit

Als Full Stack EntwicklerIn gibt es heutzutage wohl genug Themenkomplexe zur Einarbeitung. Ob das nächste Frontend-Framework des Jahres, die neue Backend-Technologie, ein weiterer Security-Scanner oder doch nur eine weitere Cloud-Integration: Die Auswahl ist schwer, am Ball zu bleiben fast unmöglich. Doch während wir versuchen, irgendwie eine Balance zwischen Wissenstiefe und Vielseitigkeit zu finden, tauchen immer wieder neue Trends auf, die uns unsere Kompetenz in Frage stellen lassen. Generative künstliche Intelligenz, oder GenAI, war für mich ein solches Thema. Seit Jahren geistert es irgendwo im Internet herum, mal in den Schlagzeilen, mal nur auf der vergilbten Overheadfolie eines Tübinger Uni-Professors. Doch spätestens seit ChatGPT 2022 veröffentlicht wurde, ist der Hype-Train völlig aus dem Ruder gelaufen. An jeder Ecke sprießen neue, bessere Chatbots hervor, und kaum ein Tool von Rang und Namen kann es sich mittlerweile noch leisten, nicht wenigstens irgendetwas mit KI zu machen. Bislang hatte ich es gekonnt geschafft, mein KI-Wissen auf die Nutzung von ChatGPT und Github Copilot zu beschränken. Doch irgendwie schien dieser Ansatz an allen Ecken und Enden zu bröckeln. Immer mehr Kunden suchen nach KI-EntwicklerInnen und möchten intelligentere Services bauen.

Da habe ich mich als Full Stack Entwickler gefragt: Wie lange können wir diesem Trend noch entgehen? Was wäre denn eine entsprechende Ergänzung meines Portfolios, um auch noch in zwei Jahren wenigstens mitreden zu können? Wo liegt die Grenze zwischen ausreichender Wissenstiefe und dem KI-Experten, der denkt, Vue sei das französische Wort für Augenlicht? In dieser Blogartikelserie möchte ich diesen Fragen nachgehen. Ich möchte herausfinden, was ich als Full Stack Entwickler tun kann, um der „neuen“ KI-Welt angemessen begegnen zu können. Was sind die ersten Themen, die ich mir aneignen sollte? Wie kann ich von GenAI profitieren und lohnt sich das überhaupt? Werde ich in ein paar Wochen das Schreiben an den Nagel hängen können und mein selbsttrainiertes KI-Modell macht die ganze Arbeit? Und mal ganz unter uns: Wie schwer kann es denn eigentlich sein, nachdem wir es mittlerweile geschafft haben, <div>-Elemente ordentlich zu zentrieren!

Working on my machine

Als ich vor ein paar Tagen blauäugig an dieses Thema herangetreten bin, war meine Vorstellung von GenAI die Folgende: „Große Firmen haben riesige Teams an Wissenschaftlern über Jahre hinweg in einen Keller gesperrt, ein paar hundert Mainframes gesponsert und am Ende ward Licht (irgendwo im Rechenzentrum). Und die Menschheit sah, dass es gut war."

In meiner Wahrnehmung waren LLMs (Large Language Models) das Ergebnis riesiger Rechenleistungen. Sie benötigten unzählige Grafikkarten, Terabytes an Festplattenspeicher und die Ressourcen einer Cloud, um brauchbare Ergebnisse zu liefern. Sicher, gerade die Giganten der Branche wie OpenAI, Meta und Google machen das auch so, doch für mich als kleinen Full Stacker war diese große, hochskalierte Welt zunächst vor allem Eines: einschüchternd. Als ich dann von einigen unserer KI-Experten lernen durfte, dass die Magie auch schon im Kleinen passiert, war ich sofort Feuer und Flamme. Denn wann immer ich in der Lage wäre, etwas auf meiner eigenen Maschine laufen zu lassen, wäre der Entwicklungsprozess deutlich entspannter.

Ich hätte, zumindest gefühlt, die volle Kontrolle über das, was da passiert und müsste mich zudem auch nicht um Lizenzen, Abrechnung und ähnliche Themen kümmern. In den nächsten Absätzen möchte ich euch also vorstellen, mit welchen Tools ein erster, entspannter Einstieg in das Thema GenAI möglich ist, komplett ohne eine Internetanbindung.

ollama - Ein kleiner Schritt für meine Festplatte, ein großer Schritt für’s Selbstbewusstsein

4.7 Gigabyte. Mit dieser heutzutage lächerlich kleinen Anzahl an Bytes verspricht llama3, eines der bekanntesten LLMs der Szene, das beste frei verfügbare KI-Modell zu sein. Fair enough, llama3 hat auch noch viel größere Modelle, doch dank Komprimierung (Quantization) und kleineren Datensätzen haben die KollegInnen von Meta es geschafft, ihre Chat-KI auf diese wunderbar handliche Größe zu schrumpfen. Fragt man llama3, wäre Ollama zwar ein mesoamerikanisches Ballspiel; für uns ist es vor allem eine Website und ein CLI-Tool, um ebensolche Open-Source-KI-Modelle verfügbar zu machen.

Nachdem man sich das CLI-Tool heruntergeladen und installiert hat, ist der erste lokale Chatbot nicht mehr fern. Ein einfaches ollama run llama3 lädt das Modell auf den Laptop und startet direkt einen Chat. Auch wenn llama3 noch keine Kenntnisse von Ollama hat, ist die Webseite an sich eine Goldgrube. Dort gibt es allerlei KI-Modelle jedweder Couleur, gut nutzbare Anleitungen, und allein das süße Llama des Logos ist einen Besuch wert!

Auf die Frage nach ollama scheint llama3 keine sinnvolle Antwort zu kennen

Ein kleiner Schmankerl obendrauf ist, dass alle mit ollama ausgeführten Modelle auch über eine REST-Api angesprochen werden können.

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false
}'

So wäre es schon in diesem Minimal Setup möglich, einen ersten kleinen Chatbot verfügbar zu machen und das ganz ohne aufwändige Cloud-KI Integration.

Die Antworten des Bots übertreffen meine Erwartungen zwar um Längen, können sich aber natürlich nicht vollständig mit ChatGPT und Co messen. Da es bei ollama auch viel spezialisiertere Modelle gibt lassen sich aber schnell bessere Ergebnisse produzieren, je nach Use Case.

Open WebUI - Let it shine!

So schön ein Terminal auch sein mag, richtig nutzbar ist unser lokaler Chatbot so wohl noch kaum. Das Open WebUI Projekt kann uns hier schnell Abhilfe leisten. Mit einem stark an ChatGPT erinnernden Interface lassen sich damit schnell alle ollama-Modelle zu auch von Laien nutzbaren KI-Partnern umfunktionieren. Am einfachsten geht das mit Docker.

docker run -p 3000:8080 -e WEBUI_AUTH=False  -v open-webui:/app/backend/data ghcr.io/open-webui/open-webui:main

Hier gibt es noch ein paar Details zu beachten:

  • Je nach Setup brauchst du noch eine Verbindung zum Host-System. Bei meinem MacOS-Setup mit Rancher Desktop reicht der obige Befehl, bei Docker Desktop brauchst du noch: --add-host=host.docker.internal:host-gateway damit das WebUI deine lokale ollama Instanz findet. Mehr Infos dazu findest du in diesem Ticket.

  • Zur Vereinfachung habe ich die Authentifizierung ausgeschaltet, da ich das System erst einmal nur lokal hoste. Für komplexere Setups ist das natürlich nicht geeignet.

  • Das Interface wird auf Port 3000 erreichbar sein

Ist das Setup abgeschlossen, finden wir unter http://localhost:3000 unser eigenes kleines “ChatGPT”.

Das Open WebUI interface erinnert doch schon stark an OpenAI's ChatGPT

Continue - Code Completion

Das dritte Tool für die ersten Schritte in die Welt der generativen KI schließt die Brücke zum Full Stack wieder. Daher habe ich mir angeschaut, welche Code-Completion es in diesem lokalen Setup gibt. Zuerst benötigen wir für die lokale Codinghilfe ein KI-Modell, das zumindest etwas spezialisierter ist als das llama3. Nach einem kurzen Blick auf ollama habe ich mich für das 1,7 GB große StarCoder2 entschieden. Neben anderen, deutlich größeren und potenteren Alternativen, wie zum Beispiel Mistral's neuem codestral, ist der Overhead an Rechenpower bei StarCoder2 einfach geringer.

Nach der gewohnten Installation mit ollama fehlt dann nur noch eine Integration für die IDE. Hier kommt das Continue-Projekt ins Spiel, das zum Beispiel bei IntelliJ über den Plugin-Mechanismus installiert werden kann. Dann muss noch kurz das richtige Modell in Continue eingestellt werden und fertig ist die KI-basierte Coding-Unterstützung. Meiner Erfahrung nach sind viele KI-generierte Codeblöcke eher hinderlich als hilfreich, aber mit ein bisschen Übung lernt man, die Diamanten herauszufiltern.

Besonders cool an Continue ist auch das Erklär-Feature, das mit einer einfachen Tastenkombination alle markierten Codeabschnitte analysiert und verständlich macht. Das einzige Risiko dabei bleibt, dass die Verlockung zu einer Grundsatzdiskussion über Kommas am Ende der Zeile mit dem Chatbot einfach kein Ende findet.

Eine solch brauchbare Antwort hätte ich eigentlich nicht erwartet, Continue ist eine tolle IDE-Integration

Was kommt als nächstes?

Mit diesem Setup ist der erste Schritt in die spannende Welt der generativen KI getan. Es lassen sich auch spezialisierte KI’s lokal ausprobieren und letztlich sogar schon im Entwicklungsalltag nutzen. Man bekommt ein initiales Gefühl für die Technik und Terminologien im GenAI Umfeld ohne sich selbst die Hände schmutzig zu machen.

Im nächsten Artikel werde ich über einen ersten konkreten Usecase schreiben. Denn so nett die Chatbots auch sind, von ollama und meinen eigenen Dokumenten scheinen sie nicht viel zu verstehen. Um das zu ändern schauen wir uns sogenannte RAG-Systeme (Retrieval-Augmented Generation) an. Eine Technik, die euch als Full Stack EntwicklerInnen höchstwahrscheinlich in den nächsten Jahren über den Weg laufen wird.

Beitrag teilen

Gefällt mir

5

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.