[{"data":1,"prerenderedAt":853},["ShallowReactive",2],{"blog-structured-outputs-json-schema-llm-hu":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":26,"sources":35,"cover":54,"og":55,"expertise":56,"locales":57,"lang":60,"title":61,"description":62,"coverAlt":63,"metaTitle":64,"takeaways":65,"faq":71,"toc":87,"blocks":121,"others":591},"structured-outputs-json-schema-llm","2026-10-16",9,"llmops",[9,10,11,12,13],"Structured outputs","JSON Schema","Constrained decoding","LLM APIs","Validation",[15,16,17,18,19,20,21,22,23,24,25],"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",[27,30,32],{"name":28,"url":29},"JSON","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON",{"name":10,"url":31},"https:\u002F\u002Fjson-schema.org\u002F",{"name":33,"url":34},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",[36,39,42,45,48,51],{"title":37,"url":38},"OpenAI API docs: Structured model outputs","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fstructured-outputs",{"title":40,"url":41},"Claude API docs: Structured outputs","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fstructured-outputs",{"title":43,"url":44},"Gemini API docs: Structured outputs","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fstructured-output",{"title":46,"url":47},"vLLM docs: Structured Outputs","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Ffeatures\u002Fstructured_outputs.html",{"title":49,"url":50},"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":52,"url":53},"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","ai-engineer",[58,59,60],"en","de","hu","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.","Strukturált kimenet és JSON Schema LLM-ekhez · Balázs Csorba",[66,67,68,69,70],"A strukturált kimenet a JSON Schemádat nyelvtanná fordítja és kimaszkolja az érvénytelen tokeneket, így a válasz eleve parse-olható és megfelel a sémának.","A JSON mód csak érvényes JSON-t garantál; a strukturált kimenet a formát is, a szigorú eszközök pedig ugyanezt az eszközargumentumokra alkalmazzák.","Az OpenAI, a Claude és a Gemini a JSON Schema más-más részhalmazát támogatja; a metszetre tervezz kötelező mezőkkel, nullal és additionalProperties: false beállítással.","Az elutasítás, a max_tokens miatti csonkolás, az enum írásmódja és az elutasított séma dokumentált kivételek, saját kódággal.","Egy sémának megfelelő objektum is lehet hibás, ezért a hivatkozásokat és a hihetőséget kódban ellenőrizd, a minőséget pedig mérd sémával és séma nélkül.",[72,75,78,81,84],{"q":73,"a":74},"Mi a különbség a JSON mód és a strukturált kimenet között?","A JSON mód szintaktikailag érvényes JSON-t garantál, de azt nem, hogy a szükséges mezők és típusok benne lesznek. A strukturált kimenet a generálást a JSON Schemádhoz köti, így a válasz megfelel a sémának, kivéve a dokumentált eseteket, például elutasításnál vagy csonkolásnál. Használd mindig, amikor a szolgáltató és a modell támogatja.",{"q":76,"a":77},"Rontja-e a strukturált kimenet az LLM válaszait?","A bizonyítékok vegyesek. Egy 2024-es tanulmány gyengébb érvelést mért szigorú formátumkényszer mellett, a 2025-ös JSONSchemaBench viszont javított prompttal a kényszer nélküli alapszinttel egyező vagy jobb eredményt talált. Hagyd, hogy a modell végiggondolja a feladatot, mielőtt egy válaszmezőben elkötelezi magát, akár thinking blokkokban, akár egy elöl álló indoklásmezőben, és mérd meg a saját feladatodon.",{"q":79,"a":80},"Szigorú módban is validálnom kell a kimenetet?","Igen. A séma a formát garantálja, nem az igazságot. Ellenőrizd a leállás okát, keresd vissza az azonosítókat és cikkszámokat a saját adataidban, alkalmazz hihetőségi szabályokat, a hibás eseteket pedig küldd egy javítási kísérletre, majd emberhez.",{"q":82,"a":83},"Miért ad 400-as hibát a JSON sémám?","Általában azért, mert olyan kulcsszót használ, amelyet a szolgáltató nem támogat, például allOf az OpenAI-nál vagy minLength a Claude-nál, vagy mert túl nagy az összesített összetettség. A Claude a 20 szigorú eszközös, 24 opcionális paraméteres és 16 unió típusú paraméteres korlátját egy kérés összes sémájára együtt számolja.",{"q":85,"a":86},"Hogyan tehetek opcionálissá egy mezőt az OpenAI szigorú módjában?","A szigorú mód megköveteli, hogy minden mező szerepeljen a required listában. Az opcionális mezőt egy nullt tartalmazó unióval utánozhatod, például string vagy null típussal, és a kódodban a nullt ismeretlenként kezeled.",[88,91,94,97,100,103,106,109,112,115,118],{"id":89,"title":90},"json-mode-vs-structured-outputs","JSON mód, strukturált kimenetek és szigorú eszközök",{"id":92,"title":93},"how-constrained-decoding-works","Hogyan működik a korlátozott dekódolás",{"id":95,"title":96},"provider-comparison","OpenAI, Claude, Gemini és vLLM összehasonlítva",{"id":98,"title":99},"schema-design-rules","Sématervezési szabályok, amelyek minden szolgáltatónál működnek",{"id":101,"title":102},"code-example","Típusos kinyerés TypeScriptben",{"id":104,"title":105},"when-the-guarantee-breaks","Amikor a garancia nem érvényes",{"id":107,"title":108},"does-it-hurt-quality","Rontja-e a formátumkényszer a válasz minőségét?",{"id":110,"title":111},"validation-layer","A séma mögötti validációs réteg",{"id":113,"title":114},"self-hosted-models","Strukturált kimenet saját üzemeltetésű modelleken",{"id":116,"title":117},"checklist","Ellenőrzőlista",{"id":119,"title":120},"sources","Források",[122,131,134,137,148,164,165,168,179,188,189,192,279,282,283,286,332,333,358,360,371,372,375,422,429,430,442,459,460,463,496,514,515,535,538,539,557,570,571],{"type":123,"content":124},"paragraph",[125,126,130],"Ha megkérsz egy modellt, hogy \"JSON-ban válaszoljon\", az addig működik, amíg egyszer nem: egy megjegyzés a végén, egy hiányzó mező, egy string ott, ahol a kódod számot vár. A ",{"tag":127,"children":128},"strong",[129],"strukturált kimenetek"," (structured outputs) ennek a problémának a szintaktikai felét oldják meg. A szolgáltató a JSON Schemádat nyelvtanná fordítja, és a modell csak olyan tokeneket adhat ki, amelyekkel a kimenet érvényes marad, így a válasz eleve parse-olható és megfelel a sémának. Az OpenAI, az Anthropic, a Google és a nyílt forráskódú inferenciaszerverek mind kínálnak már ilyet.",{"type":123,"content":132},[133],"A másik fele továbbra is a te dolgod. Egy sémának megfelelő objektumban is lehet rossz ügyfél, kitalált dátum vagy egy elutasítás. Ez az útmutató bemutatja, hogyan működik a korlátozott dekódolás (constrained decoding), miben különbözik a három nagy API, mely sémaszabályokon csúsznak el a legtöbben, mely hibaeseteket nem fed le a garancia, és milyen validációs rétegnek kell mögötte állnia.",{"type":135,"level":136,"id":89,"text":90},"heading",2,{"type":123,"content":138},[139,140,143,144,147],"Három szint létezik, és könnyű összekeverni őket. A ",{"tag":127,"children":141},[142],"csak promptban kért JSON"," egy utasítás, semmi több. A ",{"tag":127,"children":145},[146],"JSON mód"," szintaktikailag érvényes JSON-t garantál, de a te szerkezetedet nem: az OpenAI útmutatója szerint mindkét mód érvényes JSON-t ad, de \"csak a Structured Outputs biztosítja a séma betartását\". A JSON módnak saját csapdája is van: ha a prompt nem említi a JSON-t, a modell végtelen szóközfolyamot generálhat, ezért az OpenAI API elutasítja a JSON módú kérést, ha a \"JSON\" szó sehol sem szerepel a kontextusban.",{"type":123,"content":149},[150,151,154,155,158,159,163],"A ",{"tag":127,"children":152},[153],"strukturált kimenet"," a végső választ köti sémához. A ",{"tag":127,"children":156},[157],"szigorú eszközhasználat"," ugyanezt a garanciát az eszközök argumentumaira alkalmazza: állítsd be a ",{"tag":160,"children":161},"code",[162],"strict: true"," mezőt az eszköz definíciójában, és a modell által küldött argumentumok megfelelnek az eszköz bemeneti sémájának. Az elsőt akkor használd, amikor a modell a kódodnak válaszol, a másodikat, amikor a modell hívja meg a kódodat. Az Anthropic API-ban a kettő egy kérésben is kombinálható.",{"type":135,"level":136,"id":92,"text":93},{"type":123,"content":166},[167],"Minden generálási lépésben a modell valószínűséget rendel a szókincse minden tokenjéhez. A korlátozott dekódolás egy, a sémádból levezetett állapotgépet követ, és kimaszkol minden olyan tokent, amely az adott ponton érvénytelenné tenné a kimenetet. Egy nyitó kapcsos zárójel és egy kötelező kulcs után a záró zárójel egyszerűen nem választható. A tartalmat továbbra is a modell választja; a nyelvtan csak azokat a lehetőségeket veszi el, amelyek nem vezethetnek érvényes kimenethez.",{"type":123,"content":169},[170,171,174,175,178],"A nyelvtan lefordítása időbe kerül. Az Anthropic dokumentációja szerint egy új sémával küldött első kérés extra késleltetéssel jár, amíg a nyelvtan lefordul, a lefordított nyelvtanokat pedig az utolsó használattól számítva 24 órán át gyorsítótárazzák. A séma szerkezetének vagy az eszközök körének módosítása érvényteleníti a gyorsítótárat; ha csak egy ",{"tag":160,"children":172},[173],"name"," vagy ",{"tag":160,"children":176},[177],"description"," mezőt változtatsz, az nem. Az OpenAI hasonló első kérés körüli késést csak finomhangolt modelleknél említ. A gyakorlatban: tartsd a sémákat stabilan és verziózva, és deploy után melegítsd be őket, ha nem az első felhasználónak kell kifizetnie a fordítást.",{"type":180,"attrs":181,"inner":185,"caption":186},"diagram",{"viewBox":182,"role":183,"aria-labelledby":184},"0 0 720 300","img","so-flow-t so-flow-d","\u003Ctitle id=\"so-flow-t\">A sémától az elfogadott objektumig\u003C\u002Ftitle>\u003Cdesc id=\"so-flow-d\">A sémád nyelvtanná fordul, és gyorsítótárba kerül. Generálás közben a nyelvtan kimaszkolja az érvénytelen tokeneket, így a modell sémának megfelelő JSON-t ad vissza. A kódod ellenőrzi a leállás okát, feldolgozza az objektumot, és lefuttatja az üzleti validációt. Az érvényes objektumot elfogadja; az elutasítás, a csonkolás vagy a szabálysértés újrapróbálásra vagy elutasításra megy.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"ah-so\" 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=\"20\" y=\"40\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"90\" y=\"68\" text-anchor=\"middle\" class=\"d-text\">JSON Schema\u003C\u002Ftext>\u003Ctext x=\"90\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">Zod, Pydantic\u003C\u002Ftext>\u003Crect x=\"200\" y=\"40\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"270\" y=\"68\" text-anchor=\"middle\" class=\"d-text\">nyelvtan\u003C\u002Ftext>\u003Ctext x=\"270\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">lefordítva, cache\u003C\u002Ftext>\u003Crect x=\"380\" y=\"40\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"450\" y=\"68\" text-anchor=\"middle\" class=\"d-text\">tokenmaszk\u003C\u002Ftext>\u003Ctext x=\"450\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">minden lépésben\u003C\u002Ftext>\u003Crect x=\"560\" y=\"40\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"630\" y=\"68\" text-anchor=\"middle\" class=\"d-text\">JSON\u003C\u002Ftext>\u003Ctext x=\"630\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">sémának megfelel\u003C\u002Ftext>\u003Crect x=\"560\" y=\"200\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"630\" y=\"228\" text-anchor=\"middle\" class=\"d-text\">leállási ok\u003C\u002Ftext>\u003Ctext x=\"630\" y=\"250\" text-anchor=\"middle\" class=\"d-small\">refusal, max_tokens\u003C\u002Ftext>\u003Crect x=\"380\" y=\"200\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"450\" y=\"228\" text-anchor=\"middle\" class=\"d-text\">validátorod\u003C\u002Ftext>\u003Ctext x=\"450\" y=\"250\" text-anchor=\"middle\" class=\"d-small\">üzleti szabályok\u003C\u002Ftext>\u003Crect x=\"200\" y=\"200\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"270\" y=\"228\" text-anchor=\"middle\" class=\"d-text\">elfogad\u003C\u002Ftext>\u003Ctext x=\"270\" y=\"250\" text-anchor=\"middle\" class=\"d-small\">objektum használata\u003C\u002Ftext>\u003Crect x=\"20\" y=\"200\" width=\"140\" height=\"64\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"90\" y=\"228\" text-anchor=\"middle\" class=\"d-text\">újra \u002F elutasít\u003C\u002Ftext>\u003Ctext x=\"90\" y=\"250\" text-anchor=\"middle\" class=\"d-small\">eset naplózása\u003C\u002Ftext>\u003Cpath d=\"M160 72H198\" class=\"d-line\" marker-end=\"url(#ah-so)\" \u002F>\u003Cpath d=\"M340 72H378\" class=\"d-line\" marker-end=\"url(#ah-so)\" \u002F>\u003Cpath d=\"M520 72H558\" class=\"d-line\" marker-end=\"url(#ah-so)\" \u002F>\u003Cpath d=\"M630 104V198\" class=\"d-line\" marker-end=\"url(#ah-so)\" \u002F>\u003Cpath d=\"M560 232H522\" class=\"d-line\" marker-end=\"url(#ah-so)\" \u002F>\u003Cpath d=\"M380 232H342\" class=\"d-line-accent\" marker-end=\"url(#ah-so)\" \u002F>\u003Ctext x=\"361\" y=\"222\" text-anchor=\"middle\" class=\"d-label\">érvényes\u003C\u002Ftext>\u003Cpath d=\"M450 264V290H90V266\" class=\"d-line d-dash\" marker-end=\"url(#ah-so)\" \u002F>\u003Ctext x=\"270\" y=\"284\" text-anchor=\"middle\" class=\"d-label\">érvénytelen\u003C\u002Ftext>",[187],"A strukturált kimenet a felső sort garantálja. Az alsó sor, a leállási ok ellenőrzése és a tartalom validálása, továbbra is a te kódod.",{"type":135,"level":136,"id":95,"text":96},{"type":123,"content":190},[191],"Mind a négy elfogad JSON Schemát, mind a négy csak egy részhalmazát támogatja, és a részhalmazok eltérnek. A jelenlegi dokumentációk szerint:",{"type":193,"head":194,"rows":203},"table",[195,197,199,201],[196],"",[198],"Bekapcsolás",[200],"Fontos sémaszabályok",[202],"Dokumentált korlátok",[204,224,237,254],[205,208,220,222],[206,207],"tag","children",[209,212,213,216,217,219],{"tag":160,"children":210},[211],"text.format"," a ",{"tag":160,"children":214},[215],"type: \"json_schema\""," és ",{"tag":160,"children":218},[162]," értékekkel (Responses API)",[221],"Minden mező kötelező (opcionális mező null unióval utánozható); additionalProperties false; nincs allOf, not, if\u002Fthen\u002Felse; a kulcsok sémasorrendben jönnek",[223],"Legfeljebb 5000 objektumtulajdonság, 10 beágyazási szint, 1000 enum érték",[225,226,233,235],[206,207],[227,230,231],{"tag":160,"children":228},[229],"output_config.format","; eszközöknél ",{"tag":160,"children":232},[162],[234],"Az additionalProperties értéke csak false lehet; nincs szám- vagy hosszkorlát; a minItems csak 0 vagy 1; a kötelező mezők az opcionálisak előtt jönnek",[236],"Kérésenként 20 szigorú eszköz, 24 opcionális paraméter, 16 unió típusú paraméter",[238,239,250,252],[206,207],[240,212,243,216,246,249],{"tag":160,"children":241},[242],"response_format",{"tag":160,"children":244},[245],"mime_type: application\u002Fjson",{"tag":160,"children":247},[248],"schema"," mezőkkel",[251],"Támogatja: enum, format, minimum\u002Fmaximum, minItems\u002FmaxItems, prefixItems; null típustömbbel",[253],"\"A nagyon nagy vagy mélyen beágyazott sémákat elutasíthatja\"",[255,256,275,277],[206,207],[257,260,261,264,265,264,268,264,271,274],{"tag":160,"children":258},[259],"structured_outputs"," (",{"tag":160,"children":262},[263],"json",", ",{"tag":160,"children":266},[267],"regex",{"tag":160,"children":269},[270],"choice",{"tag":160,"children":272},[273],"grammar",")",[276],"Backendek: xgrammar vagy guidance; a régi guided_json mezőket a v0.12.0 eltávolította",[278],"Backendtől és modelltől függ",{"type":123,"content":280},[281],"A táblázat két részlete okozza a legtöbb meglepetést. Először: eltérnek a sorrendszabályok. Az OpenAI sémasorrendben adja ki a kulcsokat, a Claude előre teszi a kötelező mezőket, utánuk az opcionálisakat. Ha számítasz a sorrendre (például részobjektumokat streamelsz egy felületre), tegyél minden mezőt kötelezővé. Másodszor: a Claude korlátai egy kérés összes szigorú sémájára együtt számítanak, így négy szigorú eszköz, egyenként hat opcionális paraméterrel, már eléri a 24-es határt. Ha az összesített nyelvtan túl nagy, 400-as hibát kapsz \"Schema is too complex for compilation\" üzenettel.",{"type":135,"level":136,"id":98,"text":99},{"type":123,"content":284},[285],"Ha egy sémának több szolgáltatónál is futnia kell, a metszetükre tervezd. Ezeket a szabályokat használom:",{"type":287,"ordered":288,"items":289},"list",false,[290,299,304,309,314,319],[291,294,295,298],{"tag":127,"children":292},[293],"Minden mező legyen kötelező, az \"ismeretlen\" pedig null."," A ",{"tag":160,"children":296},[297],"[\"string\", \"null\"]"," típus egyértelmű, és mindenhol működik; egy hiányzó kulcs kétértelmű. A Claude-nál az unió típusok beleszámítanak a 16 paraméteres korlátba, ezért csak ott használd, ahol a null valódi válasz.",[300,303],{"tag":127,"children":301},[302],"Minden objektumon legyen additionalProperties: false."," A Claude és az OpenAI szigorú módja megköveteli, és megakadályozza, hogy a modell olyan mezőket találjon ki, amelyeket a kódod csendben figyelmen kívül hagy.",[305,308],{"tag":127,"children":306},[307],"Ahol elágazol, ott enum legyen, ne szabad szöveg."," Státusz, kategória, szándék. Az enum értékeket ettől függetlenül kis- és nagybetűtől függetlenül hasonlítsd össze: a Claude dokumentációja figyelmeztet, hogy az enum és const értékek írásmódja nem garantált.",[310,313],{"tag":127,"children":311},[312],"A szabályok a leírásba kerüljenek, ne korlátokba."," A Claude nem támogatja a minLength, maximum és hasonló kulcsszavakat; írd a leírásba, hogy \"ISO 4217 kód, három betű\", és ellenőrizd kódban.",[315,318],{"tag":127,"children":316},[317],"Legyen lapos és kicsi."," A beágyazás, az uniók és az opcionális paraméterek megsokszorozzák a nyelvtan méretét. Két egyszerű hívás gyakran jobb, mint egy séma, amely mindent egyszerre akar lefedni.",[320,323,324,327,328,331],{"tag":127,"children":321},[322],"Építs be egy kifejezett kiutat."," Egy olyan mező, mint a ",{"tag":160,"children":325},[326],"\"confidence\": \"low\" | \"high\""," vagy a ",{"tag":160,"children":329},[330],"\"not_found\": true",", érvényes módot ad a modellnek arra, hogy jelezze: nem tudja a választ. Enélkül a séma kikényszerít egy választ.",{"type":135,"level":136,"id":101,"text":102},{"type":123,"content":334},[335,336,339,340,343,344,346,347,350,351,212,354,357],"Az SDK-k elrejtik a séma körüli munkát. Az Anthropic TypeScript SDK-ban a Zod sémát ",{"tag":160,"children":337},[338],"zodOutputFormat()"," hívásba csomagolod, és meghívod a ",{"tag":160,"children":341},[342],"client.messages.parse()"," metódust, amely ",{"tag":160,"children":345},[229]," mezőként küldi el, és típusos ",{"tag":160,"children":348},[349],"parsed_output"," értéket ad vissza. Az OpenAI megfelelője a ",{"tag":160,"children":352},[353],"responses.parse()",{"tag":160,"children":355},[356],"zodTextFormat()"," segítségével. Amit az SDK nem tud elvégezni helyetted, az a leállási ok ellenőrzése és az utána következő üzleti szabály:",{"type":160,"code":359},"import Anthropic from \"@anthropic-ai\u002Fsdk\";\nimport { zodOutputFormat } from \"@anthropic-ai\u002Fsdk\u002Fhelpers\u002Fzod\";\nimport { z } from \"zod\";\n\nconst OrderLine = z.object({\n  sku: z.string().describe(\"Article number exactly as written in the email\"),\n  quantity: z.number().int().describe(\"Ordered quantity, a positive integer\"),\n  unit: z.enum([\"piece\", \"box\", \"pallet\"]),\n  delivery_date: z.string().nullable().describe(\"ISO date, or null if none given\"),\n});\nconst Order = z.object({ lines: z.array(OrderLine), not_an_order: z.boolean() });\n\nconst client = new Anthropic();\nconst res = await client.messages.parse({\n  model: \"claude-opus-5-5\",\n  max_tokens: 4096,\n  messages: [{ role: \"user\", content: `Extract the order lines:\\n\\n${email}` }],\n  output_config: { format: zodOutputFormat(Order) },\n});\n\nif (res.stop_reason === \"refusal\" || res.stop_reason === \"max_tokens\") {\n  throw new Error(`no usable output: ${res.stop_reason}`);   \u002F\u002F schema not guaranteed here\n}\nconst order = res.parsed_output!;\nfor (const line of order.lines) {\n  if (line.quantity \u003C= 0 || !(await skuExists(line.sku))) {   \u002F\u002F business rules: your job\n    await queueForHumanReview(email, order);\n    break;\n  }\n}",{"type":123,"content":361},[362,363,366,367,370],"A Zod-megkötések (",{"tag":160,"children":364},[365],".int()",", a leírások) így is segítenek: a leírás útmutatásként eljut a modellhez, és a ",{"tag":160,"children":368},[369],"Order.parse()"," hívást magad is lefuttathatod, ha egy második, helyi ellenőrzést szeretnél azokra a korlátokra, amelyeket a szolgáltató nem kényszerít ki.",{"type":135,"level":136,"id":104,"text":105},{"type":123,"content":373},[374],"A \"garantált sémamegfelelésnek\" vannak dokumentált kivételei, és mindegyikhez kell egy kódág:",{"type":287,"ordered":288,"items":376},[377,390,407,412,417],[378,381,382,385,386,389],{"tag":127,"children":379},[380],"Elutasítás."," A Claude HTTP 200 mellett ",{"tag":160,"children":383},[384],"stop_reason: \"refusal\""," értéket ad vissza, és a kimenet ilyenkor nem feltétlenül felel meg a sémának. Az OpenAI külön ",{"tag":160,"children":387},[388],"refusal"," mezőt tesz a válaszba. Az Anthropic arra is figyelmeztet, hogy egy olyan mező, amely a modell lépésenkénti gondolatmenetét kéri, gondolatmenet-kinyerés miatti elutasítást válthat ki; kérj inkább rövid indoklást.",[391,394,395,398,399,402,403,406],{"tag":127,"children":392},[393],"Csonkolás."," Ha a válasz eléri a ",{"tag":160,"children":396},[397],"max_tokens"," (Claude) vagy a ",{"tag":160,"children":400},[401],"max_output_tokens"," (OpenAI, ",{"tag":160,"children":404},[405],"incomplete"," státusz) korlátot, a JSON félbeszakad. Emeld a korlátot, vagy csökkentsd a kimenetet; soha ne parse-old optimistán.",[408,411],{"tag":127,"children":409},[410],"Enum írásmód."," Lásd fent: kis- és nagybetűtől függetlenül hasonlíts.",[413,416],{"tag":127,"children":414},[415],"Elutasított séma."," A nem támogatott kulcsszavak vagy a túl nagy összetettség még a generálás előtt 400-as hibát adnak. Minden sémát a CI-ban tesztelj, ne élesben először.",[418,421],{"tag":127,"children":419},[420],"Funkcióütközés."," A Claude-nál a hivatkozások (citations) és a strukturált kimenet nem kombinálhatók (400), ahogy az előre kitöltött válasz (prefill) sem. Ha forrásolt válasz és JSON is kell, csináld két lépésben.",{"type":423,"variant":424,"title":425,"body":426},"callout","warn","Az érvényes JSON még nem helyes válasz",[427],[428],"A Gemini saját dokumentációja egyértelműen fogalmaz: a kimenet szintaktikailag helyes JSON, ezért az értékeket mindig ellenőrizd az alkalmazásodban, és kezeld a sémának megfelelő, de tartalmilag hibás kimeneteket. A séma a formát garantálja. Arról, hogy a cikkszám létezik-e, semmit sem mond.",{"type":135,"level":136,"id":107,"text":108},{"type":123,"content":431},[432,433,437,438,441],"Ez a legtöbbet vitatott kérdés, és a bizonyítékok mindkét irányba mutatnak. A ",{"tag":434,"href":50,"children":435},"a",[436],"\"Let Me Speak Freely?\""," (Tam és tsai., 2024) \"az érvelési képesség jelentős romlásáról\" számolt be formátumkényszer mellett, és minél szigorúbb volt a kényszer, annál nagyobb volt a romlás. A ",{"tag":434,"href":53,"children":439},[440],"JSONSchemaBench"," (Geng és tsai., 2025) javított prompttal három feladatot újrafuttatott, és ennek az ellenkezőjét találta: minden korlátozott dekódolású keretrendszer elérte vagy meghaladta a kényszer nélküli alapszintet, a Guidance például 83,8%-ot ért el a GSM8K-n a modell önmagában mért 80,1%-ával szemben.",{"type":123,"content":443},[444,445,448,449,452,453,458],"Az én olvasatom: a prompt és a séma kialakítása többet számít, mint maga a mechanizmus. Az árt, ha a modellnek egy válaszmezőben el kell köteleznie magát, mielőtt végiggondolta volna a feladatot. Két megoldás működik. Érvelő modelleknél a gondolkodás a thinking blokkokban történik: a Claude nyelvtana ott nem érvényes, a modell szabadon gondolkodik, és csak a végső válasz kötött. Más modelleknél tegyél egy rövid ",{"tag":160,"children":446},[447],"explanation"," mezőt az ",{"tag":160,"children":450},[451],"answer"," mező elé (az OpenAI sémasorrendben adja ki a kulcsokat). És mérd meg a saját feladatodon, ",{"tag":454,"to":455,"children":456},"link","\u002Fblog\u002Fllm-evals-for-product-features",[457],"egy kis eval készlettel",", sémával és séma nélkül is.",{"type":135,"level":136,"id":110,"text":111},{"type":123,"content":461},[462],"Kezeld a modell kimenetét úgy, mint egy nem megbízható kliens bemenetét: parse-olás, validálás, csak utána cselekvés. A séma megszüntet egy hibaosztályt (szintaxis és forma), így a többi ellenőrzés egyszerűbb lesz, de nem válik elhagyhatóvá. Ezt teszem minden strukturált hívás mögé:",{"type":287,"ordered":464,"items":465},true,[466,471,481,486,491],[467,470],{"tag":127,"children":468},[469],"Leállási ok kapu."," Minden, ami nem normál befejezés, hibaágra megy.",[472,475,476,480],{"tag":127,"children":473},[474],"Hivatkozási ellenőrzések."," Az azonosítókat, cikkszámokat, ügyfélszámokat és dátumokat a saját adataidban keresd vissza. Itt bukkan fel a legtöbb valódi hiba, és itt a ",{"tag":454,"to":477,"children":478},"\u002Fblog\u002Fllm-hallucination-grounding-citations",[479],"megalapozás (grounding)"," fontosabb, mint a formátum.",[482,485],{"tag":127,"children":483},[484],"Hihetőségi szabályok."," Küszöb feletti mennyiségek, múltbeli dátumok, végösszegek, amelyek nem jönnek ki.",[487,490],{"tag":127,"children":488},[489],"Egy javítási kísérlet, utána ember."," A validációs hibát egyszer küldd vissza; ha továbbra is hibás, az eset kerüljön ellenőrzési sorba, ne ciklusba.",[492,495],{"tag":127,"children":493},[494],"Naplózd a séma verzióját."," Ha módosítasz egy sémát, a régi trace-eknek értelmezhetőnek kell maradniuk, az evaloknak pedig az éles verzió ellen kell futniuk.",{"type":123,"content":497},[498,499,503,504,508,509,513],"Az olyan könyvtárak, mint a ",{"tag":454,"to":500,"children":501},"\u002Ftools\u002Fpydantic-ai",[502],"Pydantic AI"," és a ",{"tag":454,"to":505,"children":506},"\u002Ftools\u002Fguardrails-ai",[507],"Guardrails AI",", ennek a ciklusnak egyes részeit csomagolják. Útválasztási és osztályozási döntésekhez, ahol azt is tudnod kell, mennyire biztos a modell, lásd a ",{"tag":454,"to":510,"children":511},"\u002Fblog\u002Fjev-typed-decisions-llm-routing",[512],"kalibrált bizonyosságú típusos döntésekről"," szóló cikket.",{"type":135,"level":136,"id":113,"text":114},{"type":123,"content":516},[150,517,521,522,524,525,527,528,264,531,534],{"tag":454,"to":518,"children":519},"\u002Ftools\u002Fvllm",[520],"vLLM"," xgrammar vagy guidance backenddel támogatja a strukturált kimenetet, az OpenAI-kompatibilis szerverén keresztül (",{"tag":160,"children":523},[242]," JSON Schemával) vagy a ",{"tag":160,"children":526},[259]," paraméterrel, amely reguláris kifejezést, rögzített választási listát vagy környezetfüggetlen nyelvtant is elfogad. Ha régebbi vLLM-ről frissítesz: a ",{"tag":160,"children":529},[530],"guided_json",{"tag":160,"children":532},[533],"guided_regex"," és a rokon mezőket a v0.12.0 eltávolította. A vLLM a strukturált kimenetet érvelési parserekkel is kombinálja, így egy érvelő modell szabadon gondolkodhat, és mégis kötött JSON-t ad vissza.",{"type":123,"content":536},[537],"Itt a JSONSchemaBench a hasznos viszonyítási pont: 10 000 valós sémán tesztelte a Guidance, az Outlines, a llama.cpp, az XGrammar, az OpenAI és a Gemini hatékonyságát, lefedettségét és minőségét, és azt találta, hogy egyik motor sem volt minden esetben a legjobb. Ha saját magad üzemeltetsz, futtasd át a saját sémáidat a választott backenden, mielőtt elköteleződsz mellette.",{"type":135,"level":136,"id":116,"text":117},{"type":287,"ordered":464,"items":540},[541,543,545,547,549,551,553,555],[542],"Válaszokhoz strukturált kimenetet (ne JSON módot), eszközargumentumokhoz szigorú eszközöket használj.",[544],"A metszetre tervezz: minden mező kötelező, ismeretlenre null, additionalProperties false, enum mindenhez, amin elágazol.",[546],"Minden sémát ellenőrizz a CI-ban az egyes szolgáltatók korlátai ellen.",[548],"Az elutasítást és a csonkolást a parse-olás előtt kezeld.",[550],"Az enumokat kis- és nagybetűtől függetlenül hasonlítsd össze.",[552],"A hivatkozásokat és a hihetőséget kódban ellenőrizd; egy javítási kísérlet, utána ember.",[554],"Verziózd a sémákat, naplózd a verziót minden trace-szel, és deploy után melegítsd be az új sémákat.",[556],"Mérd a minőséget sémával és séma nélkül a saját eval készleteden.",{"type":123,"content":558},[559,560,564,565,569],"Ha mindezt egy Nuxt frontendbe építed, ",{"tag":454,"to":561,"children":562},"\u002Fblog\u002Fnuxt-llm-features-ai-sdk-streaming",[563],"a Nuxt LLM-funkciókról szóló útmutató"," bemutatja a streamelési oldalt. Kinyerési pipeline-ok tervezéséhez lásd az ",{"tag":454,"to":566,"children":567},"\u002Fexpertise\u002Fai-engineer",[568],"AI engineering"," oldalt.",{"type":135,"level":136,"id":119,"text":120},{"type":287,"ordered":464,"items":572},[573,576,579,582,585,588],[574],{"tag":434,"href":38,"children":575},[37],[577],{"tag":434,"href":41,"children":578},[40],[580],{"tag":434,"href":44,"children":581},[43],[583],{"tag":434,"href":47,"children":584},[46],[586],{"tag":434,"href":50,"children":587},[49],[589],{"tag":434,"href":53,"children":590},[52],[592,649,703,750],{"slug":593,"published":5,"minutes":6,"category":7,"tags":594,"keywords":600,"about":613,"sources":621,"cover":643,"og":644,"expertise":56,"locales":645,"lang":60,"title":646,"description":647,"coverAlt":648},"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":33,"url":34},[622,625,628,631,634,637,640],{"title":623,"url":624},"Anthropic: Demystifying evals for AI agents (Jan 2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fdemystifying-evals-for-ai-agents",{"title":626,"url":627},"Yao et al.: τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.12045",{"title":629,"url":630},"Barres et al.: τ²-Bench: Evaluating Conversational Agents in a Dual-Control Environment (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.07982",{"title":632,"url":633},"LangChain: agentevals (GitHub)","https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Fagentevals",{"title":635,"url":636},"DeepEval docs: Tool Correctness","https:\u002F\u002Fdeepeval.com\u002Fdocs\u002Fmetrics-tool-correctness",{"title":638,"url":639},"Ragas docs: Agentic or tool use metrics","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Fagents\u002F",{"title":641,"url":642},"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",[58,59,60],"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":650,"published":5,"minutes":651,"category":7,"tags":652,"keywords":658,"about":670,"sources":677,"cover":697,"og":698,"expertise":56,"locales":699,"lang":60,"title":700,"description":701,"coverAlt":702},"llm-model-migration-regression-testing",10,[653,654,655,656,657],"Model migration","Regression testing","Deprecations","LLM evals","Canary releases",[659,660,661,662,663,664,665,666,667,668,669],"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",[671,673,674],{"name":654,"url":672},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRegression_testing",{"name":33,"url":34},{"name":675,"url":676},"Feature toggle","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[678,681,684,687,690,693,696],{"title":679,"url":680},"Claude API docs: Model deprecations","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fmodel-deprecations",{"title":682,"url":683},"OpenAI API docs: Deprecations","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fdeprecations",{"title":685,"url":686},"Gemini API docs: Models and version name patterns","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fmodels",{"title":688,"url":689},"Claude API docs: Claude Opus 5.5 migration guide","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fmodels\u002Fopus-5-5\u002Fmigration-guide",{"title":691,"url":692},"Chen, Zaharia, Zou: How is ChatGPT's behavior changing over time? (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.09009",{"title":694,"url":695},"Sclar et al.: Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.11324",{"title":623,"url":624},"\u002Fimages\u002Fblog\u002Fllm-model-migration-regression-testing\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-model-migration-regression-testing\u002Fog.jpg",[58,59,60],"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.",{"slug":704,"published":5,"minutes":705,"category":7,"tags":706,"keywords":712,"about":723,"sources":731,"cover":744,"og":745,"expertise":56,"locales":746,"lang":60,"title":747,"description":748,"coverAlt":749},"semantic-caching-llm-responses",6,[707,708,709,710,711],"Semantic cache","LLM cost","Latency","Embeddings","Redis",[713,714,715,716,717,718,719,720,721,722],"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",[724,727,730],{"name":725,"url":726},"Cache (computing)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCache_(computing)",{"name":728,"url":729},"Sentence embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSentence_embedding",{"name":33,"url":34},[732,735,738,741],{"title":733,"url":734},"Regmi and Pun: GPT Semantic Cache: Reducing LLM Costs and Latency via Semantic Embedding Caching (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2411.05276",{"title":736,"url":737},"Zilliz: GPTCache README (modules, similarity evaluation, eviction)","https:\u002F\u002Fgithub.com\u002Fzilliztech\u002FGPTCache",{"title":739,"url":740},"Claude Platform Docs: Prompt caching","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fprompt-caching",{"title":742,"url":743},"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",[58,59,60],"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":751,"published":752,"minutes":651,"category":7,"tags":753,"keywords":758,"about":767,"sources":777,"cover":847,"og":848,"expertise":56,"locales":849,"lang":60,"title":850,"description":851,"coverAlt":852},"self-hosted-llm-gdpr-cost","2026-10-09",[754,755,520,756,757],"Self-hosting","GDPR","GPU cost","Open-weight models",[759,760,761,762,763,764,765,766],"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",[768,771,772,775],{"name":769,"url":770},"General Data Protection Regulation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",{"name":33,"url":34},{"name":773,"url":774},"Graphics processing unit","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphics_processing_unit",{"name":520,"url":776},"https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm",[778,781,784,787,790,793,796,799,802,805,808,811,814,817,820,823,826,829,832,835,838,841,844],{"title":779,"url":780},"openai\u002Fgpt-oss-120b model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fopenai\u002Fgpt-oss-120b",{"title":782,"url":783},"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":785,"url":786},"meta-llama\u002FLlama-3.3-70B-Instruct model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmeta-llama\u002FLlama-3.3-70B-Instruct",{"title":788,"url":789},"mistralai\u002FMistral-Large-3-675B-Instruct-2512 model card (Hugging Face)","https:\u002F\u002Fhuggingface.co\u002Fmistralai\u002FMistral-Large-3-675B-Instruct-2512",{"title":791,"url":792},"vLLM blog: v0.6.0 performance update (September 2024)","https:\u002F\u002Fblog.vllm.ai\u002F2024\u002F09\u002F05\u002Fperf-update.html",{"title":794,"url":795},"vLLM documentation: engine arguments","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fconfiguration\u002Fengine_args.html",{"title":797,"url":798},"vLLM documentation: vllm bench serve","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fcli\u002Fbench\u002Fserve.html",{"title":800,"url":801},"SemiAnalysis InferenceX: Llama 3.3 70B on H100 vs H200","https:\u002F\u002Finferencex.semianalysis.com\u002Fcompare\u002Fllama-3-3-70b-h100-vs-h200",{"title":803,"url":804},"Scaleway GPU instances pricing","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fpricing\u002Fgpu\u002F",{"title":806,"url":807},"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":809,"url":810},"Scaleway Generative APIs pricing","https:\u002F\u002Fwww.scaleway.com\u002Fen\u002Fpricing\u002Fmodel-as-a-service\u002F",{"title":812,"url":813},"OVHcloud public cloud price list","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fprices\u002F",{"title":815,"url":816},"OVHcloud AI Endpoints","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fai-endpoints\u002F",{"title":818,"url":819},"OVHcloud AI Endpoints model catalogue","https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpublic-cloud\u002Fai-endpoints\u002Fcatalog\u002F",{"title":821,"url":822},"Hetzner dedicated GPU servers","https:\u002F\u002Fwww.hetzner.com\u002Fdedicated-rootserver\u002Fmatrix-gpu\u002F",{"title":824,"url":825},"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":827,"url":828},"NVIDIA GeForce RTX 5090","https:\u002F\u002Fwww.nvidia.com\u002Fen-us\u002Fgeforce\u002Fgraphics-cards\u002F50-series\u002Frtx-5090\u002F",{"title":830,"url":831},"NVIDIA GeForce software licence","https:\u002F\u002Fwww.nvidia.com\u002Fen-us\u002Fdrivers\u002Fgeforce-license\u002F",{"title":833,"url":834},"GDPR Article 28: processor","https:\u002F\u002Fgdpr-info.eu\u002Fart-28-gdpr\u002F",{"title":836,"url":837},"GDPR Article 44: general principle for transfers","https:\u002F\u002Fgdpr-info.eu\u002Fart-44-gdpr\u002F",{"title":839,"url":840},"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":842,"url":843},"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":845,"url":846},"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",[58,59,60],"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.",1792177150671]