[{"data":1,"prerenderedAt":776},["ShallowReactive",2],{"blog-replicate-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":23,"sources":30,"cover":61,"og":62,"expertise":63,"locales":64,"lang":66,"title":68,"description":69,"coverAlt":70,"metaTitle":71,"takeaways":72,"faq":78,"toc":91,"blocks":116,"others":503},"replicate","2026-05-22",10,"web",[9,10,11,12,13],"Model hosting","Serverless GPU","Diffusion","Async jobs","Webhooks",[15,16,17,18,19,20,21,22],"replicate api","replicate vs fal.ai","serverless gpu inference pricing","replicate webhooks","replicate cold start","replicate vs baseten","how to run an open source model in production","replicate prediction api",[24,27],{"name":25,"url":26},"Replicate","https:\u002F\u002Freplicate.com\u002Fdocs",{"name":28,"url":29},"Serverless computing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServerless_computing",[31,34,37,40,43,46,49,52,55,58],{"title":32,"url":33},"Replicate pricing","https:\u002F\u002Freplicate.com\u002Fpricing",{"title":35,"url":36},"Replicate docs: About predictions","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions",{"title":38,"url":39},"Replicate docs: Create a prediction","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Fcreate-a-prediction",{"title":41,"url":42},"Replicate docs: Prediction lifecycle","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Flifecycle",{"title":44,"url":45},"Replicate docs: Rate limits","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Frate-limits",{"title":47,"url":48},"Replicate docs: Data retention","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fpredictions\u002Fdata-retention",{"title":50,"url":51},"Replicate docs: Verify webhooks","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fwebhooks\u002Fverify-webhook",{"title":53,"url":54},"Replicate docs: Official models","https:\u002F\u002Freplicate.com\u002Fdocs\u002Ftopics\u002Fmodels\u002Fofficial-models",{"title":56,"url":57},"fal.ai pricing","https:\u002F\u002Ffal.ai\u002Fpricing",{"title":59,"url":60},"Baseten pricing","https:\u002F\u002Fwww.baseten.co\u002Fpricing\u002F","\u002Fimages\u002Fblog\u002Freplicate\u002Fcover.webp","\u002Fimages\u002Fblog\u002Freplicate\u002Fog.jpg","ai-engineer",[65,66,67],"en","de","hu","Replicate im Test: eine Modell-API pro Sekunde abgerechnet, mit allen scharfen Kanten benannt","Replicate stellt tausende offene Modelle hinter eine Prediction-API und rechnet pro Sekunde Rechenzeit ab. Ein Test zu Cold Boots, Versionsdrift und der Löschung nach einer Stunde.","Ein Schacht über einem breiten Tablett, drei kleine Quadrate in verschiedenen Höhen, ein Kreis für Zeit.","Replicate im Test: Modellhosting pro Sekunde · Balázs Csorba",[73,74,75,76,77],"Replicate rechnet Modelle aus dem öffentlichen Katalog pro Sekunde Hardwarezeit ab und kostet nichts, solange ein geteiltes Modell untätig ist. Das ist billig für unstetige Last und teuer für alles mit Latenzanspruch.","Jeder Lauf ist ein Prediction-Objekt mit festen Status; der Unterschied zwischen canceled und aborted entscheidet, ob die gelaufene Rechenzeit berechnet wird.","Über die API erzeugte Predictions werden eine Stunde später gelöscht, inklusive Ein- und Ausgaben. Alles, was gebraucht wird, muss vorher kopiert sein.","Nur offizielle Modelle haben ein stabiles Input-Schema. Community-Modelle pflegen ihre Autoren und brauchen eine gepinnte Version plus einen Test.","Ein Deployment pinnt eine Version auf Hardware und eine Instanzspanne. Das entfernt Cold Boots und ersetzt sie durch eine feste Stundenrechnung.",[79,82,85,88],{"q":80,"a":81},"Wofür berechnet Replicate wirklich ab?","Für Modelle im öffentlichen Katalog nach Sekunde der genutzten Hardware, beginnend bei 0,000025 $ für eine kleine CPU und bis 0,001525 $ für eine H100. Offizielle Modelle sind die Ausnahme: abgerechnet wird pro Ausgabebild, pro Videosekunde oder pro Token. Private Modelle laufen auf dedizierter Hardware, man zahlt also auch für Hochlauf und Leerlauf.",{"q":83,"a":84},"Ist Replicate günstiger als eine GPU mieten?","Für spitzenlastige Workloads mit geringer Auslastung ja, weil nur während eines Laufs bezahlt wird und die Kapazität zwischen Kunden geteilt wird. Ab einer gleichmäßigen Last von wenigen Prozent kippt die Rechnung: eine warme T4-Instanz kostet 0,81 $ pro Stunde, also 583 $ für einen dreißigtägigen Monat ohne Leerlauf. Dann ist eine reservierte Instanz bei RunPod oder Lambda der günstigere Vertrag.",{"q":86,"a":87},"Warum braucht meine Replicate-Prediction Minuten bis zum Start?","Das ist ein Cold Boot. Replicate schaltet Modelle ab, die nicht genutzt werden, und der Neustart lädt mehrere Gigabyte Gewichte, was laut Dokumentation mehrere Minuten dauern kann. Offizielle Modelle bleiben warm, und ein Deployment mit min_instances auf 1 beseitigt die Wartezeit für alles andere.",{"q":89,"a":90},"Speichert Replicate meine Eingaben und Ausgaben?","Nicht bei API-Predictions. Eingabeparameter, Ausgabewerte, Ausgabedateien und Logs werden eine Stunde nach dem Anlegen entfernt; eigene Kopien sind laut Doku nötig. Über die Weboberfläche erzeugte Predictions werden dagegen dauerhaft gespeichert, was relevant ist, wenn dasselbe Modell auf beiden Wegen genutzt wird.",[92,95,98,101,104,107,110,113],{"id":93,"title":94},"what-it-is","Was Replicate tatsächlich ist",{"id":96,"title":97},"how-it-works","Wie eine Prediction läuft",{"id":99,"title":100},"getting-started","Erste Schritte",{"id":102,"title":103},"pricing","Was es kostet",{"id":105,"title":106},"security-and-data","Datenaufbewahrung, Tokens und Webhooks",{"id":108,"title":109},"where-it-shingles","Wo es weh tut",{"id":111,"title":112},"verdict","Fazit",{"id":114,"title":115},"sources","Quellen",[117,121,133,136,139,163,164,171,177,206,209,210,217,219,222,224,242,243,246,315,318,321,325,328,341,342,345,375,385,386,389,433,440,443,444,447,459,463,464],{"type":118,"content":119},"paragraph",[120],"Replicate ist eine gehostete Inferenzplattform, die tausende offene und proprietäre Modelle hinter einer einzigen Prediction-API bündelt und nur für die Sekunden abrechnet, in denen eine Maschine den Auftrag tatsächlich ausführt. Die Position ist einfach: Für ein Team, das heute Nachmittag ein neues Bild- oder Videomodell ausprobieren will, ohne eine GPU bereitzustellen, ist das der kürzeste Weg auf dem Markt. Für einen Produktionsendpunkt mit Latenzbudget und planbarer Rechnung ist die Abrechnung pro Sekunde der falsche Vertrag, und die Plattform wird erst dann verteidigbar, wenn eine Version gepinnt und das Modell auf ein Deployment gesetzt ist.",{"type":118,"content":122},[123,124,128,129,132],"Sie liegt zwischen einer eigenen GPU und dem Kauf bei einem Modellanbieter. Auf der einen Seite konkurriert sie mit ",{"tag":125,"href":57,"children":126},"a",[127],"fal.ai"," und ",{"tag":125,"href":60,"children":130},[131],"Baseten",", die Inferenz verkaufen statt einen Katalog; auf der anderen mit dem Mieten einer Maschine bei einem GPU-Broker plus eigenem Container. Was sie nicht ersetzt, ist eine token-abgerechnete LLM-API. Replicate serviert gern ein Llama-Modell auf einer H100, aber niemand rechnet einen Chat-Endpunkt pro Sekunde GPU-Zeit ab.",{"type":134,"level":135,"id":93,"text":94},"heading",2,{"type":118,"content":137},[138],"Drei Dinge teilen sich einen Account und eine API. Erstens einen öffentlichen Katalog von Modellen, die ihre Autoren veröffentlicht haben: Feintunes, Community-Implementierungen, Forschungscode. Zweitens eine Menge offizieller Modelle, die Replicate selbst pflegt, laut Dokumentation über einhundert, die immer warm sind, pro Ausgabeeinheit abgerechnet werden und ein stabiles Input-Schema haben. Drittens private Modelle, die man selbst mit Cog paketiert und auf dedizierter Hardware betreibt, wo man für die gesamte Lebensdauer der Instanz zahlt statt für die Arbeit, die sie leistet.",{"type":140,"ordered":141,"items":142},"list",false,[143,145,147,149,159,161],[144],"Jeder Lauf ist ein Prediction-Objekt mit Eingaben, Ausgaben, Status, Timing-Metriken und einer Cancel-URL, egal was das Modell tut.",[146],"Abrechnung pro Sekunde zu den veröffentlichten Raten: 0,000025 $ für eine kleine CPU, 0,000225 $ für eine T4, 0,001400 $ für eine A100 mit 80 GB, 0,001525 $ für eine H100.",[148],"Offizielle Modelle rechnen pro Ausgabe ab: flux-1.1-pro mit 0,04 $ pro Bild, ideogram-v3-quality mit 0,09 $, deepseek-r1 mit 3,75 $ pro Million Input-Tokens.",[150,154,155,158],{"tag":151,"children":152},"code",[153],"Asynchron"," ist der Standard; synchron wird es mit dem Header ",{"tag":151,"children":156},[157],"Prefer: wait",", der die Anfrage 60 Sekunden offen hält.",[160],"Vorkauf statt Abo. Guthaben gilt ein Jahr ab Kauf und ist nicht erstattungsfähig.",[162],"Apache-2.0-Clients für Node.js, Python, Swift und Go sowie ein gehosteter MCP-Server auf mcp.replicate.com, der der HTTP-API folgt.",{"type":134,"level":135,"id":96,"text":97},{"type":118,"content":165},[166,167,170],"Das Anlegen einer Prediction liefert sofort ein Objekt mit dem Status ",{"tag":151,"children":168},[169],"starting",", und dieses Objekt bleibt die Arbeitseinheit für den Rest des Laufs. Drei Dinge bestimmen dann, wie lange man wartet: ob das Modell warm ist, wie lange das Modell selbst braucht, und ob man pollt, die HTTP-Verbindung offen hält oder auf einen Webhook wartet.",{"type":172,"src":173,"alt":174,"wide":175,"caption":176},"image","\u002Fimages\u002Fblog\u002Freplicate\u002Fdiagram-7.webp","Der Prediction-Lebenszyklus bei Replicate Eine Prediction wird angelegt und läuft von starting nach processing. Processing endet in einem von drei Endzuständen: succeeded, canceled nach einer Frist während der Laufzeit, oder failed. Eine Frist, die vor dem Start abläuft, endet als aborted, was nicht berechnet wird.",true,"Eine Prediction wird angelegt, startet, läuft und endet in einem von vier Endzuständen. Für die Kosten entscheidend ist der Unterschied zwischen canceled, das bis zum Abbruch abgerechnet wird, und aborted, das gar nichts kostet.",{"type":118,"content":178},[179,180,182,183,186,187,190,191,194,195,194,198,201,202,205],"Die Status sind wenige und tragen die betriebliche Information. ",{"tag":151,"children":181},[169]," dauert normalerweise weit unter einer Sekunde; bleibt es länger, ist es ein Cold Boot, und das Laden mehrerer Gigabyte Gewichte kann Minuten dauern. ",{"tag":151,"children":184},[185],"processing"," ist die eigene ",{"tag":151,"children":188},[189],"predict()","-Methode des Modells. Danach beendet einer der Status ",{"tag":151,"children":192},[193],"succeeded",", ",{"tag":151,"children":196},[197],"failed",{"tag":151,"children":199},[200],"canceled"," oder ",{"tag":151,"children":203},[204],"aborted"," den Lauf, und der Unterschied zwischen den letzten beiden ist, ob die Maschine je gestartet ist.",{"type":118,"content":207},[208],"Predictions laufen nach 30 Minuten in einen Timeout, und eine Frist pro Prediction erlaubt der Anwendung, früher aufzugeben. Die Abrechnungsregel folgt dieser Trennung exakt: Eine vor dem Start abgebrochene Prediction wird nicht berechnet, eine abgebrochene nach dem Start für die Sekunden, die sie lief. Das ist ein wirklich gutes Design und zugleich der einzige Grund, warum man eine Frist aggressiv setzen darf.",{"type":134,"level":135,"id":99,"text":100},{"type":118,"content":211},[212,213,216],"Der Node.js-Client fasst den Lebenszyklus in ",{"tag":151,"children":214},[215],"run()"," zusammen. Für ein Modell, das in Sekunden fertig ist, ist das die komplette Integration, sonst gibt es nichts zu schreiben.",{"type":151,"code":218},"import Replicate from \"replicate\";\nimport { writeFile } from \"node:fs\u002Fpromises\";\n\n\u002F\u002F Reads REPLICATE_API_TOKEN from the environment.\nconst replicate = new Replicate();\n\nconst [image] = await replicate.run(\"black-forest-labs\u002Fflux-schnell\", {\n  input: {\n    prompt: \"An astronaut riding a rainbow unicorn, cinematic lighting\",\n  },\n});\n\nawait writeFile(\"output.png\", image);\nconsole.log(\"saved output.png\");",{"type":118,"content":220},[221],"Längere Modelle brauchen den asynchronen Weg, und ein Webhook ist der einzige sinnvolle Weg, das Ergebnis zu erfahren. Zwei Details führen zu Fehlern. Die Signatur deckt den rohen Request-Body ab, die Prüfung muss also vor jedem JSON-Parsing laufen. Und der Client wandelt den Byte-Body vor der HMAC-Berechnung wieder in einen String um, was jede Signaturprüfung stillschweigend brechen würde.",{"type":151,"code":223},"import express from \"express\";\nimport Replicate from \"replicate\";\nimport { createHmac, timingSafeEqual } from \"node:crypto\";\n\nconst replicate = new Replicate();\nconst app = express();\n\n\u002F\u002F Verify first, parse second: the signature covers the raw body bytes.\napp.post(\"\u002Fwebhook\", express.raw({ type: \"application\u002Fjson\" }), (req, res) => {\n  const key = process.env.REPLICATE_WEBHOOK_KEY.replace(\"whsec_\", \"\");\n  const signed = `${req.headers[\"webhook-id\"]}.${req.headers[\"webhook-timestamp\"]}.${req.body}`;\n  const expected = createHmac(\"sha256\", key).update(signed).digest(\"base64\");\n  const seen = String(req.headers[\"webhook-signature\"]).split(\" \").map((p) => p.split(\",\")[1]);\n  const valid = seen.some((sig) => {\n    const a = Buffer.from(sig), b = Buffer.from(expected);\n    return a.length === b.length && timingSafeEqual(a, b);\n  });\n  if (!valid) return res.status(401).end();\n\n  const prediction = JSON.parse(String(req.body));\n  res.sendStatus(204); \u002F\u002F Replicate retries terminal webhooks on 4xx and 5xx.\n  console.log(prediction.id, prediction.status);\n});\n\napp.post(\"\u002Fimage\", async (req, res) => {\n  const prediction = await replicate.predictions.create({\n    model: \"black-forest-labs\u002Fflux-schnell\",\n    input: { prompt: req.body.prompt },\n    webhook: \"https:\u002F\u002Fexample.com\u002Fwebhook\",\n    webhook_events_filter: [\"completed\"],\n  });\n  res.json({ id: prediction.id });\n});",{"type":225,"variant":226,"title":227,"body":228},"callout","note","Die offene Verbindung ist die billigste und die schlechteste Integration",[229],[230,232,233,236,237,201,239,241],{"tag":151,"children":231},[157]," hält die Anfrage standardmäßig 60 Sekunden offen und der Header nimmt einen Wert, ",{"tag":151,"children":234},[235],"Prefer: wait=5"," setzt also ein kürzeres Budget. Danach kommt die Antwort mit dem Status ",{"tag":151,"children":238},[169],{"tag":151,"children":240},[185]," zurück, und man pollt ohnehin.",{"type":134,"level":135,"id":102,"text":103},{"type":118,"content":244},[245],"Der öffentliche Katalog misst Rechenzeit pro Sekunde, und der Satz gehört zur Hardware, nicht zum Modell. Die veröffentlichte Tabelle rechnet zusätzlich einen Stundensatz aus, der zum Vergleich taugt, aber nicht abgerechnet wird. Hochlaufzeit und Leerlauf auf geteilter Kapazität sind kostenlos; nur die Verarbeitungszeit wird berechnet.",{"type":247,"head":248,"rows":257},"table",[249,251,253,255],[250],"Hardware",[252],"Pro Sekunde",[254],"Pro Stunde",[256],"Speicher",[258,269,280,289,298,307],[259,263,265,267],[260],{"tag":151,"children":261},[262],"cpu-small",[264],"0,000025 $",[266],"0,09 $",[268],"2 GB RAM, 1 vCPU",[270,274,276,278],[271],{"tag":151,"children":272},[273],"cpu",[275],"0,000100 $",[277],"0,36 $",[279],"8 GB RAM, 4 vCPU",[281,283,285,287],[282],"Nvidia T4",[284],"0,000225 $",[286],"0,81 $",[288],"16 GB VRAM",[290,292,294,296],[291],"Nvidia L40S",[293],"0,000975 $",[295],"3,51 $",[297],"48 GB VRAM",[299,301,303,305],[300],"Nvidia A100 80 GB",[302],"0,001400 $",[304],"5,04 $",[306],"80 GB VRAM",[308,310,312,314],[309],"Nvidia H100",[311],"0,001525 $",[313],"5,49 $",[306],{"type":118,"content":316},[317],"Offizielle Modelle brechen dieses Muster, und dort wird die Rechnung planbar. flux-1.1-pro kostet 0,04 $ pro Ausgabebild, flux-schnell 3,00 $ pro tausend Bilder, ideogram-v3-quality 0,09 $ und deepseek-r1 wird pro Token abgerechnet. Jedes private Modell dreht das um: Es läuft auf dedizierter Hardware, und man zahlt für Hochlauf, Leerlauf und aktive Zeit gleichermaßen, eine Instanz kostet also auch dann, wenn sie den ganzen Nachmittag niemand aufruft.",{"type":118,"content":319},[320],"Bezahlt wird im Voraus. Guthaben wird vorab gekauft, mit der Nutzung verbraucht, gilt ein Jahr und ist nicht erstattungsfähig. Ist die Balance bei null, wird laufende Infrastruktur abgeschaltet und keine neue Arbeit gestartet. Eine Prediction, die das Guthaben überzieht, wird zum Monatsende über die hinterlegte Zahlungsmethode abgerechnet. Auto-Reload gibt es, mit einer dokumentierten Untergrenze von 5 $ Schwelle und 15 $ Nachschub, und ist der billigste Schutz vor einer Schlange gedrosselter Anfragen.",{"type":134,"level":322,"id":323,"text":324},3,"deployments","Deployments und Cold Boots",{"type":118,"content":326},[327],"Ein Deployment pinnt eine Modellversion auf einen Hardwaretyp und eine Instanzspanne und beantwortet damit das Cold-Boot- und das Leerlaufproblem gleichzeitig. Der Preis ist explizit: Eine dauerhaft warme T4 kostet 0,81 $ pro Stunde, also 583 $ für einen dreißigtägigen Monat ohne Leerlauf, gegenüber nichts für dasselbe Modell mit hundert Aufrufen am Tag auf geteilter Kapazität. Beim Deployment hört die Replicate-Abrechnung auf elastisch zu sein und wird zur Position im Budget.",{"type":140,"ordered":141,"items":329},[330,332,337,339],[331],"Die getestete Version pinnen. Eine neue Modellversion kann dann das Verhalten unter Last nicht mehr ändern.",[333,336],{"tag":151,"children":334},[335],"min_instances"," auf 1 setzen, und der Cold Boot samt mehrerminütigem Gewichts Laden verschwindet.",[338],"Dedizierte Hardware heißt keine Warteschlange mit anderen Nutzern, kostet aber jeden Leerlaufstunde.",[340],"Dieselbe Trennung gilt für offizielle Modelle, die Replicate pflegt und warm hält, und Community-Modelle, die ihre Autoren pflegen und die kalt starten können.",{"type":134,"level":135,"id":105,"text":106},{"type":118,"content":343},[344],"Alles, was über die API geht, ist standardmäßig flüchtig. Für über die API erstellte Predictions nennt die Dokumentation, dass Eingabeparameter, Ausgabewerte, Ausgabedateien und Logs nach einer Stunde entfernt werden und eigene Kopien nötig sind. Über die Weboberfläche erstellte Predictions bleiben dagegen dauerhaft. Diese Asymmetrie ist die überraschendste betriebliche Tatsache der Doku, weil dasselbe Modell je nach Oberfläche in zwei sehr unterschiedlichen Aufbewahrungsregeln steht.",{"type":140,"ordered":141,"items":346},[347,353,355,367,373],[348,349,352],"API-Tokens sind 40 Zeichen lang, beginnen mit ",{"tag":151,"children":350},[351],"r8_",", gehen als Bearer-Token mit, sind pro Umgebung benannt und einzeln widerrufbar.",[354],"Replicate sucht in öffentlichen Repositories nach exponierten Tokens und deaktiviert kompromittierte automatisch, mit einer erklärenden E-Mail. Praktisch, aber auch ein Weg, wie ein Fehlalarm die Produktion stoppt.",[356,357,194,360,128,363,366],"Webhooks tragen ",{"tag":151,"children":358},[359],"webhook-id",{"tag":151,"children":361},[362],"webhook-timestamp",{"tag":151,"children":364},[365],"webhook-signature","; signiert wird die mit Punkten verbundene Kombination, mit HMAC-SHA256.",[368,369,372],"Der Signing-Secret kommt von ",{"tag":151,"children":370},[371],"GET \u002Fv1\u002Fwebhooks\u002Fdefault\u002Fsecret",", und die Doku empfiehlt, ihn zu cachen statt ihn pro Zustellung zu holen.",[374],"Die Grenzen liegen bei 600 Prediction-Erzeugnissen pro Minute und 3.000 Anfragen pro Minute für alle anderen Endpunkte, mit einem 429-Body, der das Reset-Fenster nennt.",{"type":225,"variant":376,"title":377,"body":378},"warn","Zuerst den Webhook-Handler idempotent machen",[379],[380,381,384],"Terminale Webhooks werden mit exponentiellem Backoff wiederholt, der letzte Versuch etwa eine Minute nach Abschluss, und die Doku sagt, dass identische Webhooks mehrfach ankommen können und die Reihenfolge nicht garantiert ist. Ein Handler mit der Annahme exactly-once verliert oder verdoppelt Aufträge. Schlüssel auf ",{"tag":151,"children":382},[383],"prediction.id"," und alles ignorieren, was nach einem Endstatus kommt.",{"type":134,"level":135,"id":108,"text":109},{"type":118,"content":387},[388],"Der Katalog ist das Produkt, und der Katalog ist das Risiko. Ein Community-Modell ist ein Container, den jemand Fremdes veröffentlicht hat: Das Input-Schema kann sich zwischen Versionen ändern, die Autorin oder der Autor kann verschwinden, und Replicates eigene Dokumentation sagt, dass Community-Modelle unterschiedliche Grade an Stabilität, Dokumentation und Support haben können. Nur offizielle Modelle haben eine stabile API, und eine gepinnte Version plus ein Test sind das Mindestmaß für alles, was Kunden sehen.",{"type":247,"head":390,"rows":396},[391,393,394,395],[392],"Dimension",[25],[127],[131],[397,406,415,424],[398,400,402,404],[399],"Abrechnungseinheit",[401],"Pro Sekunde Rechenzeit; offizielle Modelle pro Ausgabe",[403],"Pro Sekunde, pro Bild oder pro 1.000 Tokens",[405],"Pro 1 Mio. Tokens oder pro GPU-Stunde",[407,409,411,413],[408],"Katalog",[410],"Tausende Community- und offizielle Modelle",[412],"Ein kleines, kuratiertes Set optimierter Modelle",[414],"Vor allem Modelle, die man selbst deployed",[416,418,420,422],[417],"Eigenes Modell",[419],"Cog-Container, öffentlich oder privat",[421],"Deployments auf der fal-GPU-Flotte",[423],"Dedizierte Deployments; VPC und Self-Host in der höchsten Stufe",[425,427,429,431],[426],"Serverless-GPU-Satz",[428],"Kein Mietpool, nur Sekundensätze",[430],"H100 ab 2,49 $ pro Stunde auf eigenen Deployments",[432],"Wird pro Deployment angeboten",{"type":118,"content":434},[435,436,439],"Das zweite Problem ist, dass die Rechnung nie die Rechnung ist, die die Finanzabteilung erwartet. Ein Modell mit 0,04 $ pro Bild und eines mit 5,49 $ pro Stunde können beide hinter einer achtlosen Schleife liegen, und die einzige Angabe pro Lauf liefert die API im ",{"tag":151,"children":437},[438],"metrics","-Objekt einer einzelnen Prediction, das standardmäßig niemand aggregiert.",{"type":118,"content":441},[442],"Drittens sind die Client-Bibliotheken unausgewogen. Der Node.js-Client steht bei 1.4.0, der Python-Client bei 1.0.7, eine 2.0-Linie ist noch Beta statt freigegeben. Ein Python-Dienst sollte direkt die HTTP-API ansprechen, statt zu warten, und das OpenAPI-Schema sowie der llms.txt-Endpunkt machen das unangenehm leicht.",{"type":134,"level":135,"id":111,"text":112},{"type":118,"content":445},[446],"Replicate ist das beste Preis-Leistungs-Verhältnis für genau ein Problem: ein offenes Modell zu betreiben, ohne eine GPU zu besitzen. Für alles andere passt es schlecht, und der Grund ist strukturell und nicht ein Frage der Reife. Die Abrechnung pro Sekunde optimiert die Auslastung der Hardware des Anbieters, und die eigene Rechnung ist der Störterm in dieser Optimierung.",{"type":140,"ordered":175,"items":448},[449,451,453,455,457],[450],"Teams, die ein neues Bild-, Video- oder Sprachmodell prototypen und diese Woche eine Antwort brauchen.",[452],"Teams, die bereit sind, eine Version zu pinnen, das Input-Schema stabil zu halten und alles in ein hartes Kostenlimit zu wickeln.",[454],"Alle, die Breite an Modellen wollen statt eine Plattform, und akzeptieren, dass der größte Teil dieses Katalogs ohne Wartung ist.",[456],"Nicht wählen für einen interaktiven Endpunkt, in dem Tail-Latenz ein Produktmerkmal ist, und nicht für eine gleichmäßige Last über wenige Prozent Auslastung hinaus, wo eine reservierte GPU schlicht billiger ist.",[458],"Nicht wählen, wenn Eingabedateien geschützte personenbezogene Daten enthalten und ein Ein-Stunden-Fenster nicht der eigenen Richtlinie genügt.",{"type":225,"variant":226,"body":460},[461],[462],"Der Katalog ist ein Supermarkt und ein Deployment ist eine Miete auf einer Maschine. Zu entscheiden, wofür man baut, ist der größere Teil der Arbeit, und die API trifft diese Entscheidung nicht.",{"type":134,"level":135,"id":114,"text":115},{"type":140,"ordered":175,"items":465},[466,469,473,477,481,485,489,493,497,500],[467],{"tag":125,"href":33,"children":468},[32],[470],{"tag":125,"href":36,"children":471},[472],"Replicate Doku: About predictions",[474],{"tag":125,"href":39,"children":475},[476],"Replicate Doku: Create a prediction",[478],{"tag":125,"href":42,"children":479},[480],"Replicate Doku: Prediction lifecycle",[482],{"tag":125,"href":45,"children":483},[484],"Replicate Doku: Rate limits",[486],{"tag":125,"href":48,"children":487},[488],"Replicate Doku: Data retention",[490],{"tag":125,"href":51,"children":491},[492],"Replicate Doku: Verify webhooks",[494],{"tag":125,"href":54,"children":495},[496],"Replicate Doku: Official models",[498],{"tag":125,"href":57,"children":499},[56],[501],{"tag":125,"href":60,"children":502},[59],[504,578,634,708],{"slug":505,"published":506,"minutes":6,"category":7,"tags":507,"keywords":513,"about":525,"sources":534,"cover":571,"og":572,"expertise":573,"locales":574,"lang":66,"title":575,"description":576,"coverAlt":577},"schema-org-structured-data-b2b-shop","2026-10-17",[508,509,510,511,512],"Schema.org","Structured data","B2B e-commerce","Technical SEO","Nuxt",[514,515,516,517,518,519,520,521,522,523,524],"schema.org b2b shop","product structured data b2b","merchant listing structured data","product snippet vs merchant listing","unitpricespecification referencequantity","productgroup variants structured data","organization schema vatid","b2b prices behind login seo","json-ld nuxt schema org","merchant return policy structured data","mpn gtin structured data",[526,528,531],{"name":508,"url":527},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSchema.org",{"name":529,"url":530},"JSON-LD","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON-LD",{"name":532,"url":533},"Business-to-business","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBusiness-to-business",[535,538,541,544,547,550,553,556,559,562,565,568],{"title":536,"url":537},"Google Search Central: Introduction to Product structured data","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fproduct",{"title":539,"url":540},"Google Search Central: Merchant listing (Product, Offer) structured data","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fmerchant-listing",{"title":542,"url":543},"Google Search Central: Product snippet structured data","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fproduct-snippet",{"title":545,"url":546},"Google Search Central: Product variant structured data","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fproduct-variants",{"title":548,"url":549},"Google Search Central: Organization structured data","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Forganization",{"title":551,"url":552},"Google Search Central: Merchant return policy structured data","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Freturn-policy",{"title":554,"url":555},"Google Search Central: General structured data guidelines","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fsd-policies",{"title":557,"url":558},"Google Search Central: Generate structured data with JavaScript","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fstructured-data\u002Fgenerate-structured-data-with-javascript",{"title":560,"url":561},"Schema.org: Offer","https:\u002F\u002Fschema.org\u002FOffer",{"title":563,"url":564},"Schema.org: UnitPriceSpecification","https:\u002F\u002Fschema.org\u002FUnitPriceSpecification",{"title":566,"url":567},"Unhead: Product schema (defineProduct)","https:\u002F\u002Funhead.unjs.io\u002Fdocs\u002Fschema-org\u002Fapi\u002Fschema\u002Fproduct",{"title":569,"url":570},"Nuxt SEO: Schema.org identity setup","https:\u002F\u002Fnuxtseo.com\u002Fdocs\u002Fschema-org\u002Fguides\u002Fsetup-identity","\u002Fimages\u002Fblog\u002Fschema-org-structured-data-b2b-shop\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fschema-org-structured-data-b2b-shop\u002Fog.jpg","b2b-ecommerce-developer",[65,66,67],"Schema.org-Strukturdaten für B2B-Shops: Preise hinter Logins, Einheiten und Varianten","Produkt-Markup für B2B-Shops: Snippet oder Händlereintrag, welcher Preis, Artikelnummern, Grundpreise, Varianten, Organization und SSR in Nuxt.","Ein Produktrechteck mit dünnem Rahmen und einem kleinen Feld, das eine niedrige Wand verdeckt.",{"slug":579,"published":506,"minutes":580,"category":7,"tags":581,"keywords":586,"about":598,"sources":606,"cover":628,"og":629,"expertise":573,"locales":630,"lang":66,"title":631,"description":632,"coverAlt":633},"ai-assistant-b2b-shop-customer-support",9,[510,582,583,584,585],"AI assistant","Customer support","LLM agents","EU AI Act",[587,588,589,590,591,592,593,594,595,596,597],"ai assistant b2b shop","ai customer support b2b ecommerce","llm chatbot order status","ai agent customer service tools","chatbot liability air canada","klarna ai assistant results","human handoff chatbot design","eu ai act chatbot disclosure","owasp excessive agency","ai support resolution rate","b2b customer portal chatbot",[599,602,605],{"name":600,"url":601},"Customer service","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCustomer_service",{"name":603,"url":604},"Chatbot","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FChatbot",{"name":532,"url":533},[607,610,613,616,619,622,625],{"title":608,"url":609},"Klarna: AI assistant handles two-thirds of customer service chats in its first month (press release, 2024)","https:\u002F\u002Fwww.klarna.com\u002Finternational\u002Fpress\u002Fklarna-ai-assistant-handles-two-thirds-of-customer-service-chats-in-its-first-month\u002F",{"title":611,"url":612},"Entrepreneur: Klarna is hiring customer service agents again, according to its CEO (May 2025)","https:\u002F\u002Fwww.entrepreneur.com\u002Fbusiness-news\u002Fklarna-ceo-reverses-course-by-hiring-more-humans-not-ai\u002F491396",{"title":614,"url":615},"ABA Business Law Today: BC tribunal confirms companies remain liable for information provided by AI chatbot","https:\u002F\u002Fwww.americanbar.org\u002Fgroups\u002Fbusiness_law\u002Fresources\u002Fbusiness-law-today\u002F2024-february\u002Fbc-tribunal-confirms-companies-remain-liable-information-provided-ai-chatbot\u002F",{"title":617,"url":618},"OWASP GenAI Security Project: LLM06:2025 Excessive Agency","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm062025-excessive-agency\u002F",{"title":620,"url":621},"OWASP GenAI Security Project: LLM05:2025 Improper Output Handling","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm052025-improper-output-handling\u002F",{"title":623,"url":624},"EU AI Act, Article 50: Transparency obligations","https:\u002F\u002Fartificialintelligenceact.eu\u002Farticle\u002F50\u002F",{"title":626,"url":627},"Intercom: Fin pricing and billable outcomes","https:\u002F\u002Ffin.ai\u002Fpricing","\u002Fimages\u002Fblog\u002Fai-assistant-b2b-shop-customer-support\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fai-assistant-b2b-shop-customer-support\u002Fog.jpg",[65,66,67],"Ein KI-Assistent für den Support im B2B-Shop: Tools, Berechtigungen und die Übergabe an Menschen","Wie man einen KI-Support-Assistenten für einen B2B-Shop baut: was automatisieren, Tools im Kundenkontext, Übergabe an Menschen, AI Act und Kennzahlen.","Eine hohe Mauer mit schmalem Durchgang: Ein Pfeil führt in ein Feld mit drei Quadraten, ein zweiter nach unten zu einer Ablage.",{"slug":635,"published":506,"minutes":636,"category":7,"tags":637,"keywords":642,"about":654,"sources":664,"cover":701,"og":702,"expertise":703,"locales":704,"lang":66,"title":705,"description":706,"coverAlt":707},"vue-ai-chat-ui-streaming-accessibility",11,[638,512,639,640,641],"Vue","Accessibility","Streaming","AI chat",[643,644,645,646,647,648,649,650,651,652,653],"vue ai chat ui","nuxt llm streaming","sse vs fetch streaming","aria-live streaming text","accessible chat interface","abort fetch stream vue","dompurify markdown llm","role log chat","reduced motion chat ui","wcag 2.2 chat","screen reader streaming",[655,658,661],{"name":656,"url":657},"Web accessibility","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWeb_accessibility",{"name":659,"url":660},"Server-sent events","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",{"name":662,"url":663},"Vue.js","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVue.js",[665,668,671,674,677,680,683,686,689,692,695,698],{"title":666,"url":667},"MDN: Using server-sent events","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FServer-sent_events\u002FUsing_server-sent_events",{"title":669,"url":670},"MDN: AbortController","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FAbortController",{"title":672,"url":673},"MDN: ReadableStream","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FReadableStream",{"title":675,"url":676},"MDN: TextDecoderStream","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FTextDecoderStream",{"title":678,"url":679},"MDN: ARIA log role","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAccessibility\u002FARIA\u002FReference\u002FRoles\u002Flog_role",{"title":681,"url":682},"W3C: Understanding SC 4.1.3 Status Messages","https:\u002F\u002Fwww.w3.org\u002FWAI\u002FWCAG22\u002FUnderstanding\u002Fstatus-messages.html",{"title":684,"url":685},"W3C WAI: What's new in WCAG 2.2","https:\u002F\u002Fwww.w3.org\u002FWAI\u002Fstandards-guidelines\u002Fwcag\u002Fnew-in-22\u002F",{"title":687,"url":688},"MDN: prefers-reduced-motion","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002F@media\u002Fprefers-reduced-motion",{"title":690,"url":691},"DOMPurify README","https:\u002F\u002Fgithub.com\u002Fcure53\u002FDOMPurify",{"title":693,"url":694},"markdown-it README","https:\u002F\u002Fgithub.com\u002Fmarkdown-it\u002Fmarkdown-it",{"title":696,"url":697},"AI SDK docs: useChat","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-ui\u002Fchatbot",{"title":699,"url":700},"Vue docs: nextTick","https:\u002F\u002Fvuejs.org\u002Fapi\u002Fgeneral.html#nexttick","\u002Fimages\u002Fblog\u002Fvue-ai-chat-ui-streaming-accessibility\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fvue-ai-chat-ui-streaming-accessibility\u002Fog.jpg","vue-nuxt-developer",[65,66,67],"Streaming-Chat mit KI in Vue und Nuxt: von Anfang an barrierefrei","KI-Chat in Vue oder Nuxt: Fetch-Streams, Abbruch und Retry, sicheres Markdown-Rendering, aria-live-Meldungen, Tastaturnavigation und Reduced Motion.","Eine Nachrichtenkarte mit blinkendem Cursor, eine gepunktete Linie öffnet sich zu Wellen, daneben ein Haken.",{"slug":709,"published":506,"minutes":580,"category":7,"tags":710,"keywords":715,"about":727,"sources":737,"cover":770,"og":771,"expertise":703,"locales":772,"lang":66,"title":773,"description":774,"coverAlt":775},"llm-translation-pipeline-i18n",[711,712,713,638,714],"Translation","i18n","LLM","Localization",[716,717,718,719,720,721,722,723,724,725,726],"llm translation pipeline","icu messageformat placeholders","vue i18n llm translation","translation memory llm","glossary enforcement translation","german informal sie du","hungarian translation quality llm","structured output json translation","machine translation post-editing","locale file validation","cldr plural categories",[728,731,734],{"name":729,"url":730},"Internationalization and localization","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInternationalization_and_localization",{"name":732,"url":733},"ICU MessageFormat","https:\u002F\u002Funicode-org.github.io\u002Ficu\u002Fuserguide\u002Fformat_parse\u002Fmessages\u002F",{"name":735,"url":736},"Vue I18n","https:\u002F\u002Fvue-i18n.intlify.dev\u002F",[738,740,743,746,749,752,755,758,761,764,767],{"title":739,"url":733},"Unicode ICU User Guide: Formatting Messages",{"title":741,"url":742},"Vue I18n: Message Format Syntax","https:\u002F\u002Fvue-i18n.intlify.dev\u002Fguide\u002Fessentials\u002Fsyntax",{"title":744,"url":745},"Nuxt i18n: Getting started","https:\u002F\u002Fi18n.nuxtjs.org\u002Fdocs\u002Fgetting-started",{"title":747,"url":748},"Unicode CLDR: Plural rules","https:\u002F\u002Fcldr.unicode.org\u002Findex\u002Fcldr-spec\u002Fplural-rules",{"title":750,"url":751},"OpenAI: Structured outputs","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fstructured-outputs",{"title":753,"url":754},"DeepL API: Glossaries","https:\u002F\u002Fdevelopers.deepl.com\u002Fdocs\u002Fapi-reference\u002Fglossaries",{"title":756,"url":757},"W3C: Localization vs. internationalization","https:\u002F\u002Fwww.w3.org\u002FInternational\u002Fquestions\u002Fqa-i18n",{"title":759,"url":760},"GNU gettext manual","https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgettext\u002Fmanual\u002Fgettext.html",{"title":762,"url":763},"RFC 5646: Tags for Identifying Languages","https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc5646",{"title":765,"url":766},"Rat für deutsche Rechtschreibung","https:\u002F\u002Fwww.rechtschreibrat.com\u002F",{"title":768,"url":769},"Microsoft Writing Style Guide","https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fstyle-guide\u002Fwelcome\u002F","\u002Fimages\u002Fblog\u002Fllm-translation-pipeline-i18n\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-translation-pipeline-i18n\u002Fog.jpg",[65,66,67],"Eine LLM-Übersetzungspipeline für i18n: Glossar, Platzhalter und Review","Produkt- und Website-Texte mit LLMs übersetzen, ohne Platzhalter, Pluralformen oder Tonalität zu beschädigen: Glossar, ICU-Nachrichten, QA-Checks, Review.","Drei Quellkarten, eine übersetzte Karte mit Glossar-Lesezeichen, dann eine geprüfte Klemmschiene.",1792261158278]