[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"blog-llm-model-migration-regression-testing-hu":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":63,"title":64,"description":65,"coverAlt":66,"metaTitle":67,"takeaways":68,"faq":74,"toc":90,"blocks":124,"others":539},"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-modellmigráció regresszió nélkül: elavulás, evalok, árnyékforgalom","Forgatókönyv LLM-modellek cseréjéhez: elavulási határidők, szerződésjavítás, regressziós készlet, prompthangolás, árnyékforgalom és canary.","Öt migrációs szakasz a leltártól és a szerződésjavítástól az offline evalokon és az árnyékforgalmon át a visszaállítható canary bevezetésig.","LLM-modellmigráció és regressziós tesztelés · Balázs Csorba",[69,70,71,72,73],"A szolgáltatók ütemezetten vezetik ki a modelleket: az OpenAI az általánosan elérhető modelleknél legalább hat hónapot ad, az Anthropic legalább 60 napot, a Gemini előzetes modelljeinél akár csak két hetet.","A modellcsere három dolgot változtat meg: az API-szerződést, a promptjaidon mutatott viselkedést, valamint a tokenszámot és a költséget; mindegyiket külön ellenőrizd.","Tesztelés előtt rögzíts pontos modellazonosítókat, kezeld őket központilag, és leltározd a tényleges használatot a szolgáltatói exportokból és a gateway-naplókból.","Futtasd egymás mellett a régi és az új modellt egy élesből épített arany adatkészleten, állíts kaput a sikerre, a parse-hibákra, az elutasításokra, a hosszra, a költségre és a késleltetésre, és olvass el minden vesztes esetet.","Árnyékforgalommal és kapcsoló mögötti canary kiadással vezesd be, a promptot és a modellt együtt verziózd, és utána is futtasd hetente a készletet.",[75,78,81,84,87],{"q":76,"a":77},"Mennyi előzetes értesítést adnak az LLM-szolgáltatók egy modell kivezetése előtt?","Az OpenAI az általánosan elérhető modelleknél legalább hat hónapot, a specializált változatoknál három hónapot, az előzetes modelleknél akár két hetet dokumentál. Az Anthropic a nyilvánosan kiadott modelleknél legalább 60 napot ad. A Google a Gemini előzetes modelljeit legalább két hetes értesítéssel vezeti ki, és a -latest aliasok mögött lecseréli a modellt.",{"q":79,"a":80},"Elég egyszerűen kicserélni a modellazonosítót és újra telepíteni?","Ritkán. Az újabb modellek elutasíthatnak olyan paramétereket, amelyeket a régi elfogadott, például a kikapcsolt thinkinget, a kényszerített eszközválasztást vagy az előre kitöltött választ a Claude Opus 5.5-nél; az egyik modellre hangolt prompt a másikon másképp viselkedik, és a tokenszám is változhat. Előbb a szerződést javítsd, aztán bevezetés előtt futtass regressziós készletet.",{"q":82,"a":83},"Mit mérjen egy LLM-migráció regressziós tesztkészlete?","A feladatsikert egy éles forgalomból és korábbi incidensekből épített arany adatkészleten, a séma- és parse-hibákat, az elutasítási arányt, a kimenet hosszát, az elvégzett feladatonkénti tokent és költséget, valamint a késleltetést. Ugyanazokon a bemeneteken hasonlítsd össze a régi és az új modellt, és olvass el minden esetet, ahol az új modell veszít.",{"q":85,"a":86},"Mi az árnyéktesztelés (shadow testing) LLM-eknél?","Az árnyéktesztelés az élő kérések másolatát elküldi az új modellnek, és a válaszait a kiszolgáltak mellé naplózza anélkül, hogy a felhasználók látnák őket. Így olyan eseteket is találsz, amelyek kimaradtak az offline készletből. Gondoskodj róla, hogy az árnyékág ne válthasson ki mellékhatást, különösen író eszközökkel rendelkező ügynököknél.",{"q":88,"a":89},"Miért teljesítenek rosszabbul a promptjaim egy újabb, jobb modellen?","A promptokban kerülőmegoldások gyűlnek össze a régi modell furcsaságaira, és kutatások szerint a legjobb promptformátum a modellek között csak gyengén korrelál. Először töröld a régi kerülőmegoldásokat, hangold újra az érvelési vagy effort-beállítást, a formátumra való rábeszélés helyett használj strukturált kimenetet, és csak ezután adj hozzá elbukó esetekhez kötött új utasításokat.",[91,94,97,100,103,106,109,112,115,118,121],{"id":92,"title":93},"why-model-swaps-break","Miért tör el valami modellcserénél",{"id":95,"title":96},"deprecation-timelines","Elavulási ütemtervek az OpenAI-nál, az Anthropicnál és a Google-nél",{"id":98,"title":99},"pin-and-inventory","Rögzítsd a modellazonosítókat, és tudd, hol használod őket",{"id":101,"title":102},"migration-pipeline","A migrációs folyamat",{"id":104,"title":105},"contract-changes","2. szakasz: előbb a szerződést javítsd, aztán a viselkedést teszteld",{"id":107,"title":108},"regression-suite","3. szakasz: regressziós készlet a modellcseréhez",{"id":110,"title":111},"retune-prompts","Hangold újra a promptokat, az effortot és a régi kerülőmegoldásokat",{"id":113,"title":114},"shadow-and-canary","4. és 5. szakasz: árnyékforgalom és canary",{"id":116,"title":117},"continuous-regression","A migráció után is futtasd a készletet",{"id":119,"title":120},"checklist","Migrációs ellenőrzőlista",{"id":122,"title":123},"sources","Források",[125,129,132,135,138,163,166,167,170,208,215,216,219,253,254,257,266,267,270,336,343,344,347,398,401,403,416,417,420,442,449,450,457,468,469,477,485,486,506,514,515],{"type":126,"content":127},"paragraph",[128],"Minden LLM-funkciónak, amelyet kiadsz, van egy lejárati dátuma, amelyet nem te választottál. A szolgáltatók ütemezetten vezetik ki a modelleket, és az utód sosem egyszerű csere: a kérésparaméterek elutasításra kerülnek, a régi modellre hangolt promptok másképp viselkednek, és a tokenizáló is másképp számolhatja a bemenetet. Ha a Claude Sonnet 4.5 része a rendszerednek, az óra most is látványosan ketyeg: az Anthropic 2026. szeptember 30-án elavultnak jelölte, és 2026. november 30-án kivezeti, ajánlott utódja a Claude Sonnet 5.5.",{"type":126,"content":130},[131],"Ez a cikk egy migrációs forgatókönyv: hogyan működnek az elavulási ütemtervek az OpenAI-nál, az Anthropicnál és a Google-nél, hogyan találod meg az összes hívási pontot, mit mérjen egy modellcseréhez készült regressziós készlet, és hogyan vezesd be az új modellt árnyékforgalommal (shadow traffic) és canary kiadással egy egyik napról a másikra történő váltás helyett.",{"type":133,"level":134,"id":92,"text":93},"heading",2,{"type":126,"content":136},[137],"Új modellre váltáskor három különböző dolog változik, és mindegyikhez külön ellenőrzés kell:",{"type":139,"ordered":140,"items":141},"list",false,[142,148,153],[143,147],{"tag":144,"children":145},"strong",[146],"Az API-szerződés."," A régi modellen működő paraméterek az újon 400-as hibát adnak. A Claude Opus 5.5 migrációs útmutatója többet is felsorol: a thinking kikapcsolását, a thinking-kereteket, a kényszerített eszközválasztást, a nem alapértelmezett mintavételi paramétereket és az előre kitöltött asszisztensválaszt mind elutasítja.",[149,152],{"tag":144,"children":150},[151],"Viselkedés."," Ugyanaz a prompt más kimenetet ad. Sclar és társai pusztán jelentésmegőrző formázási változtatásokkal akár 76 pontos pontosságkülönbséget mértek, és azt találták, hogy a legjobban működő formátum a modellek között csak gyengén korrelál. Az A modellre hangolt prompt nincs a B modellre hangolva.",[154,157,158,162],{"tag":144,"children":155},[156],"Költség és korlátok."," Az Anthropic útmutatója szerint az Opus 4.7-tel bevezetett tokenizáló ugyanarra a szövegre nagyjából 1-1,35-szer annyi tokent használhat, mint a korábbi modellek. A ",{"tag":159,"children":160},"code",[161],"max_tokens"," értéked, a compaction küszöbök és a költségbecslések vele együtt mozdulnak.",{"type":126,"content":164},[165],"Van egy negyedik eset is, amely egyáltalán nem migráció: ugyanaz a modellnév változtat viselkedést. Chen, Zaharia és Zou a GPT-4 2023 márciusi és júniusi verzióját hasonlította össze, és azt találta, hogy a prímszámok felismerésének pontossága 84%-ról 51%-ra esett, a generált kódban pedig több lett a formázási hiba. Következtetésük, hogy \"ugyanannak\" az LLM-szolgáltatásnak a viselkedése rövid idő alatt jelentősen változhat, amellett szól, hogy a regressziós készletet ütemezetten futtasd, ne csak váltáskor.",{"type":133,"level":134,"id":95,"text":96},{"type":126,"content":168},[169],"Az, hogy mennyi előzetes figyelmeztetést kapsz, a szolgáltatótól és a modell fajtájától függ. Az egyes szolgáltatók dokumentációja szerint:",{"type":171,"head":172,"rows":179},"table",[173,175,177],[174],"Szolgáltató",[176],"Minimális előzetes értesítés a kivezetés előtt",[178],"Hogyan figyeld",[180,196,202],[181,184,186],[182,183],"tag","children",[185],"Általánosan elérhető modelleknél legalább 6 hónap, specializált változatoknál (chat, Codex, deep research) 3 hónap, előzetes (preview) modelleknél akár csak 2 hét",[187,188,191,192,195],"A ",{"tag":159,"children":189},[190],"GET \u002Fv1\u002Fmodels"," modellenként opcionális ",{"tag":159,"children":193},[194],"shutdown_date"," mezőt ad vissza",[197,198,200],[182,183],[199],"Nyilvánosan kiadott modelleknél legalább 60 nap; az aktív telepítéssel rendelkező ügyfeleket értesítik",[201],"Elavulási oldal a várható kivezetési dátumokkal; a Console használati exportja API-kulcs és modell szerint",[203,204,206],[182,183],[205],"Az előzetes modelleket legalább 2 hetes értesítéssel vezetik ki; a -latest alias mögött cserélődik a modell, törő változásnál 2 hetes e-mailes értesítéssel",[207],"A stabil modellnevek \"általában nem változnak\"; elavulási oldal",{"type":126,"content":209},[210,211,214],"Két gyakorlati következmény. Soha ne tegyél előzetes modellt vagy ",{"tag":159,"children":212},[213],"-latest"," aliast üzletkritikus funkció mögé: az OpenAI dokumentációja kifejezetten nem javasolja az előzetes modelleket ilyen terhelésre, hacsak nem tudsz rövid határidővel migrálni. És amikor bevezetsz egy modellt, aznap írd be a kivezetési dátumát egy naptárba. Az Anthropic a várható dátumokat jelenleg \"nem korábban, mint\" formában adja meg, ami alsó határ, nem ígéret.",{"type":133,"level":134,"id":98,"text":99},{"type":126,"content":217},[218],"Egy migrációt, amelynek nem ismered a hatókörét, nem tudsz befejezni. Bármilyen tesztelés előtt:",{"type":139,"ordered":220,"items":221},true,[222,227,243,248],[223,226],{"tag":144,"children":224},[225],"Élesben pontos modellazonosítót rögzíts."," Geminin stabil nevet, Claude-on és OpenAI-on pontos azonosítót. Az alias deploy nélkül mozdul el, vagyis a viselkedés commit nélkül is megváltozhat.",[228,231,232,237,238,242],{"tag":144,"children":229},[230],"A modellazonosítót központilag, konfigurációban tárold,"," felhasználási esetenként egy bejegyzéssel (\"order-extraction\", \"support-triage\"), ne hívási pontonként egy string literállal. Egy olyan gateway, mint a ",{"tag":233,"to":234,"children":235},"link","\u002Ftools\u002Flitellm",[236],"LiteLLM"," vagy az ",{"tag":233,"to":239,"children":240},"\u002Ftools\u002Fopenrouter",[241],"OpenRouter",", ezt útválasztási szabállyá teszi.",[244,247],{"tag":144,"children":245},[246],"Leltározd a tényleges használatot."," A kódkeresés megtalálja az ismert hívási pontokat. Az Anthropic Console használati exportja (CSV API-kulcs és modell szerint) és a gateway-naplóid megtalálják az elfelejtetteket: a cron jobot, a belső eszközt, a prototípust, amelyből éles rendszer lett.",[249,252],{"tag":144,"children":250},[251],"Rögzítsd a kérésbeállításokat felhasználási esetenként:"," max tokens, thinking- vagy effort-beállítás, eszközválasztás, a strukturált kimenet sémája, mintavételi paraméterek. Pontosan ezeket utasíthatja el az új modell.",{"type":133,"level":134,"id":101,"text":102},{"type":126,"content":255},[256],"Minden modellcserét ugyanazon az öt szakaszon viszek végig. Minden szakasznak van kilépési feltétele, és bármilyen hiba egy lépéssel visszaküld, nem előre, egy éles javítással.",{"type":258,"attrs":259,"inner":263,"caption":264},"diagram",{"viewBox":260,"role":261,"aria-labelledby":262},"0 0 720 260","img","mig-flow-t mig-flow-d","\u003Ctitle id=\"mig-flow-t\">Egy LLM-modellmigráció öt szakasza\u003C\u002Ftitle>\u003Cdesc id=\"mig-flow-d\">Leltár és rögzítés, majd szerződésjavítások, amíg egyetlen kérést sem utasít el, majd offline regressziós készlet a régi és az új modell összehasonlítására, majd árnyékforgalom éles kéréseken, végül canary bevezetés a felhasználók kis részére a teljes bevezetés előtt. Egy nem teljesített kapu egy szakasszal visszaküldi a változtatást; canary szakaszban egy funkciókapcsoló azonnali visszaállást tesz lehetővé.\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 leltár\u003C\u002Ftext>\u003Ctext x=\"76\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">hívások, beállítások\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 szerződés\u003C\u002Ftext>\u003Ctext x=\"218\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">nincs 400\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 eval\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">régi vs. új\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 árnyék\u003C\u002Ftext>\u003Ctext x=\"502\" y=\"120\" text-anchor=\"middle\" class=\"d-small\">élő, nem kiszolgált\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%-tól 100%-ig\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\">kapu megbukott: egy lépés vissza\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\">kapcsoló: azonnali visszaállás\u003C\u002Ftext>",[265],"A modellcsere mint kiadási folyamat. Az 1. és 2. szakasz mechanikus; a 3-5. szakaszban derülnek ki a viselkedésbeli változások.",{"type":133,"level":134,"id":104,"text":105},{"type":126,"content":268},[269],"A szerződésváltozások determinisztikusak, ezért ezeket kezeld először és külön. Olvasd el a szolgáltató migrációs útmutatóját a pontos forrás- és célmodelledre. Konkrét példaként néhány változás, amelyet a Claude Opus 5.5 útmutatója felsorol a korábbi modellekről érkező kódhoz:",{"type":171,"head":271,"rows":278},[272,274,276],[273],"Régi beállítás",[275],"Claude Opus 5.5 esetén",[277],"Javítás",[279,293,305,321,327],[280,289,291],[281,284,285,288],{"tag":159,"children":282},[283],"thinking: {type: \"disabled\"}"," vagy ",{"tag":159,"children":286},[287],"budget_tokens"," keret",[290],"400-as hiba",[292],"Töröld a mezőt; válassz effort szintet (alapértelmezés: medium)",[294,299,300],[295,298],{"tag":159,"children":296},[297],"tool_choice"," any vagy egy megnevezett eszköz",[290],[301,304],{"tag":159,"children":302},[303],"auto"," és utasítások, vagy strukturált kimenet",[306,318,319],[307,310,311,310,314,317],{"tag":159,"children":308},[309],"temperature",", ",{"tag":159,"children":312},[313],"top_p",{"tag":159,"children":315},[316],"top_k"," nem alapértelmezett értékkel",[290],[320],"Hagyd el őket; a prompttal irányíts",[322,324,325],[323],"Előre kitöltött asszisztensválasz formátum kikényszerítésére",[290],[326],"Strukturált kimenet vagy rendszerprompt-utasítás",[328,332,334],[329,331],{"tag":159,"children":330},[161]," régebbi tokenizálóhoz méretezve",[333],"Ugyanarra a szövegre akár kb. 35%-kal több token, mint az Opus 4.7 előtti modelleknél",[335],"Mérd újra tokenszámlálással; hagyj tartalékot",{"type":126,"content":337},[338,339,342],"Ennek a szakasznak a kilépési feltétele egyszerű: a leltárban rögzített összes kérésforma hiba nélkül lefut az új modellen. Az Anthropic a Claude Code-hoz egy ",{"tag":159,"children":340},[341],"\u002Fclaude-api migrate"," skillt is kínál, amely egy kódbázisban végrehajtja a modellazonosító cseréjét és a törő paraméterváltozásokat, és kézzel ellenőrizendő pontokból álló listát készít. Az ilyen eszközök felgyorsítják a 2. szakaszt; a 3. szakaszt nem helyettesítik.",{"type":133,"level":134,"id":107,"text":108},{"type":126,"content":345},[346],"Az Anthropic eval útmutatója szerint a regressziós evaloknak 100% közelében kell lenniük, és a visszaesést kell kiszúrniuk. Modellcserénél ez a készlet mindkét modellt ugyanazokon a bemeneteken futtatja, és összehasonlít. Az élesből építsd, ne a képzeletből: vegyél mintát a valódi kérésekből felhasználási esetenként, add hozzá az összes korábbi incidenst, és mindegyik mellé tedd oda a várt eredményt vagy egy referenciaválaszt. Aztán ne csak a pontosságot mérd:",{"type":171,"head":348,"rows":355},[349,351,353],[350],"Metrika",[352],"Miért mozdul el modellcserénél",[354],"Példa kapu (az én alapértékeim)",[356,363,370,377,384,391],[357,359,361],[358],"Feladatsiker az arany adatkészleten",[360],"Viselkedésváltozás",[362],"Nincs a zajon túli esés; minden korábbi incidens továbbra is átmegy",[364,366,368],[365],"Séma- és parse-hibák",[367],"A formázási szokások modellenként eltérnek",[369],"Nulla, bekapcsolt strukturált kimenettel",[371,373,375],[372],"Elutasítási és tartózkodási arány",[374],"A modellek eltérően óvatosak",[376],"Néhány ponton belül a régi modellhez képest; minden új elutasítást olvass el",[378,380,382],[379],"Kimenet hossza",[381],"A bőbeszédűség változása eltöri a felületeket és az SMS-korlátokat",[383],"A medián ±20%-on belül",[385,387,389],[386],"Token és költség elvégzett feladatonként",[388],"Tokenizáló, bőbeszédűség, thinking",[390],"Bevezetés előtt ismert és elfogadott",[392,394,396],[393],"Késleltetés p50 és p95",[395],"Thinking-alapértékek, modellméret",[397],"A funkció késleltetési keretén belül",{"type":126,"content":399},[400],"A nyitott kimeneteket párosával pontozd: mutasd meg egy bírónak ugyanarra a bemenetre a régi és az új választ véletlenszerű sorrendben, és kérdezd meg, melyik felel meg jobban a rubrikának. A \"van-e olyan jó, mint előtte\" kérdésre a páros összehasonlítás stabilabb, mint az abszolút pontszám, és felszínre hozza az elolvasásra érdemes eseteket. Maga a harness kicsi:",{"type":159,"code":402},"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":404},[405,406,410,411,415],"Ha a funkció ügynökalapú vagy mintavételezett, minden esetet többször futtass; modellenként egy futtatás elrejti a szórást. A vesztes esetek listája a szakasz valódi kimenete: a továbblépésről ezeknek az eseteknek az elolvasása alapján döntesz, nem egyetlen összesített pontszám alapján. A ",{"tag":233,"to":407,"children":408},"\u002Ftools\u002Fpromptfoo",[409],"Promptfoo"," és hasonló eszközök konfigurációból is lefuttatják ugyanezt az összehasonlítást, ha nem akarsz saját harnesst fenntartani; a módszert az ",{"tag":233,"to":412,"children":413},"\u002Fblog\u002Fllm-evals-for-product-features",[414],"LLM evalok termékfunkciókhoz"," című cikk részletesebben bemutatja.",{"type":133,"level":134,"id":110,"text":111},{"type":126,"content":418},[419],"Ha a készlet vesztes eseteket mutat, ne pakolj újabb utasításokat a régi promptra. A promptokban kerülőmegoldások gyűlnek össze az előző modell furcsaságaira (\"soha ne használj felsorolásjelet\", \"a mezőt MINDIG add vissza, akkor is, ha üres\"), és egy újabb modell ezeket túl szó szerint veheti. Ez egybevág Sclar és társai megállapításával, hogy a promptformátum-preferenciák rosszul vihetők át egyik modellről a másikra. Az én sorrendem:",{"type":139,"ordered":220,"items":421},[422,427,432,437],[423,426],{"tag":144,"children":424},[425],"Először a kerülőmegoldásokat töröld,"," és futtass újra. Sok vesztes eset eltűnik.",[428,431],{"tag":144,"children":429},[430],"Hangold újra az érvelési beállítást."," A Claude-nál az effort váltja a thinking-kereteket, és az alapértékek modellenként eltérnek (az Opus 5.5-nél medium). Próbáld ki a low, medium és high szintet a készleten, és felhasználási esetenként válassz.",[433,436],{"tag":144,"children":434},[435],"A formátumra való rábeszélést cseréld strukturált kimenetre,"," ahol a szolgáltató támogatja.",[438,441],{"tag":144,"children":439},[440],"Csak ezután adj hozzá új utasításokat,"," egyenként, mindegyiket egy elbukó esethez kötve.",{"type":443,"variant":444,"title":445,"body":446},"callout","warn","A promptot a modellel együtt verziózd",[447],[448],"Egy prompt egy adott modellre van hangolva, nem általánosan. A prompt verzióját és a modellazonosítót együtt tárold, együtt telepítsd és együtt állítsd vissza. Ha a modellt visszaállítod, de az új promptot megtartod, az egy harmadik konfiguráció, amelyet senki sem tesztelt.",{"type":133,"level":134,"id":113,"text":114},{"type":126,"content":451},[452,453,456],"Az offline készletek csak azokat az eseteket tartalmazzák, amelyekre gondoltál. Az ",{"tag":144,"children":454},[455],"árnyékforgalom"," az élő kérések másolatát elküldi az új modellnek, a válaszát a kiszolgált válasz mellé naplózza, és soha nem mutatja meg a felhasználóknak. Futtasd néhány napig, hogy lefedje a heti forgalmi mintát, majd az árnyékpárokon futtasd le ugyanazokat az ellenőrzéseket, mint a 3. szakaszban. Két figyelmeztetés: az árnyékhívások pénzbe kerülnek, ezért nagy forgalomnál vegyél mintát; és az árnyékág soha ne hajtson végre mellékhatást. Ügynököknél csak az olvasó részt tükrözd, vagy az eszközöket irányítsd sandboxba.",{"type":126,"content":458},[187,459,462,463,467],{"tag":144,"children":460},[461],"canary"," ezután egy funkciókapcsoló mögött a forgalom kis részének szolgálja ki az új modellt, ugyanazokkal a dashboardokkal, mint a régi modellnél: hibaarány, elutasítási arány, felhasználói visszajelzés, feladatonkénti költség és késleltetés. Lépésenként bővíts (5%, 25%, 100%), lépésenként rögzített megfigyelési ablakkal, és a régi konfigurációt a kivezetési dátumig tartsd telepíthető állapotban, hogy a visszaállás egy kapcsoló átbillentése legyen, ne egy kiadás. Az ",{"tag":233,"to":464,"children":465},"\u002Fblog\u002Fagent-observability-opentelemetry",[466],"OpenTelemetry alapú tracing"," a modellenkénti összehasonlítást egy lekérdezéssé teszi projekt helyett.",{"type":133,"level":134,"id":116,"text":117},{"type":126,"content":470},[471,472,476],"A regressziós készletet drága felépíteni, de olcsó fenntartani. Futtasd hetente az éles konfiguráció ellen, és minden prompt- vagy modellváltozáskor. Így kiszúrod a stabil név mögötti sodródást (Chen és társai esete), lesz alapvonalad, amikor megjön a következő elavulási értesítés, és a \"váltsunk-e az új, olcsóbb modellre?\" kérdésből mérés lesz. Ugyanez a készlet teszi biztonságossá a ",{"tag":233,"to":473,"children":474},"\u002Fblog\u002Fllm-cost-latency-prompt-caching-routing",[475],"költségalapú modellválasztást",": egy olcsóbb modell csak akkor olcsóbb, ha átmegy.",{"type":126,"content":478},[479,480,484],"A ranglisták segítenek jelölteket választani, ahogy az ",{"tag":233,"to":481,"children":482},"\u002Fblog\u002Fartificial-analysis-leaderboard-claude-opus-5-5",[483],"Artificial Analysis jelenlegi rangsoráról"," írtam, de azt nem tudják megmondani, hogy a kinyerő promptod még mindig megtalálja-e a szállítási dátumot. Ezt csak a saját készleted tudja.",{"type":133,"level":134,"id":119,"text":120},{"type":139,"ordered":220,"items":487},[488,490,492,494,496,498,500,502,504],[489],"Minden használt modell kivezetési dátumát írd be a naptárba; élesben kerüld az előzetes modelleket és a -latest aliasokat.",[491],"Rögzíts pontos modellazonosítókat, kezeld őket központilag felhasználási esetenként, és leltározd a tényleges használatot a szolgáltatói exportokból és a gateway-naplókból.",[493],"Olvasd el a migrációs útmutatót a pontos forrás- és célmodelledre; először minden elutasított paramétert javíts.",[495],"Mérd újra a tokenszámokat, és igazítsd a max_tokens értéket, a kereteket és a compaction küszöböket.",[497],"Futtasd egymás mellett a régi és az új modellt egy élesből és korábbi incidensekből épített arany adatkészleten.",[499],"Állíts kaput a sikerre, a parse-hibákra, az elutasításokra, a hosszra, a feladatonkénti költségre és a késleltetésre, és olvass el minden vesztes esetet.",[501],"Új utasítások előtt töröld a régi prompt-kerülőmegoldásokat; hangold újra az effortot felhasználási esetenként.",[503],"Tükrözd az élő forgalmat mellékhatások nélkül, majd canary kiadás egy kapcsoló mögött, visszaállási lehetőséggel a kivezetési dátumig.",[505],"A migráció után is futtasd hetente a készletet.",{"type":126,"content":507},[508,509,513],"Ha közeleg egy kivezetési dátum, és segítség kellene a migrációhoz, nézd meg az ",{"tag":233,"to":510,"children":511},"\u002Fexpertise\u002Fai-engineer",[512],"AI engineering"," oldalt.",{"type":133,"level":134,"id":122,"text":123},{"type":139,"ordered":220,"items":516},[517,521,524,527,530,533,536],[518],{"tag":519,"href":38,"children":520},"a",[37],[522],{"tag":519,"href":41,"children":523},[40],[525],{"tag":519,"href":44,"children":526},[43],[528],{"tag":519,"href":47,"children":529},[46],[531],{"tag":519,"href":50,"children":532},[49],[534],{"tag":519,"href":53,"children":535},[52],[537],{"tag":519,"href":56,"children":538},[55],[540,593,648,695],{"slug":541,"published":5,"minutes":542,"category":7,"tags":543,"keywords":549,"about":561,"sources":568,"cover":587,"og":588,"expertise":59,"locales":589,"lang":63,"title":590,"description":591,"coverAlt":592},"structured-outputs-json-schema-llm",9,[544,545,546,547,548],"Structured outputs","JSON Schema","Constrained decoding","LLM APIs","Validation",[550,551,552,553,554,555,556,557,558,559,560],"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",[562,565,567],{"name":563,"url":564},"JSON","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON",{"name":545,"url":566},"https:\u002F\u002Fjson-schema.org\u002F",{"name":30,"url":31},[569,572,575,578,581,584],{"title":570,"url":571},"OpenAI API docs: Structured model outputs","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fstructured-outputs",{"title":573,"url":574},"Claude API docs: Structured outputs","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fstructured-outputs",{"title":576,"url":577},"Gemini API docs: Structured outputs","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fstructured-output",{"title":579,"url":580},"vLLM docs: Structured Outputs","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Ffeatures\u002Fstructured_outputs.html",{"title":582,"url":583},"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":585,"url":586},"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],"Strukturált kimenet JSON Schemával: mit fed le a garancia, és mit nem","Hogyan működik a strukturált kimenet és a korlátozott dekódolás az OpenAI, Claude, Gemini és vLLM esetén, mely sémaszabályok számítanak, és mit validálj.","Egy JSON Schema nyelvtanná fordul, amely tokeneket maszkol, és sémának megfelelő JSON-t állít elő, amely ezután üzleti validáción megy át.",{"slug":594,"published":5,"minutes":542,"category":7,"tags":595,"keywords":601,"about":614,"sources":622,"cover":642,"og":643,"expertise":59,"locales":644,"lang":63,"title":645,"description":646,"coverAlt":647},"evaluating-ai-agents-trajectories",[596,597,598,599,600],"Agent evals","Trajectories","Tool calling","pass^k","LLM-as-judge",[602,603,604,605,606,607,608,609,610,611,612,613],"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",[615,618,621],{"name":616,"url":617},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":619,"url":620},"Software testing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_testing",{"name":30,"url":31},[623,624,627,630,633,636,639],{"title":55,"url":56},{"title":625,"url":626},"Yao et al.: τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.12045",{"title":628,"url":629},"Barres et al.: τ²-Bench: Evaluating Conversational Agents in a Dual-Control Environment (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.07982",{"title":631,"url":632},"LangChain: agentevals (GitHub)","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Fagentevals",{"title":634,"url":635},"DeepEval docs: Tool Correctness","https:\u002F\u002Fdeepeval.com\u002Fdocs\u002Fmetrics-tool-correctness",{"title":637,"url":638},"Ragas docs: Agentic or tool use metrics","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Fagents\u002F",{"title":640,"url":641},"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],"MI-ügynökök értékelése: trajektóriák, eredmények és megbízhatóság pontozása","Hogyan értékeld az MI-ügynököket: eredmény- és trajektória-értékelők, egyeztetési módok, pass^k, izolált környezet és megbízható LLM-bírák.","Eszközhívásokból álló ügynök-trajektória kétszer pontozva: a trajektória-értékelő a sorrendet és az argumentumokat, az eredményértékelő az adatbázist veti össze a célállapottal.",{"slug":649,"published":5,"minutes":650,"category":7,"tags":651,"keywords":657,"about":668,"sources":676,"cover":689,"og":690,"expertise":59,"locales":691,"lang":63,"title":692,"description":693,"coverAlt":694},"semantic-caching-llm-responses",6,[652,653,654,655,656],"Semantic cache","LLM cost","Latency","Embeddings","Redis",[658,659,660,661,662,663,664,665,666,667],"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",[669,672,675],{"name":670,"url":671},"Cache (computing)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCache_(computing)",{"name":673,"url":674},"Sentence embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSentence_embedding",{"name":30,"url":31},[677,680,683,686],{"title":678,"url":679},"Regmi and Pun: GPT Semantic Cache: Reducing LLM Costs and Latency via Semantic Embedding Caching (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2411.05276",{"title":681,"url":682},"Zilliz: GPTCache README (modules, similarity evaluation, eviction)","https:\u002F\u002Fgithub.com\u002Fzilliztech\u002FGPTCache",{"title":684,"url":685},"Claude Platform Docs: Prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fprompt-caching",{"title":687,"url":688},"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],"Szemantikus gyorsítótár LLM-alkalmazásokhoz: mikor biztonságos újrahasznosítani a válaszokat, és mikor nem","Hogyan használják újra a szemantikus cache-ek az LLM-válaszokat hasonló kérdésekre, miben mások, mint a prompt caching, és hogyan kerüld el a téves találatokat.","Egy új kérdést embeddelünk és a tárolt kérdésekkel vetünk össze; egy hasonlósági küszöb felett a tárolt választ kapjuk, alatta a modellt hívjuk.",{"slug":696,"published":697,"minutes":6,"category":7,"tags":698,"keywords":704,"about":713,"sources":723,"cover":793,"og":794,"expertise":59,"locales":795,"lang":63,"title":796,"description":797,"coverAlt":798},"self-hosted-llm-gdpr-cost","2026-10-09",[699,700,701,702,703],"Self-hosting","GDPR","vLLM","GPU cost","Open-weight models",[705,706,707,708,709,710,711,712],"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",[714,717,718,721],{"name":715,"url":716},"General Data Protection Regulation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",{"name":30,"url":31},{"name":719,"url":720},"Graphics processing unit","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphics_processing_unit",{"name":701,"url":722},"https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm",[724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790],{"title":725,"url":726},"openai\u002Fgpt-oss-120b model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fopenai\u002Fgpt-oss-120b",{"title":728,"url":729},"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":731,"url":732},"meta-llama\u002FLlama-3.3-70B-Instruct model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmeta-llama\u002FLlama-3.3-70B-Instruct",{"title":734,"url":735},"mistralai\u002FMistral-Large-3-675B-Instruct-2512 model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmistralai\u002FMistral-Large-3-675B-Instruct-2512",{"title":737,"url":738},"vLLM blog: v0.6.0 performance update (September 2024)","https:\u002F\u002Fblog.vllm.ai\u002F2024\u002F09\u002F05\u002Fperf-update.html",{"title":740,"url":741},"vLLM documentation: engine arguments","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fconfiguration\u002Fengine_args.html",{"title":743,"url":744},"vLLM documentation: vllm bench serve","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fcli\u002Fbench\u002Fserve.html",{"title":746,"url":747},"SemiAnalysis InferenceX: Llama 3.3 70B on H100 vs H200","https:\u002F\u002Finferencex.semianalysis.com\u002Fcompare\u002Fllama-3-3-70b-h100-vs-h200",{"title":749,"url":750},"Scaleway GPU instances pricing","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fpricing\u002Fgpu\u002F",{"title":752,"url":753},"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":755,"url":756},"Scaleway Generative APIs pricing","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fpricing\u002Fmodel-as-a-service\u002F",{"title":758,"url":759},"OVHcloud public cloud price list","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fprices\u002F",{"title":761,"url":762},"OVHcloud AI Endpoints","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fai-endpoints\u002F",{"title":764,"url":765},"OVHcloud AI Endpoints model catalogue","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fai-endpoints\u002Fcatalog\u002F",{"title":767,"url":768},"Hetzner dedicated GPU servers","https:\u002F\u002Fwww.hetzner.com\u002Fdedicated-rootserver\u002Fmatrix-gpu\u002F",{"title":770,"url":771},"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":773,"url":774},"NVIDIA GeForce RTX 5090","https:\u002F\u002Fwww.nvidia.com\u002Fen-us\u002Fgeforce\u002Fgraphics-cards\u002F50-series\u002Frtx-5090\u002F",{"title":776,"url":777},"NVIDIA GeForce software licence","https:\u002F\u002Fwww.nvidia.com\u002Fen-us\u002Fdrivers\u002Fgeforce-license\u002F",{"title":779,"url":780},"GDPR Article 28: processor","https:\u002F\u002Fgdpr-info.eu\u002Fart-28-gdpr\u002F",{"title":782,"url":783},"GDPR Article 44: general principle for transfers","https:\u002F\u002Fgdpr-info.eu\u002Fart-44-gdpr\u002F",{"title":785,"url":786},"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":788,"url":789},"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":791,"url":792},"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],"Saját LLM-üzemeltetés a GDPR miatt: mikor kell és mibe kerül","Saját LLM a GDPR miatt: mikor kell, mennyi GPU-memória kell a nyílt modellekhez, az EU-s árak 2026 októberében és a break-even millió tokenenként.","Borítókép a saját üzemeltetésű LLM-ekről a GDPR alatt: döntés a saját GPU-k és egy EU-s API között, break-even vonallal.",1792177150702]