Jede Anfrage endet mit einem leeren 500
Eines Nachmittags beantwortete Whipyard jeden asynchronen Auftrag mit einem HTTP 500. Ohne Text, ohne Problembeschreibung, einfach leer. Synchrone Anfragen liefen noch.
Beitrag öffnenEntwickler-Blog · Notizen aus der Praxis
Notizen aus .NET, WPF, Azure und dem echten Entwickleralltag.
Aktuelle Beiträge
Neu im Dossier
Drei aktuelle Fundstücke aus Entwicklung, Werkzeugen und Praxis.
Eines Nachmittags beantwortete Whipyard jeden asynchronen Auftrag mit einem HTTP 500. Ohne Text, ohne Problembeschreibung, einfach leer. Synchrone Anfragen liefen noch.
Beitrag öffnenAus dem Archiv
Für einen Vergleich habe ich 36 Anfragen an ein Sprachmodell geschickt, sauber nacheinander: Anfrage, Antwort abwarten, nächste Anfrage. Whipyard, mein Vermittler vor der Grafikkarte, hat daraus ein Desaster gemacht. In der Lücke zwischen zwei Anfragen sah es nur noch wartende Aufträge eines anderen Modells, entlud meins, lud das andere, und für meine nächste Anfrage ging es wieder zurück. Das Modell wurde 20-mal in sieben Minuten geladen, jedes Mal rund zehn Sekunden.
Auf einem AIDA-Schiff mit Getränkepaket stellt sich an jeder Bar die gleiche Frage: Was gibt es überhaupt, und was davon ist im Paket enthalten? Die gedruckte Karte liegt irgendwo auf dem Tresen und ist lang. Und ausgerechnet die zweite Frage beantwortet sie nur umständlich: Was zum Paket gehört, muss man sich aus Kategorien, Ausnahmen und Fußnoten zusammenreimen. Bis man sich durchgeblättert hat, wartet der Barkeeper schon.
Bei mir wollen inzwischen mehrere Programme lokale Modelle benutzen. WhipRadio braucht ein Sprachmodell für Moderationen, ein Musikmodell für Songs und eine Stimme für die Ansagen. Daneben laufen Chats, ab und zu Bilder. Jedes dieser Modelle hat seinen eigenen Server, und alle wollen dieselbe Grafikkarte.
Dieser Blog ist eine statische Jekyll-Seite. Ich wollte wissen, welche Beiträge überhaupt gelesen werden, aber ohne Analysedienst, ohne Cookie-Banner und ohne JavaScript. Herausgekommen ist ein Zähler aus drei Teilen, der seit dem Sommer läuft.
Ich habe einen Deploy in GitHub Actions von einer SFTP-Action auf rsync umgestellt. Die alte Action war an der Node-Version der Runner gescheitert, und rsync --delete räumt ohnehin sauberer auf. Damit die Rechte stimmen, kam --chmod dazu:
Ich wollte auf einem Server warten, bis ein länger laufendes Skript fertig ist, und habe dafür in einer Schleife per SSH nachgesehen:
Ich wollte eine Debug-Version meiner .NET-Android-App schnell aufs Testhandy bringen, also das gebaute APK per adb install installiert. Die App stürzte sofort ab, im Log stand „Could not load System.Private.CoreLib.dll“.
Das Blazor-WebAssembly-Frontend von DropicIsland bringt seine Dateien schon vorkomprimiert mit, als .br und .gz. Per .htaccess liefert Apache dann app.css.br aus, wenn der Browser Brotli kann, und setzt Content-Encoding: br. Nach dem ersten Deploy blieb die Seite trotzdem leer und ohne Styles.
Die PHP-API von DropicIsland arbeitet mit Bearer-Token. Lokal im Docker-Container liefen alle Tests, auf dem Strato-Webspace scheiterte jeder angemeldete Aufruf mit „No token provided“. Der Header war im Browser eindeutig gesetzt.
In WhipRadio, meinem Hobbyprojekt für einen Radiosender, bei dem Musik, Moderation und Sendeplan aus lokalen Modellen kommen, plant ein Modell über llama.cpp jeden Song als JSON: Titel, Stil, Songtext und eine kurze Geschichte dazu. Das Schema wird per JSON Schema vorgegeben, llama.cpp übersetzt es in eine Grammatik und erzwingt beim Erzeugen gültiges JSON. Das klang nach einer sicheren Sache. Bis ich mir die Abbrüche angesehen habe.
Nach Thema einsteigen