,

Abends, wenn das Kind schläft: Coden mit KI – lokal vs. Cloud

|

Wie hilf­reich ist KI beim Pro­gram­mie­ren, woll­te ich wis­sen. Das Set­up: Abends eine Stun­de, wenn das Kind zu Bett gegan­gen ist, unter Ein­satz von loka­len und cloud­ba­sier­ten LLMs. Was dabei her­aus­kam? Ein klei­ner Python-Ser­vice, ein hüb­sches Dash­board – und ein klei­ner Ver­gleich zwi­schen LLMs, jen­seits vom Hype.

Ich habe eigent­lich schon lan­ge das Bedürf­nis, mal wie­der rich­tig zu pro­gram­mie­ren. Beruf­lich ist das inzwi­schen über zehn Jah­re her. Klar, ich bin in Soft­ware-Teams geblie­ben, habe Pro­dukt­ver­ant­wor­tung über­nom­men, war nah dran. Natür­lich habe ich das Hand­werk nie wirk­lich auf­ge­ge­ben und in pri­va­ten Pro­jek­ten in mei­ner Frei­zeit hier und da unter­schied­li­che Sachen pro­gram­miert und sogar zu einem gro­ßen bekann­ten Open-Source-Pro­jekt was Klei­nes bei­getra­gen (was mir ein ent­spre­chen­des Badge in Git­hub ein­brach­te). Doch mal ehr­lich: Mit Klein­kind ist selbst dafür kaum noch Zeit.

Loka­le vs. cloud­ba­sier­te LLMs

Dann kam LLM. Oder sagen wir, der Moment, in dem die KI-Wel­le auch im All­tag spür­bar wur­de. Ich hat­te die Sprach­mo­del­le schon län­ger genutzt, vor allem für Tex­te, Bil­der, Zusam­men­fas­sun­gen und auch für Prompt-Expe­ri­men­te. Aber irgend­wann war der Gedan­ke da: Was pas­siert, wenn ich als Qua­si-n00b LLMs zum Pro­gram­mie­ren nut­ze? Ein­fach, um zu sehen, was geht, und weil es viel­leicht Spaß macht.

Ich woll­te wis­sen, wie gut die Unter­stüt­zung wirk­lich ist, gera­de wenn man abends nur eine Stun­de hat, wenn das Kind schläft und man selbst noch halb­wegs wach ist. Mein Plan: ein klei­ner Python-Ser­vice, der Fit­ness­da­ten über Blue­tooth LE aus­liest und sie in einem Dash­board anzeigt. Nicht bis ins Detail poliert, kein Tuto­ri­al, eher ein per­sön­li­cher Test, wie weit man mit KI beim Coden kommt.

Zum Ein­satz kamen

  • Qwen 2.5 Coder (7b)
  • Deep­Seek Coder (6.7b)
  • CodeLl­ama (7b)

Alle lie­fen lokal auf mei­nem Note­book. Dazu habe ich zwei Cloud-Model­le genutzt: ChatGPT und Git­Hub Copi­lot, das eben­falls auf Ope­nAIs ChatGPT basiert. Als IDE wur­de Visu­al Stu­dio Code mit der Con­ti­nue-Erwei­te­rung für den LLM-Sup­port verwendet. 

Die Kurz­fas­sung: Kei­nes der loka­len Model­le ist so leis­tungs­fä­hig wie die Cloud-Model­le. Das über­rascht nicht. 7 Mil­li­ar­den Para­me­ter pas­sen halb­wegs per­for­mant auf einen Lap­top. GPT-Model­le lau­fen mit Hun­der­ten Mil­li­ar­den. Aber trotz­dem: Es ist erstaun­lich, wie gut die­se Open-Source-Model­le auf einem durch­schnitt­li­chen Rech­ner per­for­men. Und den berühm­ten Turing-Test könn­ten sie mit zwei zuge­drück­ten Augen bestehen, da Men­schen auch viel Quatsch schreiben.

Wer ist hier der n00b?

