[{"data":1,"prerenderedAt":798},["ShallowReactive",2],{"blog-llm-model-migration-regression-testing-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":26,"sources":35,"cover":57,"og":58,"expertise":59,"locales":60,"lang":62,"title":64,"description":65,"coverAlt":66,"metaTitle":67,"takeaways":68,"faq":74,"toc":90,"blocks":124,"others":538},"llm-model-migration-regression-testing","2026-10-16",10,"llmops",[9,10,11,12,13],"Model migration","Regression testing","Deprecations","LLM evals","Canary releases",[15,16,17,18,19,20,21,22,23,24,25],"LLM model migration","LLM regression testing","model deprecation OpenAI","Claude model deprecation","switch LLM model without breaking","LLM model upgrade checklist","prompt regression testing","shadow testing LLM","model retirement date","golden dataset LLM","LLM drift monitoring",[27,29,32],{"name":10,"url":28},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRegression_testing",{"name":30,"url":31},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",{"name":33,"url":34},"Feature toggle","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[36,39,42,45,48,51,54],{"title":37,"url":38},"Claude API docs: Model deprecations","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fmodel-deprecations",{"title":40,"url":41},"OpenAI API docs: Deprecations","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fdeprecations",{"title":43,"url":44},"Gemini API docs: Models and version name patterns","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fmodels",{"title":46,"url":47},"Claude API docs: Claude Opus 5.5 migration guide","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fmodels\u002Fopus-5-5\u002Fmigration-guide",{"title":49,"url":50},"Chen, Zaharia, Zou: How is ChatGPT's behavior changing over time? (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.09009",{"title":52,"url":53},"Sclar et al.: Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.11324",{"title":55,"url":56},"Anthropic: Demystifying evals for AI agents (Jan 2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fdemystifying-evals-for-ai-agents","\u002Fimages\u002Fblog\u002Fllm-model-migration-regression-testing\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-model-migration-regression-testing\u002Fog.jpg","ai-engineer",[61,62,63],"en","de","hu","LLM-Modellmigration ohne Regressionen: Deprecations, Evals, Shadow-Traffic","Ein Playbook für den Wechsel von LLM-Modellen: Deprecation-Fristen, Vertragsfixes, Regression-Suite, Prompt-Tuning, Shadow-Traffic und Canary.","Fünf Migrationsstufen von Inventar und Vertragsanpassungen über Offline-Evals und Shadow-Traffic bis zu einem Canary-Rollout mit Rückweg.","LLM-Modellmigration und Regressionstests · Balázs Csorba",[69,70,71,72,73],"Anbieter nehmen Modelle planmäßig außer Betrieb: OpenAI gibt GA-Modellen mindestens sechs Monate, Anthropic mindestens 60 Tage, Gemini-Previews teils nur zwei Wochen.","Ein Modellwechsel ändert drei Dinge: den API-Vertrag, das Verhalten auf deinen Prompts sowie Token-Zahlen und Kosten; prüfe jedes getrennt.","Exakte Modell-IDs pinnen, pro Anwendungsfall zentralisieren und die echte Nutzung aus Anbieter-Exporten und Gateway-Logs erfassen, bevor du testest.","Altes und neues Modell Seite an Seite auf einem Golden Set aus der Produktion laufen lassen, Gates auf Erfolg, Parse-Fehler, Verweigerungen, Länge, Kosten und Latenz setzen und jede Niederlage lesen.","Über Shadow-Traffic und einen Canary hinter einem Flag ausrollen, Prompt und Modell gemeinsam versionieren und die Suite danach wöchentlich laufen lassen.",[75,78,81,84,87],{"q":76,"a":77},"Wie viel Vorlauf geben LLM-Anbieter vor der Abschaltung eines Modells?","OpenAI dokumentiert mindestens sechs Monate für allgemein verfügbare Modelle, drei Monate für spezialisierte Varianten und unter Umständen zwei Wochen für Preview-Modelle. Anthropic gibt mindestens 60 Tage für öffentlich veröffentlichte Modelle. Google kündigt Gemini-Preview-Modelle mit mindestens zwei Wochen Vorlauf ab und tauscht das Modell hinter -latest-Aliasen aus.",{"q":79,"a":80},"Kann ich einfach die Modell-ID ändern und neu deployen?","Selten. Neuere Modelle können Parameter ablehnen, die das alte akzeptierte, etwa deaktiviertes Thinking, erzwungene Tool-Wahl oder Prefills bei Claude Opus 5.5; auf ein Modell abgestimmte Prompts verhalten sich auf einem anderen anders, und Token-Zahlen können sich ändern. Erst den Vertrag reparieren, dann vor dem Rollout eine Regression-Suite laufen lassen.",{"q":82,"a":83},"Was sollte eine Regression-Suite für eine LLM-Migration messen?","Task-Erfolg auf einem Golden Set aus Produktions-Traffic und vergangenen Vorfällen, Schema- und Parse-Fehler, Verweigerungsrate, Ausgabelänge, Tokens und Kosten pro erledigtem Task sowie Latenz. Vergleiche altes und neues Modell auf denselben Eingaben und lies jeden Fall, in dem das neue Modell verliert.",{"q":85,"a":86},"Was ist Shadow-Testing bei LLMs?","Shadow-Testing schickt eine Kopie der Live-Anfragen an das neue Modell und loggt dessen Antworten neben den ausgelieferten, ohne sie Nutzern zu zeigen. So findest du Fälle, die deiner Offline-Suite fehlen. Stelle sicher, dass der Shadow-Pfad keine Seiteneffekte auslösen kann, besonders bei Agenten mit schreibenden Tools.",{"q":88,"a":89},"Warum schneiden meine Prompts auf einem neueren, besseren Modell schlechter ab?","Prompts sammeln Workarounds für die Eigenheiten des alten Modells, und Forschung zeigt, dass das beste Prompt-Format zwischen Modellen nur schwach korreliert. Entferne zuerst alte Workarounds, stimme Reasoning- oder Effort-Einstellungen neu ab, nutze Structured Outputs statt Format-Überredung und ergänze erst dann neue Anweisungen, gebunden an scheiternde Fälle.",[91,94,97,100,103,106,109,112,115,118,121],{"id":92,"title":93},"why-model-swaps-break","Warum ein Modellwechsel Dinge kaputt macht",{"id":95,"title":96},"deprecation-timelines","Deprecation-Zeitpläne bei OpenAI, Anthropic und Google",{"id":98,"title":99},"pin-and-inventory","Modell-IDs pinnen und wissen, wo sie genutzt werden",{"id":101,"title":102},"migration-pipeline","Die Migrationspipeline",{"id":104,"title":105},"contract-changes","Stufe 2: erst den Vertrag reparieren, dann Verhalten testen",{"id":107,"title":108},"regression-suite","Stufe 3: die Regression-Suite für einen Modellwechsel",{"id":110,"title":111},"retune-prompts","Prompts, Effort und alte Workarounds neu abstimmen",{"id":113,"title":114},"shadow-and-canary","Stufe 4 und 5: Shadow-Traffic und Canary",{"id":116,"title":117},"continuous-regression","Die Suite nach der Migration weiterlaufen lassen",{"id":119,"title":120},"checklist","Migrations-Checkliste",{"id":122,"title":123},"sources","Quellen",[125,129,132,135,138,163,166,167,170,206,213,214,217,251,252,255,264,265,268,334,341,342,345,396,399,401,414,415,418,440,447,448,455,467,468,476,484,485,505,513,514],{"type":126,"content":127},"paragraph",[128],"Jedes LLM-Feature, das du auslieferst, hat ein Ablaufdatum, das du nicht gewählt hast. Anbieter nehmen Modelle planmäßig außer Betrieb, und der Nachfolger ist nie ein reiner Austausch: Request-Parameter werden abgelehnt, auf das alte Modell abgestimmte Prompts verhalten sich anders, und der Tokenizer zählt deine Eingaben womöglich anders. Wenn Claude Sonnet 4.5 in deinem Stack steckt, läuft die Uhr gerade sichtbar: Anthropic hat es am 30. September 2026 als veraltet markiert und nimmt es am 30. November 2026 außer Betrieb; empfohlener Nachfolger ist Claude Sonnet 5.5.",{"type":126,"content":130},[131],"Dieser Artikel ist ein Migrations-Playbook: wie Deprecation-Zeitpläne bei OpenAI, Anthropic und Google funktionieren, wie du jede Aufrufstelle findest, was eine Regression-Suite für einen Modellwechsel messen sollte und wie du das neue Modell mit Shadow-Traffic und Canary ausrollst statt mit einem Big-Bang-Wechsel.",{"type":133,"level":134,"id":92,"text":93},"heading",2,{"type":126,"content":136},[137],"Beim Wechsel auf ein neues Modell ändern sich drei verschiedene Dinge, und jedes braucht eine eigene Prüfung:",{"type":139,"ordered":140,"items":141},"list",false,[142,148,153],[143,147],{"tag":144,"children":145},"strong",[146],"Der API-Vertrag."," Parameter, die beim alten Modell funktionierten, liefern beim neuen ein 400. Der Migrationsleitfaden für Claude Opus 5.5 nennt mehrere: Thinking deaktivieren, Thinking-Budgets, erzwungene Tool-Wahl, nicht standardmäßige Sampling-Parameter und Assistant-Prefills werden alle abgelehnt.",[149,152],{"tag":144,"children":150},[151],"Verhalten."," Derselbe Prompt erzeugt andere Ausgaben. Sclar et al. maßen Genauigkeitsunterschiede von bis zu 76 Punkten allein durch bedeutungserhaltende Formatänderungen und fanden, dass das beste Format zwischen Modellen nur schwach korreliert. Ein für Modell A optimierter Prompt ist nicht für Modell B optimiert.",[154,157,158,162],{"tag":144,"children":155},[156],"Kosten und Limits."," Anthropics Leitfaden weist darauf hin, dass der mit Opus 4.7 eingeführte Tokenizer für denselben Text etwa das 1- bis 1,35-Fache an Tokens früherer Modelle verbrauchen kann. Dein ",{"tag":159,"children":160},"code",[161],"max_tokens",", Compaction-Schwellen und Kostenschätzungen verschieben sich mit.",{"type":126,"content":164},[165],"Es gibt noch einen vierten Fall, der gar keine Migration ist: Derselbe Modellname ändert sein Verhalten. Chen, Zaharia und Zou verglichen die Versionen von GPT-4 aus März und Juni 2023 und stellten fest, dass die Genauigkeit beim Erkennen von Primzahlen von 84 % auf 51 % fiel, dazu kamen mehr Formatierungsfehler in generiertem Code. Ihr Fazit, dass sich das Verhalten desselben LLM-Dienstes in kurzer Zeit erheblich ändern kann, ist das Argument dafür, die Regression-Suite regelmäßig laufen zu lassen, nicht nur beim Wechsel.",{"type":133,"level":134,"id":95,"text":96},{"type":126,"content":168},[169],"Wie viel Vorwarnung du bekommst, hängt vom Anbieter und von der Art des Modells ab. Laut der jeweiligen Dokumentation:",{"type":171,"head":172,"rows":179},"table",[173,175,177],[174],"Anbieter",[176],"Mindestvorlauf vor der Abschaltung",[178],"Wie du es überwachst",[180,194,200],[181,184,186],[182,183],"tag","children",[185],"Mindestens 6 Monate für allgemein verfügbare Modelle, 3 Monate für spezialisierte Varianten (Chat, Codex, Deep Research), bei Preview-Modellen teils nur 2 Wochen",[187,190,191],{"tag":159,"children":188},[189],"GET \u002Fv1\u002Fmodels"," liefert pro Modell ein optionales ",{"tag":159,"children":192},[193],"shutdown_date",[195,196,198],[182,183],[197],"Mindestens 60 Tage für öffentlich veröffentlichte Modelle; Kunden mit aktiven Deployments werden benachrichtigt",[199],"Deprecation-Seite mit voraussichtlichen Abschaltdaten; Usage-Export in der Console nach API-Key und Modell",[201,202,204],[182,183],[203],"Preview-Modelle werden mit mindestens 2 Wochen Vorlauf abgekündigt; der -latest-Alias wird ausgetauscht, bei Breaking Changes mit 2 Wochen Vorlauf per E-Mail",[205],"Stabile Modellnamen \"ändern sich normalerweise nicht\"; Deprecation-Seite",{"type":126,"content":207},[208,209,212],"Zwei praktische Folgen. Setze nie ein Preview-Modell oder einen ",{"tag":159,"children":210},[211],"-latest","-Alias hinter ein geschäftskritisches Feature: OpenAIs Doku rät ausdrücklich von Preview-Modellen für solche Workloads ab, sofern du nicht kurzfristig migrieren kannst. Und trag das Abschaltdatum jedes genutzten Modells am Tag der Einführung in einen Kalender ein. Anthropic gibt voraussichtliche Daten derzeit als \"nicht früher als\" an, das ist eine Untergrenze, kein Versprechen.",{"type":133,"level":134,"id":98,"text":99},{"type":126,"content":215},[216],"Eine Migration, deren Umfang du nicht kennst, kannst du nicht abschließen. Vor jedem Test:",{"type":139,"ordered":218,"items":219},true,[220,225,241,246],[221,224],{"tag":144,"children":222},[223],"Exakte Modellbezeichner in Produktion pinnen."," Stabile Namen bei Gemini, exakte IDs bei Claude und OpenAI. Ein Alias bewegt sich ohne Deploy, das Verhalten kann sich also ohne Commit ändern.",[226,229,230,235,236,240],{"tag":144,"children":227},[228],"Die Modell-ID zentral in der Konfiguration halten,"," ein Eintrag pro Anwendungsfall (\"order-extraction\", \"support-triage\"), kein String-Literal pro Aufrufstelle. Ein Gateway wie ",{"tag":231,"to":232,"children":233},"link","\u002Ftools\u002Flitellm",[234],"LiteLLM"," oder ",{"tag":231,"to":237,"children":238},"\u002Ftools\u002Fopenrouter",[239],"OpenRouter"," macht daraus eine Routing-Regel.",[242,245],{"tag":144,"children":243},[244],"Die tatsächliche Nutzung inventarisieren."," Die Codesuche findet die Aufrufstellen, die du kennst. Anthropics Usage-Export in der Console (CSV nach API-Key und Modell) und deine Gateway-Logs finden die vergessenen: den Cronjob, das interne Tool, den Prototyp, der Produktion wurde.",[247,250],{"tag":144,"children":248},[249],"Die Request-Einstellungen pro Anwendungsfall festhalten:"," Max Tokens, Thinking- oder Effort-Einstellungen, Tool-Wahl, Schema für Structured Outputs, Sampling-Parameter. Genau diese kann das neue Modell ablehnen.",{"type":133,"level":134,"id":101,"text":102},{"type":126,"content":253},[254],"Ich schicke jeden Modellwechsel durch dieselben fünf Stufen. Jede Stufe hat ein Ausstiegskriterium, und jeder Fehler schickt dich einen Schritt zurück, nicht mit einem Fix in Produktion weiter.",{"type":256,"attrs":257,"inner":261,"caption":262},"diagram",{"viewBox":258,"role":259,"aria-labelledby":260},"0 0 720 260","img","mig-flow-t mig-flow-d","\u003Ctitle id=\"mig-flow-t\">Fünf Stufen einer LLM-Modellmigration\u003C\u002Ftitle>\u003Cdesc id=\"mig-flow-d\">Inventar und Pinning, dann Vertragsanpassungen, bis keine Anfrage mehr abgelehnt wird, dann eine Offline-Regression-Suite, die altes und neues Modell vergleicht, dann Shadow-Traffic auf Live-Anfragen, dann ein Canary-Rollout an einen kleinen Teil der Nutzer vor dem vollständigen Rollout. Ein verfehltes Gate schickt die Änderung eine Stufe zurück; ein Feature-Flag erlaubt in der Canary-Stufe das Zurückrollen.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"ah-mig\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"10\" y=\"70\" width=\"132\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"76\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">1 Inventar\u003C\u002Ftext>\u003Ctext x=\"76\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">Aufrufe, Settings\u003C\u002Ftext>\u003Crect x=\"152\" y=\"70\" width=\"132\" height=\"64\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"218\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">2 Vertrag\u003C\u002Ftext>\u003Ctext x=\"218\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">keine 400er\u003C\u002Ftext>\u003Crect x=\"294\" y=\"70\" width=\"132\" height=\"64\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"360\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">3 Offline-Evals\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">alt gegen neu\u003C\u002Ftext>\u003Crect x=\"436\" y=\"70\" width=\"132\" height=\"64\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"502\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">4 Shadow\u003C\u002Ftext>\u003Ctext x=\"502\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">live, nicht ausgeliefert\u003C\u002Ftext>\u003Crect x=\"578\" y=\"70\" width=\"132\" height=\"64\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"644\" y=\"98\" text-anchor=\"middle\" class=\"d-text\">5 Canary\u003C\u002Ftext>\u003Ctext x=\"644\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">5 % bis 100 %\u003C\u002Ftext>\u003Cpath d=\"M142 102H160\" class=\"d-line\" marker-end=\"url(#ah-mig)\" \u002F>\u003Cpath d=\"M284 102H302\" class=\"d-line\" marker-end=\"url(#ah-mig)\" \u002F>\u003Cpath d=\"M426 102H444\" class=\"d-line\" marker-end=\"url(#ah-mig)\" \u002F>\u003Cpath d=\"M568 102H586\" class=\"d-line\" marker-end=\"url(#ah-mig)\" \u002F>\u003Cpath d=\"M502 136V170H218V138\" class=\"d-line d-dash\" marker-end=\"url(#ah-mig)\" \u002F>\u003Ctext x=\"360\" y=\"190\" text-anchor=\"middle\" class=\"d-label\">Gate verfehlt: eine Stufe zurück\u003C\u002Ftext>\u003Cpath d=\"M644 136V220H76V138\" class=\"d-line-accent d-dash\" marker-end=\"url(#ah-mig)\" \u002F>\u003Ctext x=\"360\" y=\"240\" text-anchor=\"middle\" class=\"d-label\">Flag: sofort zurück\u003C\u002Ftext>",[263],"Ein Modellwechsel als Release-Pipeline. Stufe 1 und 2 sind mechanisch; in Stufe 3 bis 5 werden Verhaltensänderungen gefunden.",{"type":133,"level":134,"id":104,"text":105},{"type":126,"content":266},[267],"Vertragsänderungen sind deterministisch, also behandle sie zuerst und getrennt. Lies den Migrationsleitfaden des Anbieters für dein genaues Quell- und Zielmodell. Als konkretes Beispiel einige der Änderungen, die der Leitfaden für Claude Opus 5.5 für Code von älteren Modellen nennt:",{"type":171,"head":269,"rows":276},[270,272,274],[271],"Alte Einstellung",[273],"Bei Claude Opus 5.5",[275],"Lösung",[277,291,303,319,325],[278,287,289],[279,282,283,286],{"tag":159,"children":280},[281],"thinking: {type: \"disabled\"}"," oder ein ",{"tag":159,"children":284},[285],"budget_tokens","-Budget",[288],"400-Fehler",[290],"Feld entfernen; Effort-Stufe wählen (Standard ist medium)",[292,297,298],[293,296],{"tag":159,"children":294},[295],"tool_choice"," any oder ein benanntes Tool",[288],[299,302],{"tag":159,"children":300},[301],"auto"," plus Anweisungen oder Structured Outputs nutzen",[304,316,317],[305,308,309,308,312,315],{"tag":159,"children":306},[307],"temperature",", ",{"tag":159,"children":310},[311],"top_p",{"tag":159,"children":313},[314],"top_k"," mit Nicht-Standardwerten",[288],[318],"Weglassen; über den Prompt steuern",[320,322,323],[321],"Assistant-Prefill, um ein Format zu erzwingen",[288],[324],"Structured Outputs oder Anweisungen im System-Prompt",[326,330,332],[327,329],{"tag":159,"children":328},[161]," für einen älteren Tokenizer bemessen",[331],"Bis zu etwa 35 % mehr Tokens für denselben Text gegenüber Modellen vor Opus 4.7",[333],"Mit Token Counting neu messen; Reserve einplanen",{"type":126,"content":335},[336,337,340],"Das Ausstiegskriterium dieser Stufe ist einfach: Jede im Inventar erfasste Request-Form läuft gegen das neue Modell ohne Fehler durch. Anthropic bietet außerdem einen Skill ",{"tag":159,"children":338},[339],"\u002Fclaude-api migrate"," für Claude Code, der den Modell-ID-Wechsel und die Breaking-Parameter-Änderungen in einer Codebasis anwendet und eine Checkliste für die manuelle Prüfung erzeugt. Solche Tools beschleunigen Stufe 2; Stufe 3 ersetzen sie nicht.",{"type":133,"level":134,"id":107,"text":108},{"type":126,"content":343},[344],"Anthropics Eval-Leitfaden beschreibt Regression-Evals als diejenigen, die nahe 100 % liegen und Rückschritte erkennen sollen. Für einen Modellwechsel lässt diese Suite beide Modelle auf denselben Eingaben laufen und vergleicht. Baue sie aus der Produktion, nicht aus der Vorstellung: echte Anfragen pro Anwendungsfall ziehen, jeden vergangenen Vorfall ergänzen und das erwartete Ergebnis oder eine Referenzantwort daneben ablegen. Und miss mehr als Genauigkeit:",{"type":171,"head":346,"rows":353},[347,349,351],[348],"Metrik",[350],"Warum sie sich beim Modellwechsel bewegt",[352],"Beispiel-Gate (meine Standardwerte)",[354,361,368,375,382,389],[355,357,359],[356],"Task-Erfolg auf dem Golden Set",[358],"Verhaltensänderung",[360],"Kein Rückgang über das Rauschen hinaus; jeder alte Vorfall besteht weiter",[362,364,366],[363],"Schema- und Parse-Fehler",[365],"Formatierungsgewohnheiten unterscheiden sich zwischen Modellen",[367],"Null, mit eingeschalteten Structured Outputs",[369,371,373],[370],"Verweigerungs- und Enthaltungsrate",[372],"Modelle sind unterschiedlich vorsichtig",[374],"Wenige Punkte um das alte Modell; jede neue Verweigerung lesen",[376,378,380],[377],"Ausgabelänge",[379],"Geänderte Ausführlichkeit bricht UIs und SMS-Limits",[381],"Median innerhalb von ±20 %",[383,385,387],[384],"Tokens und Kosten pro erledigtem Task",[386],"Tokenizer, Ausführlichkeit, Thinking",[388],"Vor dem Rollout bekannt und akzeptiert",[390,392,394],[391],"Latenz p50 und p95",[393],"Thinking-Standards, Modellgröße",[395],"Innerhalb des Latenzbudgets des Features",{"type":126,"content":397},[398],"Bewerte offene Ausgaben paarweise: Zeig einem Judge die alte und die neue Antwort auf dieselbe Eingabe in zufälliger Reihenfolge und frag, welche die Rubrik besser erfüllt. Paarvergleiche sind für die Frage \"ist es so gut wie vorher\" stabiler als absolute Scores und bringen die lesenswerten Fälle nach oben. Der Harness selbst ist klein:",{"type":159,"code":400},"import random, statistics\n\ndef compare(cases, old_model, new_model, run, judge, checks):\n    \"\"\"run(model, case) -> Result(text, tokens, ms, refused); judge(case, a, b) -> 'a'|'b'|'tie'\"\"\"\n    rows = []\n    for case in cases:\n        old, new = run(old_model, case), run(new_model, case)\n        flip = random.random() \u003C 0.5                      # hide which answer is new\n        verdict = judge(case, *( (new.text, old.text) if flip else (old.text, new.text) ))\n        new_wins = (verdict == \"a\") == flip if verdict != \"tie\" else None\n        rows.append({\n            \"id\": case.id,\n            \"checks_failed\": [c.name for c in checks if not c(case, new)],   # schema, refs, rules\n            \"new_wins\": new_wins,\n            \"refused\": (old.refused, new.refused),\n            \"len_ratio\": len(new.text) \u002F max(1, len(old.text)),\n            \"token_ratio\": new.tokens \u002F max(1, old.tokens),\n            \"ms\": (old.ms, new.ms),\n        })\n    losses = [r for r in rows if r[\"new_wins\"] is False or r[\"checks_failed\"]]\n    print(\"losses to read:\", [r[\"id\"] for r in losses])\n    print(\"median length ratio:\", statistics.median(r[\"len_ratio\"] for r in rows))\n    return rows",{"type":126,"content":402},[403,404,408,409,413],"Führe jeden Fall mehr als einmal aus, wenn das Feature agentisch oder gesampelt ist; ein Lauf pro Modell verdeckt die Varianz. Und betrachte die Liste der Niederlagen als eigentliches Ergebnis der Stufe: Die Entscheidung weiterzugehen fällt beim Lesen dieser Fälle, nicht anhand eines einzelnen aggregierten Scores. ",{"tag":231,"to":405,"children":406},"\u002Ftools\u002Fpromptfoo",[407],"Promptfoo"," und ähnliche Tools können denselben Seite-an-Seite-Vergleich per Konfiguration ausführen, wenn du keinen Harness pflegen willst; die Methode beschreibt ",{"tag":231,"to":410,"children":411},"\u002Fblog\u002Fllm-evals-for-product-features",[412],"LLM-Evals für Produktfeatures"," ausführlicher.",{"type":133,"level":134,"id":110,"text":111},{"type":126,"content":416},[417],"Wenn die Suite Niederlagen zeigt, widerstehe dem Reflex, Anweisungen auf den alten Prompt zu stapeln. Prompts sammeln Workarounds für die Eigenheiten des Vorgängermodells (\"nie Aufzählungspunkte verwenden\", \"das Feld IMMER zurückgeben, auch wenn leer\"), und ein neueres Modell befolgt sie womöglich zu wörtlich. Das passt zum Befund von Sclar et al., dass sich Vorlieben für Prompt-Formate schlecht zwischen Modellen übertragen. Meine Reihenfolge:",{"type":139,"ordered":218,"items":419},[420,425,430,435],[421,424],{"tag":144,"children":422},[423],"Zuerst Workarounds entfernen"," und neu laufen lassen. Viele Niederlagen verschwinden.",[426,429],{"tag":144,"children":427},[428],"Die Reasoning-Einstellung neu abstimmen."," Bei Claude ersetzt Effort die Thinking-Budgets, und die Standardwerte unterscheiden sich zwischen Modellen (medium bei Opus 5.5). Probiere low, medium und high auf der Suite und wähle pro Anwendungsfall.",[431,434],{"tag":144,"children":432},[433],"Format-Überredung durch Structured Outputs ersetzen,"," wo der Anbieter sie unterstützt.",[436,439],{"tag":144,"children":437},[438],"Erst dann neue Anweisungen ergänzen,"," einzeln, jeweils gebunden an einen scheiternden Fall.",{"type":441,"variant":442,"title":443,"body":444},"callout","warn","Prompt und Modell gemeinsam versionieren",[445],[446],"Ein Prompt ist für ein Modell abgestimmt, nicht allgemein. Speichere Prompt-Version und Modell-ID zusammen, deploye sie zusammen und rolle sie zusammen zurück. Das Modell zurückzurollen und den neuen Prompt zu behalten ist eine dritte Konfiguration, die niemand getestet hat.",{"type":133,"level":134,"id":113,"text":114},{"type":126,"content":449},[450,451,454],"Offline-Suites enthalten nur die Fälle, an die du gedacht hast. ",{"tag":144,"children":452},[453],"Shadow-Traffic"," schickt eine Kopie der Live-Anfragen an das neue Modell, loggt dessen Antwort neben der ausgelieferten und zeigt sie Nutzern nie. Lass das einige Tage über das wöchentliche Traffic-Muster laufen und wende dann dieselben Prüfungen wie in Stufe 3 auf die Shadow-Paare an. Zwei Vorsichtsmaßnahmen: Shadow-Aufrufe kosten Geld, also bei hohem Volumen sampeln; und lass den Shadow-Pfad nie Seiteneffekte ausführen. Bei Agenten nur den lesenden Teil spiegeln oder Tools auf eine Sandbox zeigen lassen.",{"type":126,"content":456},[457,458,461,462,466],"Der ",{"tag":144,"children":459},[460],"Canary"," liefert das neue Modell dann hinter einem Feature-Flag an einen kleinen Teil des Traffics aus, mit denselben Dashboards wie für das alte Modell: Fehlerrate, Verweigerungsrate, Nutzerfeedback, Kosten pro Task und Latenz. Erweitere schrittweise (5 %, 25 %, 100 %) mit festem Beobachtungsfenster pro Schritt und halte die alte Konfiguration bis zum Abschaltdatum deploybar, damit ein Rollback ein Flag-Umschalten ist und kein Release. ",{"tag":231,"to":463,"children":464},"\u002Fblog\u002Fagent-observability-opentelemetry",[465],"Tracing mit OpenTelemetry"," macht den Vergleich pro Modell zu einer Abfrage statt zu einem Projekt.",{"type":133,"level":134,"id":116,"text":117},{"type":126,"content":469},[470,471,475],"Die Regression-Suite ist teuer im Aufbau und günstig im Betrieb. Lass sie wöchentlich gegen die Produktionskonfiguration laufen und bei jeder Prompt- oder Modelländerung. So erkennst du Drift hinter einem stabilen Namen (der Fall von Chen et al.), hast eine Baseline, wenn die nächste Deprecation-Mitteilung kommt, und machst aus \"sollen wir auf das neue, günstigere Modell wechseln?\" eine Messung. Dieselbe Suite macht ",{"tag":231,"to":472,"children":473},"\u002Fblog\u002Fllm-cost-latency-prompt-caching-routing",[474],"Modell-Routing für Kosten"," sicher: Ein günstigeres Modell ist nur dann günstiger, wenn es besteht.",{"type":126,"content":477},[478,479,483],"Leaderboards helfen bei der Auswahl von Kandidaten, wie ich es zum ",{"tag":231,"to":480,"children":481},"\u002Fblog\u002Fartificial-analysis-leaderboard-claude-opus-5-5",[482],"aktuellen Ranking von Artificial Analysis"," beschrieben habe, aber sie sagen dir nicht, ob dein Extraktions-Prompt das Lieferdatum noch findet. Das kann nur deine Suite.",{"type":133,"level":134,"id":119,"text":120},{"type":139,"ordered":218,"items":486},[487,489,491,493,495,497,499,501,503],[488],"Das Abschaltdatum jedes genutzten Modells in den Kalender eintragen; Preview-Modelle und -latest-Aliase in Produktion vermeiden.",[490],"Exakte Modell-IDs pinnen, pro Anwendungsfall zentralisieren und die echte Nutzung aus Anbieter-Exporten und Gateway-Logs inventarisieren.",[492],"Den Migrationsleitfaden für dein genaues Quell- und Zielmodell lesen; zuerst jeden abgelehnten Parameter reparieren.",[494],"Token-Zahlen neu messen und max_tokens, Budgets und Compaction-Schwellen anpassen.",[496],"Altes und neues Modell Seite an Seite auf einem Golden Set aus Produktion und vergangenen Vorfällen laufen lassen.",[498],"Gates auf Erfolg, Parse-Fehler, Verweigerungen, Länge, Kosten pro Task und Latenz setzen und jede Niederlage lesen.",[500],"Alte Prompt-Workarounds entfernen, bevor neue Anweisungen dazukommen; Effort pro Anwendungsfall neu abstimmen.",[502],"Live-Traffic ohne Seiteneffekte spiegeln, dann Canary hinter einem Flag mit Rollback bis zum Abschaltdatum.",[504],"Die Suite nach der Migration wöchentlich weiterlaufen lassen.",{"type":126,"content":506},[507,508,512],"Wenn bei dir ein Abschaltdatum näher rückt und du Unterstützung bei der Migration willst, siehe ",{"tag":231,"to":509,"children":510},"\u002Fexpertise\u002Fai-engineer",[511],"AI Engineering",".",{"type":133,"level":134,"id":122,"text":123},{"type":139,"ordered":218,"items":515},[516,520,523,526,529,532,535],[517],{"tag":518,"href":38,"children":519},"a",[37],[521],{"tag":518,"href":41,"children":522},[40],[524],{"tag":518,"href":44,"children":525},[43],[527],{"tag":518,"href":47,"children":528},[46],[530],{"tag":518,"href":50,"children":531},[49],[533],{"tag":518,"href":53,"children":534},[52],[536],{"tag":518,"href":56,"children":537},[55],[539,592,647,694],{"slug":540,"published":5,"minutes":541,"category":7,"tags":542,"keywords":548,"about":560,"sources":567,"cover":586,"og":587,"expertise":59,"locales":588,"lang":62,"title":589,"description":590,"coverAlt":591},"structured-outputs-json-schema-llm",9,[543,544,545,546,547],"Structured outputs","JSON Schema","Constrained decoding","LLM APIs","Validation",[549,550,551,552,553,554,555,556,557,558,559],"structured outputs LLM","JSON schema LLM output","OpenAI structured outputs strict mode","Claude structured outputs","Gemini structured output","constrained decoding","JSON mode vs structured outputs","validate LLM JSON output","Zod structured output","Pydantic LLM output","vLLM structured outputs",[561,564,566],{"name":562,"url":563},"JSON","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON",{"name":544,"url":565},"https:\u002F\u002Fjson-schema.org\u002F",{"name":30,"url":31},[568,571,574,577,580,583],{"title":569,"url":570},"OpenAI API docs: Structured model outputs","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fstructured-outputs",{"title":572,"url":573},"Claude API docs: Structured outputs","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fstructured-outputs",{"title":575,"url":576},"Gemini API docs: Structured outputs","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fstructured-output",{"title":578,"url":579},"vLLM docs: Structured Outputs","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Ffeatures\u002Fstructured_outputs.html",{"title":581,"url":582},"Tam et al.: Let Me Speak Freely? A Study on the Impact of Format Restrictions on Performance of LLMs (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2408.02442",{"title":584,"url":585},"Geng et al.: JSONSchemaBench: A Rigorous Benchmark of Structured Outputs for Language Models (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2501.10868","\u002Fimages\u002Fblog\u002Fstructured-outputs-json-schema-llm\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fstructured-outputs-json-schema-llm\u002Fog.jpg",[61,62,63],"Structured Outputs mit JSON Schema: was die Garantie abdeckt und was nicht","Wie Structured Outputs und Constrained Decoding bei OpenAI, Claude, Gemini und vLLM funktionieren, welche Schemaregeln zählen und was du validierst.","Ein JSON Schema wird zu einer Grammatik kompiliert, die Tokens maskiert und schemagültiges JSON erzeugt, das danach eine fachliche Validierung durchläuft.",{"slug":593,"published":5,"minutes":541,"category":7,"tags":594,"keywords":600,"about":613,"sources":621,"cover":641,"og":642,"expertise":59,"locales":643,"lang":62,"title":644,"description":645,"coverAlt":646},"evaluating-ai-agents-trajectories",[595,596,597,598,599],"Agent evals","Trajectories","Tool calling","pass^k","LLM-as-judge",[601,602,603,604,605,606,607,608,609,610,611,612],"evaluating AI agents","agent trajectory evaluation","agent evals","tool call accuracy","trajectory match evaluator","pass^k metric","tau-bench","LLM as a judge for agents","agent regression testing","outcome vs trajectory evaluation","agentevals","tool correctness metric",[614,617,620],{"name":615,"url":616},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":618,"url":619},"Software testing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_testing",{"name":30,"url":31},[622,623,626,629,632,635,638],{"title":55,"url":56},{"title":624,"url":625},"Yao et al.: τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.12045",{"title":627,"url":628},"Barres et al.: τ²-Bench: Evaluating Conversational Agents in a Dual-Control Environment (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.07982",{"title":630,"url":631},"LangChain: agentevals (GitHub)","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Fagentevals",{"title":633,"url":634},"DeepEval docs: Tool Correctness","https:\u002F\u002Fdeepeval.com\u002Fdocs\u002Fmetrics-tool-correctness",{"title":636,"url":637},"Ragas docs: Agentic or tool use metrics","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Fagents\u002F",{"title":639,"url":640},"OpenAI API docs: Trace grading","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Ftrace-grading","\u002Fimages\u002Fblog\u002Fevaluating-ai-agents-trajectories\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fevaluating-ai-agents-trajectories\u002Fog.jpg",[61,62,63],"KI-Agenten evaluieren: Trajektorien, Ergebnisse und Zuverlässigkeit bewerten","KI-Agenten evaluieren: Ergebnis- und Trajektorie-Grader, Match-Modi, pass^k, isolierte Umgebungen und LLM-Judges, die belastbar sind.","Eine Agenten-Trajektorie aus Tool-Aufrufen wird zweimal bewertet: ein Trajektorie-Grader prüft Reihenfolge und Argumente, ein Ergebnis-Grader vergleicht die Datenbank mit dem Zielzustand.",{"slug":648,"published":5,"minutes":649,"category":7,"tags":650,"keywords":656,"about":667,"sources":675,"cover":688,"og":689,"expertise":59,"locales":690,"lang":62,"title":691,"description":692,"coverAlt":693},"semantic-caching-llm-responses",6,[651,652,653,654,655],"Semantic cache","LLM cost","Latency","Embeddings","Redis",[657,658,659,660,661,662,663,664,665,666],"semantic caching llm","semantic cache","llm response cache","gptcache","semantic cache similarity threshold","prompt caching vs semantic caching","reduce llm api cost","cache llm answers redis","semantic cache false positive","llm cache invalidation",[668,671,674],{"name":669,"url":670},"Cache (computing)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCache_(computing)",{"name":672,"url":673},"Sentence embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSentence_embedding",{"name":30,"url":31},[676,679,682,685],{"title":677,"url":678},"Regmi and Pun: GPT Semantic Cache: Reducing LLM Costs and Latency via Semantic Embedding Caching (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2411.05276",{"title":680,"url":681},"Zilliz: GPTCache README (modules, similarity evaluation, eviction)","https:\u002F\u002Fgithub.com\u002Fzilliztech\u002FGPTCache",{"title":683,"url":684},"Claude Platform Docs: Prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fprompt-caching",{"title":686,"url":687},"pgvector README: vector types and indexes","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector","\u002Fimages\u002Fblog\u002Fsemantic-caching-llm-responses\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fsemantic-caching-llm-responses\u002Fog.jpg",[61,62,63],"Semantisches Caching für LLM-Apps: wann Antworten wiederverwenden sicher ist und wann nicht","Wie semantische Caches LLM-Antworten für ähnliche Fragen wiederverwenden, was sie vom Prompt-Caching trennt, wie man falsche Treffer und Lecks vermeidet.","Eine neue Frage wird eingebettet und mit gecachten Fragen verglichen; über einer Ähnlichkeitsschwelle kommt die gespeicherte Antwort, darunter wird das Modell aufgerufen.",{"slug":695,"published":696,"minutes":6,"category":7,"tags":697,"keywords":703,"about":712,"sources":722,"cover":792,"og":793,"expertise":59,"locales":794,"lang":62,"title":795,"description":796,"coverAlt":797},"self-hosted-llm-gdpr-cost","2026-10-09",[698,699,700,701,702],"Self-hosting","GDPR","vLLM","GPU cost","Open-weight models",[704,705,706,707,708,709,710,711],"self-hosted LLM GDPR","self-host LLM data protection","LLM GPU memory requirements","vLLM throughput benchmark","EU GPU cloud for LLMs","LLM API vs self-hosting break-even","open-weight LLM hardware cost","data processing agreement LLM",[713,716,717,720],{"name":714,"url":715},"General Data Protection Regulation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",{"name":30,"url":31},{"name":718,"url":719},"Graphics processing unit","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphics_processing_unit",{"name":700,"url":721},"https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm",[723,726,729,732,735,738,741,744,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789],{"title":724,"url":725},"openai\u002Fgpt-oss-120b model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fopenai\u002Fgpt-oss-120b",{"title":727,"url":728},"mistralai\u002FMistral-Small-3.2-24B-Instruct-2506 model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmistralai\u002FMistral-Small-3.2-24B-Instruct-2506",{"title":730,"url":731},"meta-llama\u002FLlama-3.3-70B-Instruct model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmeta-llama\u002FLlama-3.3-70B-Instruct",{"title":733,"url":734},"mistralai\u002FMistral-Large-3-675B-Instruct-2512 model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmistralai\u002FMistral-Large-3-675B-Instruct-2512",{"title":736,"url":737},"vLLM blog: v0.6.0 performance update (September 2024)","https:\u002F\u002Fblog.vllm.ai\u002F2024\u002F09\u002F05\u002Fperf-update.html",{"title":739,"url":740},"vLLM documentation: engine arguments","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fconfiguration\u002Fengine_args.html",{"title":742,"url":743},"vLLM documentation: vllm bench serve","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fcli\u002Fbench\u002Fserve.html",{"title":745,"url":746},"SemiAnalysis InferenceX: Llama 3.3 70B on H100 vs H200","https:\u002F\u002Finferencex.semianalysis.com\u002Fcompare\u002Fllama-3-3-70b-h100-vs-h200",{"title":748,"url":749},"Scaleway GPU instances pricing","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fpricing\u002Fgpu\u002F",{"title":751,"url":752},"Scaleway blog: a transparent update on Scaleway pricing (27 April 2026)","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fblog\u002Fa-transparent-update-on-scaleway-pricing\u002F",{"title":754,"url":755},"Scaleway Generative APIs pricing","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fpricing\u002Fmodel-as-a-service\u002F",{"title":757,"url":758},"OVHcloud public cloud price list","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fprices\u002F",{"title":760,"url":761},"OVHcloud AI Endpoints","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fai-endpoints\u002F",{"title":763,"url":764},"OVHcloud AI Endpoints model catalogue","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fai-endpoints\u002Fcatalog\u002F",{"title":766,"url":767},"Hetzner dedicated GPU servers","https:\u002F\u002Fwww.hetzner.com\u002Fdedicated-rootserver\u002Fmatrix-gpu\u002F",{"title":769,"url":770},"NVIDIA newsroom: GeForce RTX 50 Series launch","https:\u002F\u002Fnvidianews.nvidia.com\u002Fnews\u002Fnvidia-blackwell-geforce-rtx-50-series-opens-new-world-of-ai-computer-graphics",{"title":772,"url":773},"NVIDIA GeForce RTX 5090","https:\u002F\u002Fwww.nvidia.com\u002Fen-us\u002Fgeforce\u002Fgraphics-cards\u002F50-series\u002Frtx-5090\u002F",{"title":775,"url":776},"NVIDIA GeForce software licence","https:\u002F\u002Fwww.nvidia.com\u002Fen-us\u002Fdrivers\u002Fgeforce-license\u002F",{"title":778,"url":779},"GDPR Article 28: processor","https:\u002F\u002Fgdpr-info.eu\u002Fart-28-gdpr\u002F",{"title":781,"url":782},"GDPR Article 44: general principle for transfers","https:\u002F\u002Fgdpr-info.eu\u002Fart-44-gdpr\u002F",{"title":784,"url":785},"European Commission: EU-US data transfers (Data Privacy Framework)","https:\u002F\u002Fcommission.europa.eu\u002Flaw\u002Flaw-topic\u002Fdata-protection\u002Finternational-dimension-data-protection\u002Feu-us-data-transfers_en",{"title":787,"url":788},"EDPB Opinion 28\u002F2024 on AI models (adopted 17 December 2024)","https:\u002F\u002Fwww.edpb.europa.eu\u002Fsystem\u002Ffiles\u002F2024-12\u002Fedpb_opinion_202428_ai-models_en.pdf",{"title":790,"url":791},"Mistral AI pricing","https:\u002F\u002Fmistral.ai\u002Fpricing","\u002Fimages\u002Fblog\u002Fself-hosted-llm-gdpr-cost\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fself-hosted-llm-gdpr-cost\u002Fog.jpg",[61,62,63],"LLMs selbst hosten für die DSGVO: wann es nötig ist und was es kostet","LLMs selbst hosten für die DSGVO: wann es nötig ist, GPU-Speicher für offene Modelle, EU-Preise Stand Oktober 2026 und Break-even pro Million Token.","Coverbild zu selbst gehosteten LLMs unter der DSGVO: die Wahl zwischen eigenen GPUs und einer EU-API, mit einer Break-even-Linie.",1792177149289]