Vor­weg: Das ist rein anek­do­ten­ba­siert und kei­ne empi­ri­sche Unter­su­chung, son­dern mei­ne per­sön­li­che Meinung.

Und was kön­nen sie? 

Mei­ner Mei­nung nach ist QWEN bes­ser als Deep­Seek, und Deep­Seek wie­der­um bes­ser als CODELAMA, zumin­dest wenn es dar­um geht, bestehen­den Code zu erklä­ren, ein paar Hin­wei­se zu geben oder ein­fa­chen Code zu erzeu­gen. Für Boi­ler­p­la­te-Kram und zum Ver­ste­hen tau­gen sie also ganz gut. Aber für sau­be­res Refac­to­ring oder kom­ple­xe Neu­ent­wick­lung sind sie eher zu limi­tiert. Das liegt auch dar­an, dass bei­spiels­wei­se eine HTML-Datei mit (in mei­nem Fall) nur knapp 370 Zei­len bereits die Kon­text-Län­ge über­schrei­tet – so zumin­dest die Feh­ler­mel­dung, wenn man im Agent-Modus arbei­ten möch­te.
Der Agent-Modus lässt die KI eigen­stän­dig im Code arbei­ten, statt nur auf vor­her gestell­te Fra­gen zu ant­wor­ten, wie das im Chat-Modus der Fall ist. Scha­de, wenn das schon bei so klei­nen Datei­en nicht mehr funk­tio­niert. Daher bleibt bei den loka­len Model­len nur der Chat für Rück­fra­gen und Erklä­run­gen oder aber das Aus­wäh­len eines klei­nen Berei­ches als Kon­text für den Agen­ten. Es sei zudem ange­merkt, dass von den getes­te­ten LLMs nur QWEN den Agent-Modus unterstützt. 

Copi­lot hat die­se kras­se Ein­schrän­kung hin­ge­gen nicht und spielt damit sei­ne Stär­ken aus. Gera­de bei UI-Designs oder sich wie­der­ho­len­den Auf­ga­ben ist der Agent-Modus sehr hilf­reich und nimmt einem viel Arbeit ab. Manch­mal reicht ein kur­zer Prompt wie „Bau ein schö­nes Dash­board für die Daten und füge ein Dia­gramm für Echt­zeit­dar­stel­lung ein“ und du bekommst eine hüb­sche Basis, wie ich sie in die­ser kur­zen Zeit nie bes­ser hin­be­kom­men hätte!

Pro­ble­ma­tisch wird es bei kom­ple­xen API-Anbin­dun­gen oder wenn man auf exak­te Spe­zi­fi­ka­tio­nen besteht. Dann hapert es schnell an der Genau­ig­keit. So habe ich bei­spiels­wei­se per Prompt den Agen­ten dar­um gebe­ten, pyftms ein­zu­bin­den (eine Python-Biblio­thek, mit der sich Blue­tooth-Fit­ness­ge­rä­te über das FTMS-Pro­fil aus­le­sen und steu­ern las­sen), und dar­über dann den Trai­nings-Wider­stand ein­zu­stel­len. Hier hal­lu­zi­nier­te sich dann der Agent aller­dings eine nicht exis­tie­ren­de Metho­de set_​resistance_​level() zurecht, statt die kor­rek­te set_​resistance_​level() zu ver­wen­den, wie sie in der Doku­men­ta­ti­on beschrie­ben wird. Natür­lich war dabei auch die Signa­tur nicht rich­tig. Und dabei hat­te ich sogar die URL zur besag­ten Doku­men­ta­ti­on der KI mit­ge­ge­ben und sie hat es sogar abgerufen! 

Ob ich das mit einem aus­ge­klü­gel­ten Prompt viel­leicht bes­ser hin­be­kom­men hät­te? Viel­leicht. Aber dann kann ich auch selbst die Doku­men­ta­ti­on nach­schla­gen und es sel­ber machen. 

Übri­gens wird das auch zum Teil in der aktu­el­len For­schung so bestätigt:

Wäh­rend KI-Model­le zwar in Test­si­tua­tio­nen immer bes­ser abschnei­den, sich aber nach wie vor schwer mit den deut­lich kom­ple­xe­ren Pro­ble­men ech­ter Soft­ware-Pro­jek­te tun. [Quel­le: t3n /​Macht KI erfah­re­ne Ent­wick­ler schnel­ler?]

Und Hal­lu­zi­na­tio­nen?
Ja, defi­ni­tiv. Die klei­ne­ren Model­le erfin­den häu­fig Din­ge. Aber auch die gro­ßen Cloud-Model­le sind davor nicht gefeit, wie bereits wei­ter oben beschrie­ben. Man muss nach wie vor prü­fen, was da gene­riert wird. Blind über­neh­men funk­tio­niert oft nicht. Manch­mal klingt es plau­si­bel und ist trotz­dem schlicht falsch.

Am Ende kos­tet es also sehr viel Zeit, die Hal­lu­zi­na­ti­on als sol­che zu erken­nen und den Code zu kor­ri­gie­ren. Sehr viel Zeit: Die erwähn­te Stu­die spricht von einem zeit­li­chen Mehr­auf­wand von bis zu 19 Prozent! 

Fai­rer­wei­se sei aber an die­ser Stel­le erwähnt, dass es auch Unter­su­chun­gen gibt, die von einer erheb­li­chen Pro­duk­ti­vi­täts­stei­ge­rung beim Pro­gram­mie­ren mit KIs spre­chen. Und genau die­se Erfah­rung konn­te ich bei bestimm­ten Auf­ga­ben (das Front­end z.B.) auch machen. 

Fazit

LLMs erset­zen kei­ne Ent­wick­ler. Ob das künf­tig der Fall sein wird – dar­über strei­ten sich die Gelehr­ten noch. Aber sie kön­nen unter­stüt­zen. Mal wie ein Juni­or, mal wie ein erfah­re­ner Assis­tent, und manch­mal wie jemand, der Doku rät, statt sie zu lesen. Trotz­dem: Sie hel­fen, gera­de wenn Zeit knapp ist. Und sie sen­ken die Schwel­le, um wie­der ein­zu­stei­gen oder Neu­es auszuprobieren.

Zwei­te Erkennt­nis: Ich brau­che wohl einen bes­se­ren Rech­ner, da mich dann doch die Model­le mit Para­me­tern von 13b und 30b neu­gie­rig machen und die Arbeits­ge­schwin­dig­keit im loka­len Agent-Modus eher lang­sam ist im Ver­gleich zum Chat. 

War­um mich die lokal aus­ge­führ­ten LLMs so stark inter­es­sie­ren? Weil ich damit nicht jedes Prompt durch frem­de Ser­ver jagen muss. Ich kann ein­fach expe­ri­men­tie­ren, ohne dass Code, Ideen oder halb­fer­ti­ge Gedan­ken irgend­wo in einer Cloud lan­den. Es funk­tio­niert zudem off­line (z.B. im Zug in einem Funk­loch). #Daten­schutz

Ich blei­be jeden­falls moti­viert genug, um nach Fei­er­abend wie­der ein paar Code­zei­len zu schrei­ben und dabei die unter­schied­li­chen LLMs wei­ter aus­zu­pro­bie­ren. Der für mich größ­te Mehr­wert liegt dar­in, dass ich mich nicht mit Grund­la­gen einer noch für mich neu­en Pro­gram­mier­spra­che lang­wei­len muss, son­dern direkt tief in die span­nen­de Pro­blem­lö­sung ein­tau­chen kann. 

PS: Ja, KI war mein Lek­tor. Irgend­wer muss sich ja um die Gram­ma­tik küm­mern. Oder wie mein klei­ner Sohn immer sagt: Papa, jag es durch die KI [sic!]!

PPS: Weil wir schon beim The­ma Kind sind: Es gibt eine schö­ne Maus-Fol­ge, in der erklärt wird, wie die KI Tex­te gene­riert. Sehr sehenswert.